US7538574B1 - Transparent field reconfiguration for programmable logic devices - Google Patents

Transparent field reconfiguration for programmable logic devices Download PDF

Info

Publication number
US7538574B1
US7538574B1 US11/293,941 US29394105A US7538574B1 US 7538574 B1 US7538574 B1 US 7538574B1 US 29394105 A US29394105 A US 29394105A US 7538574 B1 US7538574 B1 US 7538574B1
Authority
US
United States
Prior art keywords
programmable logic
logic device
input
output
blocks
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.)
Active, expires
Application number
US11/293,941
Inventor
Howard Tang
Jack T. Wong
Clark Wilkinson
Jeffrey S. Byrne
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.)
Lattice Semiconductor Corp
Original Assignee
Lattice Semiconductor 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 Lattice Semiconductor Corp filed Critical Lattice Semiconductor Corp
Priority to US11/293,941 priority Critical patent/US7538574B1/en
Assigned to LATTICE SEMICONDUCTOR CORPORATION reassignment LATTICE SEMICONDUCTOR CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TANG, HOWARD, WILKINSON, CLARK, WONG, JACK T., BYRNE, JEFFREY S.
Priority to US12/467,800 priority patent/US7737723B1/en
Application granted granted Critical
Publication of US7538574B1 publication Critical patent/US7538574B1/en
Assigned to JEFFERIES FINANCE LLC reassignment JEFFERIES FINANCE LLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DVDO, INC., LATTICE SEMICONDUCTOR CORPORATION, SIBEAM, INC., SILICON IMAGE, INC.
Assigned to LATTICE SEMICONDUCTOR CORPORATION, SILICON IMAGE, INC., DVDO, INC., SIBEAM, INC. reassignment LATTICE SEMICONDUCTOR CORPORATION RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: JEFFERIES FINANCE LLC
Assigned to WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT reassignment WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LATTICE SEMICONDUCTOR CORPORATION
Active legal-status Critical Current
Adjusted expiration legal-status Critical

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
    • H03K19/1776Structural details of configuration resources for memories

Definitions

  • the present invention relates generally to electrical circuits and, more particularly, to reconfiguration of programmable logic devices.
  • a programmable logic device such as field programmable gate array (FPGA) or a complex programmable logic device (CPLD), may be used in a variety of applications.
  • FPGA field programmable gate array
  • CPLD complex programmable logic device
  • a programmable logic device (PLD) offers the advantage of being reprogrammable in the field (e.g., while on the circuit board in its operational environment).
  • a drawback of a conventional PLD is that, while being programmed (which may take seconds to load an external configuration bitstream), the PLD enters a sleep state, with its input and output pins typically disabled (e.g., non-responsive to input signals while providing indeterminate output signals). If the PLD is in a critical path or is used to control critical functions, these drawbacks may be unacceptable. Furthermore, glitches on the output signals provided by the PLD during programming or after reconfiguration generally would be unacceptable while the PLD is controlling critical functions. As a result, there is a need for improved programming and configuration techniques for PLDs.
  • a programmable logic device includes a plurality of input/output blocks having boundary scan cells, wherein the boundary scan cells are adapted to precondition registers within a logic area of the programmable logic device with desired signal values prior to release of control of the input/output blocks to user-defined logic provided by a reconfiguration; a plurality of logic blocks; configuration memory cells adapted to store first configuration data for configuration of the logic blocks and the input/output blocks of the programmable logic device; non-volatile memory adapted to store second configuration data and transfer the second configuration data to the configuration memory cells for the reconfiguration of the programmable logic device; and at least a first data port adapted to receive commands for controlling the reconfiguration of the programmable logic device.
  • a programmable logic device includes means for receiving commands for controlling reconfiguration of the programmable logic device; a plurality of input/output blocks and corresponding input/output pins; means for capturing current output states of the input/output blocks and providing as output signals via the input/output pins during the reconfiguration at least one of the current output states and desired output states, wherein the capturing and providing means further provides an input path to the programmable logic device via the input/output pins during the reconfiguration and prior to releasing control of the input/output blocks to user-defined logic; a plurality of logic blocks; and means for storing configuration data for configuration of the logic blocks and the input/output blocks of the programmable logic device.
  • a method for performing a reconfiguration of a programmable logic device includes capturing current output signal values of the programmable logic device; reconfiguring the programmable logic device while providing from the programmable logic device at least one of the captured output signal values and desired output signal values; and providing input data to the programmable logic device after the reconfiguring to precondition registers with the input data prior to releasing control to logic provided by the reconfiguring.
  • a programmable logic device includes a plurality of input/output blocks; a plurality of logic blocks; configuration memory cells adapted to store first configuration data for a configuration of the logic blocks and the input/output blocks of the programmable logic device; non-volatile memory adapted to store second configuration data and transfer the second configuration data to the configuration memory cells for a reconfiguration of the programmable logic device; at least a first data port adapted to receive commands for reconfiguring the programmable logic device by transferring the second configuration data from the non-volatile memory to the volatile memory; and boundary scan cells within the input/output blocks configured to hold one or more of the I/O pins of the programmable logic device in a known logic state during transfer of the second configuration data from the non-volatile memory to the configuration memory cells.
  • a method for reconfiguring a programmable logic device includes capturing current output signal values of the programmable logic device; reconfiguring the programmable logic device while providing from the programmable logic device at least one of the captured output signal values; and preconditioning registers within logic blocks of the programmable logic device with desired signal values prior to releasing control to user-defined logic provided by the reconfiguring.
  • a method for reconfiguring a programmable logic device includes storing first configuration data within the programmable logic device that configures the programmable logic device; storing second configuration data within the programmable logic device; reconfiguring the programmable logic device with the second configuration data; and maintaining one or more input/output pins of the programmable logic device in a known logic state during the reconfiguring.
  • FIG. 1 shows a block diagram illustrating an exemplary programmable logic device in accordance with an embodiment of the present invention.
  • FIG. 2 shows a block diagram illustrating exemplary implementation details for the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
  • FIG. 3 shows a flowchart illustrating exemplary operations for the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
  • FIG. 4 shows a block diagram illustrating an exemplary circuit implementation for a portion of the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
  • FIG. 5 shows a block diagram illustrating an exemplary circuit implementation for a portion of the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
  • FIGS. 6-8 show block diagrams illustrating exemplary operations associated with a reconfiguration for the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
  • FIG. 1 shows a block diagram illustrating an exemplary programmable logic device (PLD) 100 in accordance with an embodiment of the present invention.
  • PLD 100 includes input/output (I/O) blocks 102 and programmable logic blocks 104 , which are used to provide I/O functionality (e.g., one or more I/O and/or memory interface standards) and logic functionality (e.g., LUT-based logic), respectively, for PLD 100 .
  • PLD 100 may also include one or more non-volatile memory 106 (e.g., EEPROM or flash memory), volatile memory 108 (e.g., block SRAM), and clock-related circuitry 110 (e.g., PLL circuits).
  • non-volatile memory 106 e.g., EEPROM or flash memory
  • volatile memory 108 e.g., block SRAM
  • clock-related circuitry 110 e.g., PLL circuits
  • PLD 100 also includes one or more data ports 112 and/or 114 , which for example may be used for programming PLD 100 (e.g., non-volatile memory 106 and/or configuration memory, as explained further herein).
  • data port 112 may represent a programming port such as a central processing unit (CPU) port, also referred to as a peripheral data port or a sysCONFIG programming port.
  • Data port 114 may represent, for example, a programming port such as a joint test action group (JTAG) port by employing standards such as Institute of Electrical and Electronics Engineers (IEEE) 1149.1 or 1532 standards.
  • JTAG joint test action group
  • Non-volatile memory 106 may be used to store configuration data within PLD 100 for transfer to the configuration memory of PLD 100 upon power up or during reconfiguration of PLD 100 . This may drastically reduce the time to reconfigure PLD 100 relative to an external bitstream (e.g., reduce the time from seconds to microseconds for loading of configuration data into the configuration memory).
  • Non-volatile memory 106 may also be used to provide background programming functionality for PLD 100 .
  • PLD 100 may remain in user mode, based on the configuration data stored in configuration memory within PLD 100 , while non-volatile memory 106 is programmed with new configuration data (e.g., a new user defined pattern). Once the new configuration data is stored in non-volatile memory 106 , this data can be transferred from non-volatile memory 106 to the configuration memory to reconfigure PLD 100 , a process sometimes referred to as refresh.
  • the refresh process can be initiated by a signal or instruction provided to data port 112 or data port 114 (e.g., pulsing data port 112 or providing a JTAG refresh instruction via data port 114 ). Furthermore, as explained further herein in accordance with one or more embodiments of the present invention, full control of the logical values of the output signals provided by PLD 100 during the refresh process can still be provided.
  • FIG. 2 shows a block diagram illustrating a PLD 200 , which provides exemplary implementation details for PLD 100 of FIG. 1 in accordance with an embodiment of the present invention.
  • PLD 200 includes non-volatile memory 106 (e.g., flash memory), configuration memory cells 204 , and control logic 206 .
  • non-volatile memory 106 e.g., flash memory
  • configuration memory cells 204 e.g., configuration memory cells
  • control logic 206 e.g., control logic
  • Configuration memory cells 204 e.g., volatile SRAM cells or other types of memory, such as fuses or anti-fuses
  • Configuration memory cells 204 are used in a conventional manner to store configuration data, which determines the user defined functions of PLD 200 (e.g., determines programmable functions of I/O blocks 102 and logic blocks 104 ).
  • Control logic 206 controls the internal transfer of the configuration data from non-volatile memory 106 to configuration memory cells 204 , as would be understood by one skilled in the art.
  • flash memory represents an exemplary type of memory for non-volatile memory 106 , but other types of non-volatile memory (e.g., EECMOS) that can be reprogrammed once or repeatedly may be substituted for non-volatile memory 106 .
  • non-volatile memory 106 or configuration memory cells 204 may be programmed (i.e., receive and store information in its memory) to store configuration data for PLD 200 , but the device functionality of PLD 200 is determined by the information stored in configuration memory cells 204 .
  • PLD 200 is configured (including reconfiguration or partial reconfiguration) when information is programmed into configuration memory cells 204 .
  • non-volatile memory 106 and configuration memory cells 204 may each be programmed (including reprogrammed) via data port 112 or data port 114 , depending upon the desired application or design requirements. Further details regarding programming may be found in U.S. Pat. No. 6,828,823 and U.S. Patent Publication No. 2005-0189962-A1, published Sep. 1, 2005.
  • FIG. 3 shows a flowchart 300 illustrating exemplary reconfiguration operations for PLD 100 of FIG. 1 in accordance with an embodiment of the present invention.
  • the operations illustrated in flowchart 300 may be controlled by software (e.g., user software) or hardware, as illustrated in an exemplary fashion in FIG. 3 with the corresponding operation flow for the commands and the exemplary software control indicators (user software start).
  • Lattice Semiconductor Corporation's ispVM software is a Windows-based tool set that facilitates the programming of their PLDs.
  • the ispVM Embedded tool generates C code that, when compiled for and executed on a wide range of embedded processors, enables the programming of the PLDs. Consequently, the ispVM software or other conventional PLD programming software can issue the programming commands directly, such as during prototyping, or generate, for example, an industry-standard Serial Vector Format (SVF) file for reconfiguration in the field.
  • SVF Serial Vector Format
  • the SVF file may be used to control the background programming, leave alone operation, refresh process, and the known-state exit operation (e.g., create a delay period for users to apply the vectors to precondition the registers), which are described further herein.
  • background programming is first initiated ( 302 ), while the PLD remains in user mode operation with the current configuration data.
  • background programming of non-volatile memory 106 (flash memory) with the new configuration data is performed as the PLD operates based on current configuration data stored in configuration memory cells 204 .
  • the background programming may be verified prior to initiating the capture of the I/O states (e.g., current I/O values, such as logical high or low, high impedance values, or sampled) at operation 304 .
  • the I/O states may be altered as desired by a user, as explained further herein (e.g., via input paths through the boundary scan cells by manipulating pins via an external device or through JTAG).
  • the I/O states are held at the captured or desired values and the PLD is reconfigured or refreshed ( 308 ) by copying the configuration data from non-volatile memory 106 to configuration memory cells 204 .
  • the reconfiguration may be initiated, for example, by pulsing or toggling data port 112 or providing a JTAG instruction (Refresh) to data port 114 .
  • the refresh process may be verified prior to initiating the release of the I/O to the newly configured user-defined logic (operation 310 ).
  • internal registers within the I/O or other portions of the PLD may be preconditioned with data to prevent glitches from occurring during the transition to user-defined logic control of the I/O (e.g., the data for preconditioning provided via input paths through the boundary scan cells).
  • the JTAG instruction e.g., BYPASS or EXIT_EXTEST
  • the PLD is now configured and operating based upon the new configuration data, with the I/O output signals under control of the newly configured user logic of the PLD.
  • the logic outputs exit in the desired state determined by the inputs to the user control logic.
  • the techniques illustrated may also be referred to herein by the operations of “leave alone I/O” and “known-state exit.”
  • the leave alone I/O operation refers to the ability to program in background mode and, while the PLD is refreshed, hold the state of the I/O output pins in a known logic state (e.g., generally operations 302 through 308 of flowchart 300 ).
  • the known state may be based on the I/O values captured or based on a known system vector that is provided to set the I/O values based on user-predefined settings.
  • the leave alone I/O allows critical signals (e.g., reset and power enable signals provided by the PLD in a system) to not glitch and to not go active (e.g., float or provide undesired values) while the PLD is reconfigured.
  • critical signals e.g., reset and power enable signals provided by the PLD in a system
  • active e.g., float or provide undesired values
  • the known state exit operation refers to the updating of some or all of the internal register states with predefined values (e.g., the optional portion of operation 310 of flowchart 300 ).
  • the values may be provided via I/O pins and input paths through the boundary scan (BSCAN) cells (e.g., as discussed in reference to FIGS. 4 and 5 ).
  • This operation is useful when the PLD logic that provides the value for the I/O pin may be in a state that would cause the I/O pin to pass through a glitch or inappropriate signal level (e.g., glitch or active level).
  • the PLD exits to user-defined operation after reconfiguration in a known logic state.
  • the leave alone operation may be implemented, for example, by using the BSCAN cells within the PLD to capture current I/O pin output states and/or optionally overlay with a custom I/O vector to set desired I/O pin output values.
  • FIGS. 4 and 5 show exemplary block diagram implementations for BSCAN circuits 400 and 500 , respectively, for I/O blocks 102 of PLD 100 of FIG. 1 in accordance with an embodiment of the present invention.
  • BSCAN circuit 400 (BSCAN cell) illustrates that one or more BSCAN registers may be used to store the sampled I/O value to provide as an output signal via an I/O pin (e.g., using the JTAG instruction SAMPLE provided via data port 114 to place output states in BSCAN cell preload registers) and/or overlay a custom vector of user-defined values to provide as the output signal via the I/O pin (e.g., using the JTAG instruction PRELOAD). If custom vector values are provided, these can be preloaded into the PLD just prior to the refresh process (e.g., during operation 304 of flowchart 300 ).
  • the I/O control can then be transferred to BSCAN circuit 400 (e.g., by using the JTAG instruction EXTEST), with the dotted path and bold arrow illustrating I/O values provided to the I/O pin based on custom vector values or captured I/O values.
  • BSCAN circuit 500 illustrates another exemplary circuit implementation, in accordance with an embodiment of the present invention, for a BSCAN cell.
  • BSCAN circuit 500 shows an exemplary input path 502 via the I/O pin, where input path 502 is not blocked by BSCAN circuit 500 and is always available as an input path for providing data into the PLD (e.g., before the refresh process to provide desired I/O values or after the refresh process to precondition internal registers with desired values). Consequently, data and other information may be provided via the input path to user logic and/or registers within the PLD (e.g., to provide values for the known-state exit operation).
  • FIG. 5 further provides a table providing various multiplexer control signal values (e.g., for control signals Mode_ 1 , Mode_ 2 , and Mode_ 3 ) for corresponding JTAG instructions.
  • input path 502 is always available through a multiplexer controlled by the Mode_ 2 control signal for the exemplary JTAG instructions, except for the JTAG INTEST instruction.
  • Further additional details regarding exemplary BSCAN circuits and operation may be found, for example, in U.S. Pat. Nos. 6,304,099 and 6,356,107.
  • FIGS. 6-8 show block diagrams illustrating exemplary operations associated with a reconfiguration for PLD 100 of FIG. 1 in accordance with an embodiment of the present invention. Specifically, FIGS. 6-8 show an exemplary BSCAN circuit 602 (e.g., similar to BSCAN circuit 500 ) and a portion of a user programmable logic area 604 of PLD 100 .
  • BSCAN circuit 602 e.g., similar to BSCAN circuit 500
  • FIG. 6 shows PLD 100 operating in a user mode of operation prior to the refresh operation.
  • the logical states stored in BSCAN circuit 602 may be unknown (or don't care state as indicated by the question mark) and a user register 606 within logic area 604 may store a logical high value (i.e., a “1”), which user register 606 provides to an I/O pin 608 , as shown by the dotted path.
  • some fuses e.g., configuration memory cells 204
  • others may not be programmed within logic area 604 , as shown.
  • FIG. 7 shows PLD 100 during the refresh process.
  • BSCAN circuit 602 has captured and maintained the logical high value on I/O pin 608 (as shown by the exemplary dotted path), while logic area 604 is being programmed.
  • the fuses within logic area 604 are at some point in an un-programmed state. For example, if the fuse is for a connection, then an un-programmed fuse means no connection.
  • user register 606 in logic area 604 may not be accessible and may store an unknown value, as shown in FIG. 7 .
  • a clock signal provided to user register 606 via a clock pin (CLK) may not be externally held low to maintain the logical high value in user register 606 during the refresh operation.
  • the fuse connecting the reset (R) terminal of user register 606 to a global reset signal is programmed, the logical high value stored in user register 606 may be reset to a logical low value when the global reset signal is asserted during the refresh operation.
  • the global reset signal is hardwired to the reset terminal of user register 606 and the global reset signal is asserted during the refresh process, then user register 606 will store a logical low value rather than the desired logical high value. Consequently, the known-state exit operation would be required to restore the logical high value in user register 606 and avoid output signal glitches when releasing control of the I/O pin to the new user-defined logic.
  • FIG. 8 shows PLD 100 after the refresh process and with a known-state exit.
  • User register 606 within logic area 604 has been preconditioned (i.e., preloaded) with a desired logical high value, as shown by the dotted input path, so that the logical high value on I/O pin 608 is maintained glitch-free when user mode of operation resumes.
  • the appropriate fuses within logic area 604 have been programmed by the refresh process to provide the proper connections to access user register 606 within logic area 604 . Consequently, before transitioning to the user mode of operation and releasing control of I/O pin 608 to the user-defined logic, the appropriate value may be provided via BSCAN circuit 602 to user register 606 within logic area 604 .
  • User register 606 provides the appropriate value to I/O pin 608 when the user mode of operation resumes.
  • Systems and methods are disclosed herein to provide reconfiguration techniques for PLDs.
  • techniques are disclosed to provide transparent field reconfiguration such that the PLD can be reconfigured without interrupting system operation (e.g., to provide dynamic programming of programmable devices with embedded volatile fuses (e.g., configuration SRAM) and embedded non-volatile fuses (e.g., flash memory) for a minimally disruptive reconfiguration solution for the PLD).
  • embedded volatile fuses e.g., configuration SRAM
  • embedded non-volatile fuses e.g., flash memory
  • the PLD In general, many system designs, within which the PLD operates, require 99.999% up-time. For example, by using background programming, the PLD continues to operate while the external bitstream is loaded into non-volatile memory. Furthermore, by driving glitch-free known values as output signals via the I/O circuits, the PLD can provide valuable functionality to the system in which it operates, such as to continue to provide power enable, reset, or other critical signals (e.g., which may be used to bring up the system) while the PLD is reconfigured (e.g., in an on-the-fly reconfiguration procedure).
  • critical signals e.g., which may be used to bring up the system

Abstract

In accordance with an embodiment of the present invention, a programmable logic device (PLD, such as a field programmable gate array (FPGA)) includes a plurality of input/output blocks having boundary scan cells that are adapted to precondition registers within a logic area of the programmable logic device with desired signal values prior to release of control of the input/output blocks to user-defined logic provided by a reconfiguration.

Description

TECHNICAL FIELD
The present invention relates generally to electrical circuits and, more particularly, to reconfiguration of programmable logic devices.
BACKGROUND
A programmable logic device, such as field programmable gate array (FPGA) or a complex programmable logic device (CPLD), may be used in a variety of applications. A programmable logic device (PLD) offers the advantage of being reprogrammable in the field (e.g., while on the circuit board in its operational environment).
A drawback of a conventional PLD is that, while being programmed (which may take seconds to load an external configuration bitstream), the PLD enters a sleep state, with its input and output pins typically disabled (e.g., non-responsive to input signals while providing indeterminate output signals). If the PLD is in a critical path or is used to control critical functions, these drawbacks may be unacceptable. Furthermore, glitches on the output signals provided by the PLD during programming or after reconfiguration generally would be unacceptable while the PLD is controlling critical functions. As a result, there is a need for improved programming and configuration techniques for PLDs.
SUMMARY
In accordance with one embodiment of the present invention, a programmable logic device includes a plurality of input/output blocks having boundary scan cells, wherein the boundary scan cells are adapted to precondition registers within a logic area of the programmable logic device with desired signal values prior to release of control of the input/output blocks to user-defined logic provided by a reconfiguration; a plurality of logic blocks; configuration memory cells adapted to store first configuration data for configuration of the logic blocks and the input/output blocks of the programmable logic device; non-volatile memory adapted to store second configuration data and transfer the second configuration data to the configuration memory cells for the reconfiguration of the programmable logic device; and at least a first data port adapted to receive commands for controlling the reconfiguration of the programmable logic device.
In accordance with another embodiment of the present invention, a programmable logic device includes means for receiving commands for controlling reconfiguration of the programmable logic device; a plurality of input/output blocks and corresponding input/output pins; means for capturing current output states of the input/output blocks and providing as output signals via the input/output pins during the reconfiguration at least one of the current output states and desired output states, wherein the capturing and providing means further provides an input path to the programmable logic device via the input/output pins during the reconfiguration and prior to releasing control of the input/output blocks to user-defined logic; a plurality of logic blocks; and means for storing configuration data for configuration of the logic blocks and the input/output blocks of the programmable logic device.
In accordance with another embodiment of the present invention, a method for performing a reconfiguration of a programmable logic device includes capturing current output signal values of the programmable logic device; reconfiguring the programmable logic device while providing from the programmable logic device at least one of the captured output signal values and desired output signal values; and providing input data to the programmable logic device after the reconfiguring to precondition registers with the input data prior to releasing control to logic provided by the reconfiguring.
In accordance with another embodiment of the present invention, a programmable logic device includes a plurality of input/output blocks; a plurality of logic blocks; configuration memory cells adapted to store first configuration data for a configuration of the logic blocks and the input/output blocks of the programmable logic device; non-volatile memory adapted to store second configuration data and transfer the second configuration data to the configuration memory cells for a reconfiguration of the programmable logic device; at least a first data port adapted to receive commands for reconfiguring the programmable logic device by transferring the second configuration data from the non-volatile memory to the volatile memory; and boundary scan cells within the input/output blocks configured to hold one or more of the I/O pins of the programmable logic device in a known logic state during transfer of the second configuration data from the non-volatile memory to the configuration memory cells.
In accordance with another embodiment of the present invention, a method for reconfiguring a programmable logic device includes capturing current output signal values of the programmable logic device; reconfiguring the programmable logic device while providing from the programmable logic device at least one of the captured output signal values; and preconditioning registers within logic blocks of the programmable logic device with desired signal values prior to releasing control to user-defined logic provided by the reconfiguring.
In accordance with another embodiment of the present invention, a method for reconfiguring a programmable logic device includes storing first configuration data within the programmable logic device that configures the programmable logic device; storing second configuration data within the programmable logic device; reconfiguring the programmable logic device with the second configuration data; and maintaining one or more input/output pins of the programmable logic device in a known logic state during the reconfiguring.
The scope of the invention is defined by the claims, which are incorporated into this section by reference. A more complete understanding of embodiments of the present invention will be afforded to those skilled in the art, as well as a realization of additional advantages thereof, by a consideration of the following detailed description of one or more embodiments. Reference will be made to the appended sheets of drawings that will first be described briefly.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 shows a block diagram illustrating an exemplary programmable logic device in accordance with an embodiment of the present invention.
FIG. 2 shows a block diagram illustrating exemplary implementation details for the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
FIG. 3 shows a flowchart illustrating exemplary operations for the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
FIG. 4 shows a block diagram illustrating an exemplary circuit implementation for a portion of the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
FIG. 5 shows a block diagram illustrating an exemplary circuit implementation for a portion of the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
FIGS. 6-8 show block diagrams illustrating exemplary operations associated with a reconfiguration for the programmable logic device of FIG. 1 in accordance with an embodiment of the present invention.
Embodiments of the present invention and their advantages are best understood by referring to the detailed description that follows. It should be appreciated that like reference numerals are used to identify like elements illustrated in one or more of the figures.
DETAILED DESCRIPTION
FIG. 1 shows a block diagram illustrating an exemplary programmable logic device (PLD) 100 in accordance with an embodiment of the present invention. PLD 100 includes input/output (I/O) blocks 102 and programmable logic blocks 104, which are used to provide I/O functionality (e.g., one or more I/O and/or memory interface standards) and logic functionality (e.g., LUT-based logic), respectively, for PLD 100. PLD 100 may also include one or more non-volatile memory 106 (e.g., EEPROM or flash memory), volatile memory 108 (e.g., block SRAM), and clock-related circuitry 110 (e.g., PLL circuits).
PLD 100 also includes one or more data ports 112 and/or 114, which for example may be used for programming PLD 100 (e.g., non-volatile memory 106 and/or configuration memory, as explained further herein). For example, data port 112 may represent a programming port such as a central processing unit (CPU) port, also referred to as a peripheral data port or a sysCONFIG programming port. Data port 114 may represent, for example, a programming port such as a joint test action group (JTAG) port by employing standards such as Institute of Electrical and Electronics Engineers (IEEE) 1149.1 or 1532 standards.
Non-volatile memory 106, if present, may be used to store configuration data within PLD 100 for transfer to the configuration memory of PLD 100 upon power up or during reconfiguration of PLD 100. This may drastically reduce the time to reconfigure PLD 100 relative to an external bitstream (e.g., reduce the time from seconds to microseconds for loading of configuration data into the configuration memory).
Non-volatile memory 106 may also be used to provide background programming functionality for PLD 100. For example for background programming, PLD 100 may remain in user mode, based on the configuration data stored in configuration memory within PLD 100, while non-volatile memory 106 is programmed with new configuration data (e.g., a new user defined pattern). Once the new configuration data is stored in non-volatile memory 106, this data can be transferred from non-volatile memory 106 to the configuration memory to reconfigure PLD 100, a process sometimes referred to as refresh. As explained further herein, the refresh process can be initiated by a signal or instruction provided to data port 112 or data port 114 (e.g., pulsing data port 112 or providing a JTAG refresh instruction via data port 114). Furthermore, as explained further herein in accordance with one or more embodiments of the present invention, full control of the logical values of the output signals provided by PLD 100 during the refresh process can still be provided.
As a specific example, FIG. 2 shows a block diagram illustrating a PLD 200, which provides exemplary implementation details for PLD 100 of FIG. 1 in accordance with an embodiment of the present invention. PLD 200 includes non-volatile memory 106 (e.g., flash memory), configuration memory cells 204, and control logic 206.
Configuration memory cells 204 (e.g., volatile SRAM cells or other types of memory, such as fuses or anti-fuses) are used in a conventional manner to store configuration data, which determines the user defined functions of PLD 200 (e.g., determines programmable functions of I/O blocks 102 and logic blocks 104). Control logic 206 controls the internal transfer of the configuration data from non-volatile memory 106 to configuration memory cells 204, as would be understood by one skilled in the art.
It should be understood that flash memory represents an exemplary type of memory for non-volatile memory 106, but other types of non-volatile memory (e.g., EECMOS) that can be reprogrammed once or repeatedly may be substituted for non-volatile memory 106. Furthermore, either non-volatile memory 106 or configuration memory cells 204 may be programmed (i.e., receive and store information in its memory) to store configuration data for PLD 200, but the device functionality of PLD 200 is determined by the information stored in configuration memory cells 204. Thus, PLD 200 is configured (including reconfiguration or partial reconfiguration) when information is programmed into configuration memory cells 204.
It should also be understood, in accordance with one or more embodiments of the present invention, that non-volatile memory 106 and configuration memory cells 204 may each be programmed (including reprogrammed) via data port 112 or data port 114, depending upon the desired application or design requirements. Further details regarding programming may be found in U.S. Pat. No. 6,828,823 and U.S. Patent Publication No. 2005-0189962-A1, published Sep. 1, 2005.
In general, during programming of configuration memory cells 204 and reconfiguration of the PLD (e.g., PLD 100), it would be advantageous to continue to support system operation functions. However, conventional approaches typically used an external bitstream to provide the configuration data directly to the configuration memory of the PLD, while the PLD's output signals are tri-stated or held to logical high or low values. In contrast, in accordance with one or more embodiments of the present invention, techniques are disclosed herein to use background programming to provide the configuration data to the PLD and, during configuration, provide desired PLD output signals that remain glitch-free during the transition from configuration to user mode of the PLD.
For example, FIG. 3 shows a flowchart 300 illustrating exemplary reconfiguration operations for PLD 100 of FIG. 1 in accordance with an embodiment of the present invention. As discussed further herein, the operations illustrated in flowchart 300 may be controlled by software (e.g., user software) or hardware, as illustrated in an exemplary fashion in FIG. 3 with the corresponding operation flow for the commands and the exemplary software control indicators (user software start).
For example, Lattice Semiconductor Corporation's ispVM software is a Windows-based tool set that facilitates the programming of their PLDs. The ispVM Embedded tool generates C code that, when compiled for and executed on a wide range of embedded processors, enables the programming of the PLDs. Consequently, the ispVM software or other conventional PLD programming software can issue the programming commands directly, such as during prototyping, or generate, for example, an industry-standard Serial Vector Format (SVF) file for reconfiguration in the field. Thus, for example, the SVF file may be used to control the background programming, leave alone operation, refresh process, and the known-state exit operation (e.g., create a delay period for users to apply the vectors to precondition the registers), which are described further herein.
In reference to FIG. 3, background programming is first initiated (302), while the PLD remains in user mode operation with the current configuration data. For example, background programming of non-volatile memory 106 (flash memory) with the new configuration data is performed as the PLD operates based on current configuration data stored in configuration memory cells 204. The background programming may be verified prior to initiating the capture of the I/O states (e.g., current I/O values, such as logical high or low, high impedance values, or sampled) at operation 304. Optionally, the I/O states may be altered as desired by a user, as explained further herein (e.g., via input paths through the boundary scan cells by manipulating pins via an external device or through JTAG).
Using the boundary scan cells at operation 306, the I/O states are held at the captured or desired values and the PLD is reconfigured or refreshed (308) by copying the configuration data from non-volatile memory 106 to configuration memory cells 204. The reconfiguration may be initiated, for example, by pulsing or toggling data port 112 or providing a JTAG instruction (Refresh) to data port 114.
The refresh process may be verified prior to initiating the release of the I/O to the newly configured user-defined logic (operation 310). Optionally, internal registers within the I/O or other portions of the PLD may be preconditioned with data to prevent glitches from occurring during the transition to user-defined logic control of the I/O (e.g., the data for preconditioning provided via input paths through the boundary scan cells). After providing the JTAG instruction (e.g., BYPASS or EXIT_EXTEST), the PLD is now configured and operating based upon the new configuration data, with the I/O output signals under control of the newly configured user logic of the PLD. Furthermore, if the internal registers were preconditioned, the logic outputs exit in the desired state determined by the inputs to the user control logic.
The techniques illustrated may also be referred to herein by the operations of “leave alone I/O” and “known-state exit.” The leave alone I/O operation refers to the ability to program in background mode and, while the PLD is refreshed, hold the state of the I/O output pins in a known logic state (e.g., generally operations 302 through 308 of flowchart 300). The known state may be based on the I/O values captured or based on a known system vector that is provided to set the I/O values based on user-predefined settings. Thus, the leave alone I/O allows critical signals (e.g., reset and power enable signals provided by the PLD in a system) to not glitch and to not go active (e.g., float or provide undesired values) while the PLD is reconfigured.
The known state exit operation refers to the updating of some or all of the internal register states with predefined values (e.g., the optional portion of operation 310 of flowchart 300). The values may be provided via I/O pins and input paths through the boundary scan (BSCAN) cells (e.g., as discussed in reference to FIGS. 4 and 5). This operation is useful when the PLD logic that provides the value for the I/O pin may be in a state that would cause the I/O pin to pass through a glitch or inappropriate signal level (e.g., glitch or active level). Thus, the PLD exits to user-defined operation after reconfiguration in a known logic state.
The leave alone operation may be implemented, for example, by using the BSCAN cells within the PLD to capture current I/O pin output states and/or optionally overlay with a custom I/O vector to set desired I/O pin output values. For example, FIGS. 4 and 5 show exemplary block diagram implementations for BSCAN circuits 400 and 500, respectively, for I/O blocks 102 of PLD 100 of FIG. 1 in accordance with an embodiment of the present invention.
BSCAN circuit 400 (BSCAN cell) illustrates that one or more BSCAN registers may be used to store the sampled I/O value to provide as an output signal via an I/O pin (e.g., using the JTAG instruction SAMPLE provided via data port 114 to place output states in BSCAN cell preload registers) and/or overlay a custom vector of user-defined values to provide as the output signal via the I/O pin (e.g., using the JTAG instruction PRELOAD). If custom vector values are provided, these can be preloaded into the PLD just prior to the refresh process (e.g., during operation 304 of flowchart 300). The I/O control can then be transferred to BSCAN circuit 400 (e.g., by using the JTAG instruction EXTEST), with the dotted path and bold arrow illustrating I/O values provided to the I/O pin based on custom vector values or captured I/O values.
BSCAN circuit 500 illustrates another exemplary circuit implementation, in accordance with an embodiment of the present invention, for a BSCAN cell. As an example, BSCAN circuit 500 shows an exemplary input path 502 via the I/O pin, where input path 502 is not blocked by BSCAN circuit 500 and is always available as an input path for providing data into the PLD (e.g., before the refresh process to provide desired I/O values or after the refresh process to precondition internal registers with desired values). Consequently, data and other information may be provided via the input path to user logic and/or registers within the PLD (e.g., to provide values for the known-state exit operation).
FIG. 5 further provides a table providing various multiplexer control signal values (e.g., for control signals Mode_1, Mode_2, and Mode_3) for corresponding JTAG instructions. Note, for example, that input path 502 is always available through a multiplexer controlled by the Mode_2 control signal for the exemplary JTAG instructions, except for the JTAG INTEST instruction. Further additional details regarding exemplary BSCAN circuits and operation may be found, for example, in U.S. Pat. Nos. 6,304,099 and 6,356,107.
FIGS. 6-8 show block diagrams illustrating exemplary operations associated with a reconfiguration for PLD 100 of FIG. 1 in accordance with an embodiment of the present invention. Specifically, FIGS. 6-8 show an exemplary BSCAN circuit 602 (e.g., similar to BSCAN circuit 500) and a portion of a user programmable logic area 604 of PLD 100.
For example, FIG. 6 shows PLD 100 operating in a user mode of operation prior to the refresh operation. The logical states stored in BSCAN circuit 602 may be unknown (or don't care state as indicated by the question mark) and a user register 606 within logic area 604 may store a logical high value (i.e., a “1”), which user register 606 provides to an I/O pin 608, as shown by the dotted path. It should also be noted that some fuses (e.g., configuration memory cells 204) may be programmed and others may not be programmed within logic area 604, as shown.
FIG. 7 shows PLD 100 during the refresh process. For this example, BSCAN circuit 602 has captured and maintained the logical high value on I/O pin 608 (as shown by the exemplary dotted path), while logic area 604 is being programmed. Thus, during the refresh operation, the fuses within logic area 604 are at some point in an un-programmed state. For example, if the fuse is for a connection, then an un-programmed fuse means no connection.
Furthermore, user register 606 in logic area 604 may not be accessible and may store an unknown value, as shown in FIG. 7. For example, a clock signal provided to user register 606 via a clock pin (CLK) may not be externally held low to maintain the logical high value in user register 606 during the refresh operation. As another example, if the fuse connecting the reset (R) terminal of user register 606 to a global reset signal is programmed, the logical high value stored in user register 606 may be reset to a logical low value when the global reset signal is asserted during the refresh operation.
Alternatively as an example, if the global reset signal is hardwired to the reset terminal of user register 606 and the global reset signal is asserted during the refresh process, then user register 606 will store a logical low value rather than the desired logical high value. Consequently, the known-state exit operation would be required to restore the logical high value in user register 606 and avoid output signal glitches when releasing control of the I/O pin to the new user-defined logic.
FIG. 8 shows PLD 100 after the refresh process and with a known-state exit. User register 606 within logic area 604 has been preconditioned (i.e., preloaded) with a desired logical high value, as shown by the dotted input path, so that the logical high value on I/O pin 608 is maintained glitch-free when user mode of operation resumes. This is possible because the appropriate fuses within logic area 604 have been programmed by the refresh process to provide the proper connections to access user register 606 within logic area 604. Consequently, before transitioning to the user mode of operation and releasing control of I/O pin 608 to the user-defined logic, the appropriate value may be provided via BSCAN circuit 602 to user register 606 within logic area 604. User register 606, in turn, provides the appropriate value to I/O pin 608 when the user mode of operation resumes.
Systems and methods are disclosed herein to provide reconfiguration techniques for PLDs. For example, in accordance with an embodiment of the present invention, techniques are disclosed to provide transparent field reconfiguration such that the PLD can be reconfigured without interrupting system operation (e.g., to provide dynamic programming of programmable devices with embedded volatile fuses (e.g., configuration SRAM) and embedded non-volatile fuses (e.g., flash memory) for a minimally disruptive reconfiguration solution for the PLD).
In general, many system designs, within which the PLD operates, require 99.999% up-time. For example, by using background programming, the PLD continues to operate while the external bitstream is loaded into non-volatile memory. Furthermore, by driving glitch-free known values as output signals via the I/O circuits, the PLD can provide valuable functionality to the system in which it operates, such as to continue to provide power enable, reset, or other critical signals (e.g., which may be used to bring up the system) while the PLD is reconfigured (e.g., in an on-the-fly reconfiguration procedure). Thus, techniques are disclosed herein to control the state of the logic within the PLD prior to exiting the configuration process, which allows the device logic to drive the correct levels on its outputs immediately, when control of I/O is passed back to the PLD logic at the end of the configuration cycle.
Embodiments described above illustrate but do not limit the invention. It should also be understood that numerous modifications and variations are possible in accordance with the principles of the present invention. Accordingly, the scope of the invention is defined only by the following claims.

Claims (30)

1. A programmable logic device comprising:
a plurality of input/output blocks having boundary scan cells, wherein the boundary scan cells are adapted to precondition registers within a logic area of the programmable logic device with desired signal values prior to release of control of the input/output blocks to user-defined logic provided by a reconfiguration;
a plurality of logic blocks;
configuration memory cells adapted to store first configuration data for configuration of the logic blocks and the input/output blocks of the programmable logic device;
non-volatile memory adapted to store second configuration data and transfer the second configuration data to the configuration memory cells for the reconfiguration of the programmable logic device; and
at least a first data port adapted to receive commands for controlling the reconfiguration of the programmable logic device.
2. The programmable logic device of claim 1, further comprising input/output pins associated with the plurality of input/output blocks, wherein at least one of the boundary scan cells provides an input path after the reconfiguration from at least one of the input/output pins to at least one of the registers to precondition with one of the desired signal values.
3. The programmable logic device of claim 1, wherein the plurality of logic blocks are within the logic area.
4. The programmable logic device of claim 1, wherein the boundary scan cells are adapted to capture current output values of the corresponding input/output blocks or receive values provided to the programmable logic device and provide the captured or received values as output signals from the programmable logic device during the reconfiguration of the programmable logic device.
5. The programmable logic device of claim 1, further comprising a plurality of input/output pins corresponding to the plurality of input/output blocks, wherein the boundary scan cells are adapted to provide input paths to the registers after the reconfiguration and prior to release of control of the input/output blocks to the user-defined logic provided by the reconfiguration.
6. The programmable logic device of claim 1, wherein the preconditioned registers comprise a portion of corresponding ones of the logic blocks, with the preconditioned registers preventing glitches from being provided by the input/output blocks after the reconfiguration.
7. The programmable logic device of claim 1, further comprising control logic adapted to control the transfer of the second configuration data from the non-volatile memory to the configuration memory.
8. The programmable logic device of claim 1, wherein the first configuration data is the same as the second configuration data.
9. The programmable logic device of claim 1, wherein the second configuration data is provided to the non-volatile memory during a background programming operation.
10. The programmable logic device of claim 1, wherein the at least first data port comprises at least one of a CPU port and a JTAG port.
11. The programmable logic device of claim 1, wherein the at least first data pot comprises a JTAG port adapted to receive commands for a leave alone operation and a known state exit operation for the programmable logic device.
12. The programmable logic device of claim 1, wherein a serial vector format file is used to provide the commands for controlling reconfiguration of the programmable logic device.
13. A programmable logic device comprising:
means for receiving commands for controlling reconfiguration of the programmable logic device;
a plurality of input/output blocks and corresponding input/output pins;
means for capturing current output states of the input/output blocks and providing as output signals via the input/output pins during the reconfiguration at least one of the current output states and desired output states, wherein the capturing and providing means further provides an input path to the programmable logic device via the input/output pins during the reconfiguration and prior to releasing control of the input/output blocks to user-defined logic;
a plurality of logic blocks; and
means for storing configuration data for configuration of the logic blocks and the input/output blocks of the programmable logic device.
14. The programmable logic device of claim 13, further comprising means for storing second configuration data and transferring to the configuration data storing means during the reconfiguration.
15. The programmable logic device of claim 14, wherein the second configuration data is provided to the second configuration data storing means during a background programming operation.
16. The programmable logic device of claim 13, wherein input data is provided via the input path and corresponding ones of the input/output pins after the reconfiguration to precondition registers prior to releasing control of the input/output blocks.
17. The programmable logic device of claim 16, wherein the preconditioned registers prevent glitches from being provided by the input/output blocks after the reconfiguration.
18. The programmable logic device of claim 13, wherein the receiving means is adapted to receive commands for a leave alone operation and a known state exit operation for the programmable logic device.
19. A method for performing a reconfiguration of a programmable logic device, the method comprising:
capturing current output signal values of the programmable logic device;
reconfiguring the programmable logic device while providing from the programmable logic device at least one of the captured output signal values and desired output signal values; and
providing input data to the programmable logic device after the reconfiguring to precondition registers with the input data prior to releasing control to logic provided by the reconfiguring.
20. The method of claim 19, wherein the desired output signal values were received by the programmable logic device prior to the reconfiguring.
21. The method of claim 19, further comprising performing a background programming operation of the programmable logic device prior to the reconfiguring.
22. The method of claim 19, further comprising controlling the reconfiguration based on a serial vector format file.
23. The method of claim 19, further comprising receiving commands to control the capturing and the reconfiguring.
24. A programmable logic device comprising:
a plurality of input/output blocks;
a plurality of logic blocks;
configuration memory cells adapted to store first configuration data for a configuration of the logic blocks and the input/output blocks of the programmable logic device;
non-volatile memory adapted to store second configuration data and transfer the second configuration data to the configuration memory cells for a reconfiguration of the programmable logic device;
at least a first data port adapted to receive commands for reconfiguring the programmable logic device by transferring the second configuration data from the non-volatile memory to the volatile memory; and
boundary scan cells within the input/output blocks configured to hold one or more of the I/O pins of the programmable logic device in a known logic state during transfer of the second configuration data from the non-volatile memory to the configuration memory cells.
25. The programmable logic device of claim 24, wherein the configuration memory cells are volatile.
26. The programmable logic device of claim 24, wherein the boundary scan cells are adapted to precondition registers within the logic blocks with desired signal values prior to release of control of the input/output blocks to user-defined logic provided by the reconfiguration.
27. A method for reconfiguring a programmable logic device, the method comprising:
capturing current output signal values of the programmable logic device,
reconfiguring the programmable logic device while providing from the programmable logic device at least one of the captured output signal values; and
preconditioning registers within logic blocks of the programmable logic device with desired signal values prior to releasing control to user-defined logic provided by the reconfiguring.
28. The method of claim 27, wherein the preconditioning stores in at least one of the registers a logical value identical to the captured output signal value provided from the programmable logic device.
29. A method for reconfiguring a programmable logic device, the method comprising:
storing first configuration data within the programmable logic device that configures the programmable logic device;
storing second configuration data within the programmable logic device in non-volatile memory;
reconfiguring the programmable logic device with the second configuration data; and
maintaining one or more input/output pins of the programmable logic device in a known logic state during the reconfiguring.
30. The method of claim 29, further comprising providing one or more desired signal values to one or more registers within one or more logic blocks of the programmable logic device prior to release of control of the one or more input/output pins to user-defined logic provided by the reconfiguring.
US11/293,941 2005-12-05 2005-12-05 Transparent field reconfiguration for programmable logic devices Active 2027-01-08 US7538574B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/293,941 US7538574B1 (en) 2005-12-05 2005-12-05 Transparent field reconfiguration for programmable logic devices
US12/467,800 US7737723B1 (en) 2005-12-05 2009-05-18 Transparent field reconfiguration for programmable logic devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/293,941 US7538574B1 (en) 2005-12-05 2005-12-05 Transparent field reconfiguration for programmable logic devices

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/467,800 Continuation US7737723B1 (en) 2005-12-05 2009-05-18 Transparent field reconfiguration for programmable logic devices

Publications (1)

Publication Number Publication Date
US7538574B1 true US7538574B1 (en) 2009-05-26

Family

ID=40652102

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/293,941 Active 2027-01-08 US7538574B1 (en) 2005-12-05 2005-12-05 Transparent field reconfiguration for programmable logic devices
US12/467,800 Active US7737723B1 (en) 2005-12-05 2009-05-18 Transparent field reconfiguration for programmable logic devices

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/467,800 Active US7737723B1 (en) 2005-12-05 2009-05-18 Transparent field reconfiguration for programmable logic devices

Country Status (1)

Country Link
US (2) US7538574B1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100023820A1 (en) * 2008-07-24 2010-01-28 International Business Machines Corporation Asynchronous Communication Apparatus Using JTAG Test Data Registers
US20100023821A1 (en) * 2008-07-24 2010-01-28 International Business Machines Corporation Asynchronous Communication Using Standard Boundary Architecture Cells
US7737723B1 (en) 2005-12-05 2010-06-15 Lattice Semiconductor Corporation Transparent field reconfiguration for programmable logic devices
US7941721B2 (en) 2009-08-31 2011-05-10 Freescale Semiconductor, Inc. System and a method for testing connectivity between a first device and a second device
US7957208B1 (en) * 2006-06-02 2011-06-07 Lattice Semiconductor Corporation Flexible memory architectures for programmable logic devices
US8040152B1 (en) * 2010-02-02 2011-10-18 Lattice Semiconductor Corporation Separate configuration of I/O cells and logic core in a programmable logic device

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7698118B2 (en) * 2004-04-15 2010-04-13 Mentor Graphics Corporation Logic design modeling and interconnection
US8595670B1 (en) * 2010-03-08 2013-11-26 Altera Corporation Method and apparatus for circuit block reconfiguration EDA

Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548228A (en) 1994-09-28 1996-08-20 Altera Corporation Reconfigurable programmable logic device having static and non-volatile memory
US5640107A (en) 1995-10-24 1997-06-17 Northrop Grumman Corporation Method for in-circuit programming of a field-programmable gate array configuration memory
US5689516A (en) 1996-06-26 1997-11-18 Xilinx, Inc. Reset circuit for a programmable logic device
US6049222A (en) 1997-12-30 2000-04-11 Xilinx, Inc Configuring an FPGA using embedded memory
US6150837A (en) 1997-02-28 2000-11-21 Actel Corporation Enhanced field programmable gate array
US6208162B1 (en) 1996-04-05 2001-03-27 Altera Corporation Technique for preconditioning I/Os during reconfiguration
US6304099B1 (en) 1998-05-21 2001-10-16 Lattice Semiconductor Corporation Method and structure for dynamic in-system programming
US6459297B1 (en) * 1999-09-20 2002-10-01 Ag Communication Systems Corporation System for programming field programmable devices
US6467009B1 (en) 1998-10-14 2002-10-15 Triscend Corporation Configurable processor system unit
US6538468B1 (en) 2000-07-31 2003-03-25 Cypress Semiconductor Corporation Method and apparatus for multiple boot-up functionalities for a programmable logic device (PLD)
US20030122578A1 (en) * 2001-12-28 2003-07-03 Shoichi Masui Programmable logic device with ferroelectric configuration memories
US6704850B1 (en) 2000-08-23 2004-03-09 Triscend Corporation Method and apparatus for determining the width of a memory subsystem
US6714041B1 (en) 2002-08-30 2004-03-30 Xilinx, Inc. Programming on-the-fly (OTF)
US6721840B1 (en) 2000-08-18 2004-04-13 Triscend Corporation Method and system for interfacing an integrated circuit to synchronous dynamic memory and static memory
US6732263B1 (en) 2000-06-12 2004-05-04 Altera Corporation Configuring both a programmable logic device and its embedded logic with a single serialized configuration bit stream
US6774668B1 (en) 2003-01-08 2004-08-10 Xilinx Inc. Apparatus and method for preinitializing logic function
US6828823B1 (en) 2003-05-16 2004-12-07 Lattice Semiconductor Corporation Non-volatile and reconfigurable programmable logic devices
US6835611B1 (en) 2003-07-24 2004-12-28 National Chiao Tung University Structure of metal oxide semiconductor field effect transistor
US20050189962A1 (en) 2004-02-20 2005-09-01 Agrawal Om P. Upgradeable and reconfigurable programmable logic device
US7218137B2 (en) 2004-04-30 2007-05-15 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration
US7375549B1 (en) * 2006-02-09 2008-05-20 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

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5777489A (en) * 1995-10-13 1998-07-07 Mentor Graphics Corporation Field programmable gate array with integrated debugging facilities
US5844422A (en) 1996-11-13 1998-12-01 Xilinx, Inc. State saving and restoration in reprogrammable FPGAs
US6028449A (en) 1997-08-05 2000-02-22 Lsi Logic Corporation Integrated circuit I/O buffer having pull-up to voltages greater than transistor tolerance
US6324103B2 (en) 1998-11-11 2001-11-27 Hitachi, Ltd. Semiconductor integrated circuit device, memory module, storage device and the method for repairing semiconductor integrated circuit device
US6218858B1 (en) 1999-01-27 2001-04-17 Xilinx, Inc. Programmable input/output circuit for FPGA for use in TTL, GTL, GTLP, LVPECL and LVDS circuits
US6507211B1 (en) 1999-07-29 2003-01-14 Xilinx, Inc. Programmable logic device capable of preserving user data during partial or complete reconfiguration
US6851047B1 (en) 1999-10-15 2005-02-01 Xilinx, Inc. Configuration in a configurable system on a chip
US6624656B1 (en) 1999-10-15 2003-09-23 Triscend Corporation Input/output circuit with user programmable functions
US6573748B1 (en) 2001-11-06 2003-06-03 Xilinx, Inc. Programmable logic device with output register for specifying memory space during reconfiguration
US7111217B1 (en) * 2002-02-28 2006-09-19 Xilinx, Inc. Method and system for flexibly nesting JTAG TAP controllers for FPGA-based system-on-chip (SoC)
US7162644B1 (en) 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US7007203B2 (en) 2002-08-02 2006-02-28 Motorola, Inc. Error checking in a reconfigurable logic signal processor (RLSP)
US7180776B1 (en) 2002-08-30 2007-02-20 Xilinx, Inc. Systems and methods for programming a secured CPLD on-the-fly
US20050083743A1 (en) 2003-09-09 2005-04-21 Integrated Magnetoelectronics Corporation A California Corporation Nonvolatile sequential machines
US7099227B1 (en) 2004-01-16 2006-08-29 Xilinx, Inc. PLD hardwire programming with multiple functional modes
US7095247B1 (en) 2004-03-25 2006-08-22 Lattice Semiconductor Corporation Configuring FPGAs and the like using one or more serial memory devices
US7102555B2 (en) * 2004-04-30 2006-09-05 Xilinx, Inc. Boundary-scan circuit used for analog and digital testing of an integrated circuit
JP2006100991A (en) 2004-09-28 2006-04-13 Matsushita Electric Ind Co Ltd Non-volatile logic circuit and system lsi having the same
US7480843B1 (en) * 2004-09-29 2009-01-20 Xilinx, Inc. Configuration access from a boundary-scannable device
US7199608B1 (en) 2005-02-17 2007-04-03 Xilinx, Inc. Programmable logic device and method of configuration
US7406642B1 (en) * 2005-10-03 2008-07-29 Altera Corporation Techniques for capturing signals at output pins in a programmable logic integrated circuit
US7538574B1 (en) 2005-12-05 2009-05-26 Lattice Semiconductor Corporation Transparent field reconfiguration for programmable logic devices
US7554358B1 (en) 2006-04-05 2009-06-30 Lattice Semiconductor Corporation Programmable logic devices with user non-volatile memory

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696455A (en) 1994-09-28 1997-12-09 Altera Corporation Reconfigurable programmable logic device
US5548228A (en) 1994-09-28 1996-08-20 Altera Corporation Reconfigurable programmable logic device having static and non-volatile memory
US5640107A (en) 1995-10-24 1997-06-17 Northrop Grumman Corporation Method for in-circuit programming of a field-programmable gate array configuration memory
US6208162B1 (en) 1996-04-05 2001-03-27 Altera Corporation Technique for preconditioning I/Os during reconfiguration
US5689516A (en) 1996-06-26 1997-11-18 Xilinx, Inc. Reset circuit for a programmable logic device
US6150837A (en) 1997-02-28 2000-11-21 Actel Corporation Enhanced field programmable gate array
US6049222A (en) 1997-12-30 2000-04-11 Xilinx, Inc Configuring an FPGA using embedded memory
US6304099B1 (en) 1998-05-21 2001-10-16 Lattice Semiconductor Corporation Method and structure for dynamic in-system programming
US6356107B1 (en) 1998-05-21 2002-03-12 Lattice Semiconductor Corporation Method and structure dynamic in-system programming
US6467009B1 (en) 1998-10-14 2002-10-15 Triscend Corporation Configurable processor system unit
US6459297B1 (en) * 1999-09-20 2002-10-01 Ag Communication Systems Corporation System for programming field programmable devices
US6732263B1 (en) 2000-06-12 2004-05-04 Altera Corporation Configuring both a programmable logic device and its embedded logic with a single serialized configuration bit stream
US6538468B1 (en) 2000-07-31 2003-03-25 Cypress Semiconductor Corporation Method and apparatus for multiple boot-up functionalities for a programmable logic device (PLD)
US6721840B1 (en) 2000-08-18 2004-04-13 Triscend Corporation Method and system for interfacing an integrated circuit to synchronous dynamic memory and static memory
US6704850B1 (en) 2000-08-23 2004-03-09 Triscend Corporation Method and apparatus for determining the width of a memory subsystem
US20030122578A1 (en) * 2001-12-28 2003-07-03 Shoichi Masui Programmable logic device with ferroelectric configuration memories
US6714041B1 (en) 2002-08-30 2004-03-30 Xilinx, Inc. Programming on-the-fly (OTF)
US6873177B1 (en) 2002-08-30 2005-03-29 Xilinx, Inc. Systems and methods for programming a secured CPLD on-the-fly
US6774668B1 (en) 2003-01-08 2004-08-10 Xilinx Inc. Apparatus and method for preinitializing logic function
US6828823B1 (en) 2003-05-16 2004-12-07 Lattice Semiconductor Corporation Non-volatile and reconfigurable programmable logic devices
US6835611B1 (en) 2003-07-24 2004-12-28 National Chiao Tung University Structure of metal oxide semiconductor field effect transistor
US20050189962A1 (en) 2004-02-20 2005-09-01 Agrawal Om P. Upgradeable and reconfigurable programmable logic device
US7218137B2 (en) 2004-04-30 2007-05-15 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration
US7375549B1 (en) * 2006-02-09 2008-05-20 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

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
Actel Corporation, "ProASICPLUS Flash Family FPGAs", v.3.4 Dec. 2003, pp. i-iv and 1-1-1-25.
Actel Corporation, "ProASICPLUS Flash Family FPGAs", v.3.4 Dec. 2003, pp. i-iv and I-I-I-64 & 2-1-2.67 & 2-1-2-7 (list of changes).
Lattice Semiconductor Corporation, ispXP(TM) Configuration Usage Guidelines, Technical Notes TN1026, Aug. 2002, pp. 1-18.
Lattice Semiconductor Corporation, ispXPGA(TM) Family, Dec. 2002, pp. 1-90.
Lattice Semiconductor Corporation, ispXPGA(TM) Family, Preliminary Data Sheet, Sep. 2003, pp. 1-112.
Lattice Semiconductor Corporation, ispXPGA(TM) Family, Preliminary Data Sheet, Sep. 2003, pp. 1-21.
Xilinx, On the Fly Reconfiguration with CoolRunner-II CPLDs, Application Note: CoolRunner-II CPLDs, May 15, 2003, pp. 1-10.

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7737723B1 (en) 2005-12-05 2010-06-15 Lattice Semiconductor Corporation Transparent field reconfiguration for programmable logic devices
US7957208B1 (en) * 2006-06-02 2011-06-07 Lattice Semiconductor Corporation Flexible memory architectures for programmable logic devices
US20100023820A1 (en) * 2008-07-24 2010-01-28 International Business Machines Corporation Asynchronous Communication Apparatus Using JTAG Test Data Registers
US20100023821A1 (en) * 2008-07-24 2010-01-28 International Business Machines Corporation Asynchronous Communication Using Standard Boundary Architecture Cells
US7890824B2 (en) 2008-07-24 2011-02-15 International Business Machines Corporation Asynchronous communication apparatus using JTAG test data registers
US7949918B2 (en) * 2008-07-24 2011-05-24 International Business Machines Corporation Asynchronous communication using standard boundary architecture cells
US7941721B2 (en) 2009-08-31 2011-05-10 Freescale Semiconductor, Inc. System and a method for testing connectivity between a first device and a second device
US8040152B1 (en) * 2010-02-02 2011-10-18 Lattice Semiconductor Corporation Separate configuration of I/O cells and logic core in a programmable logic device

Also Published As

Publication number Publication date
US7737723B1 (en) 2010-06-15

Similar Documents

Publication Publication Date Title
US7375549B1 (en) Reconfiguration of programmable logic devices
US7737723B1 (en) Transparent field reconfiguration for programmable logic devices
US6828823B1 (en) Non-volatile and reconfigurable programmable logic devices
EP1008025B1 (en) Configuration control in a programmable logic device using non-volatile elements
US7215139B2 (en) Upgradeable and reconfigurable programmable logic device
US7459931B1 (en) Programmable logic devices with transparent field reconfiguration
EP0884599B1 (en) Programming mode selection with jtag circuits
JP3930053B2 (en) Partial programming circuit in motion programmable logic device.
US7489163B2 (en) FPGA powerup to known functional state
US6937493B2 (en) Programming flash memory via a boundary scan register
US7301836B1 (en) Feature control circuitry for testing integrated circuits
US7304493B2 (en) FPGA powerup to known functional state
US20070024319A1 (en) Configurable logic circuit arangement
US7378873B1 (en) Programmable logic device providing a serial peripheral interface
US8069329B1 (en) Internally triggered reconfiguration of programmable logic devices
US7358762B1 (en) Parallel interface for configuring programmable devices
US7579865B1 (en) Selective loading of configuration data into configuration memory cells
US7570078B1 (en) Programmable logic device providing serial peripheral interfaces
US7075331B2 (en) Methods and systems for providing hardware assisted programming of a programmable logic device in an embedded system
US10963170B2 (en) Retaining memory during partial reconfiguration
US7876125B1 (en) Register data retention systems and methods during reprogramming of programmable logic devices
US8384428B1 (en) Pre-configuration programmability of I/O circuitry
US20030167429A1 (en) Boundary scan with mode control cells
US7868654B1 (en) Reading an external memory device to determine its interface characteristics for configuring a programmable logic device
US7560953B1 (en) Power management systems and methods for programmable logic devices

Legal Events

Date Code Title Description
AS Assignment

Owner name: LATTICE SEMICONDUCTOR CORPORATION, OREGON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TANG, HOWARD;WONG, JACK T.;WILKINSON, CLARK;AND OTHERS;REEL/FRAME:016917/0342;SIGNING DATES FROM 20051202 TO 20051205

FEPP Fee payment procedure

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

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: JEFFERIES FINANCE LLC, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNORS:LATTICE SEMICONDUCTOR CORPORATION;SIBEAM, INC.;SILICON IMAGE, INC.;AND OTHERS;REEL/FRAME:035223/0001

Effective date: 20150310

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: SIBEAM, INC., OREGON

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:049827/0326

Effective date: 20190517

Owner name: LATTICE SEMICONDUCTOR CORPORATION, OREGON

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:049827/0326

Effective date: 20190517

Owner name: DVDO, INC., OREGON

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:049827/0326

Effective date: 20190517

Owner name: SILICON IMAGE, INC., OREGON

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:049827/0326

Effective date: 20190517

Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINIS

Free format text: SECURITY INTEREST;ASSIGNOR:LATTICE SEMICONDUCTOR CORPORATION;REEL/FRAME:049980/0786

Effective date: 20190517

Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT, COLORADO

Free format text: SECURITY INTEREST;ASSIGNOR:LATTICE SEMICONDUCTOR CORPORATION;REEL/FRAME:049980/0786

Effective date: 20190517

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12