USRE37195E1 - Programmable switch for FPGA input/output signals - Google Patents
Programmable switch for FPGA input/output signals Download PDFInfo
- Publication number
- USRE37195E1 USRE37195E1 US09/478,778 US47877800A USRE37195E US RE37195 E1 USRE37195 E1 US RE37195E1 US 47877800 A US47877800 A US 47877800A US RE37195 E USRE37195 E US RE37195E
- Authority
- US
- United States
- Prior art keywords
- configuration
- user
- programmable logic
- logic device
- memory
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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/17748—Structural details of configuration resources
- H03K19/17772—Structural details of configuration resources for powering on or off
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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/17704—Logic 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 the logic functions being realised by the interconnection of rows and columns
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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/17736—Structural details of routing resources
- H03K19/17744—Structural details of routing resources for input/output signals
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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/17748—Structural details of configuration resources
- H03K19/17756—Structural details of configuration resources for partial configuration or partial reconfiguration
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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/1778—Structural details for adapting physical parameters
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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/1778—Structural details for adapting physical parameters
- H03K19/17788—Structural details for adapting physical parameters for input/output [I/O] voltages
Definitions
- the invention relates to integrated circuits, more particularly to field programmable logic devices (FPGAs) having a programmable core of logic, a configuration memory for programming the core logic, logic for programming the configuration memory, and pad drivers for interfacing to external pads and pins.
- FPGAs field programmable logic devices
- Reprogrammable FPGAs have been available commercially for several years.
- the best known commercial family of FPGAs are those from Xilinx, Inc.
- One class of these devices uses Static Random Access Memory (SRAM) cells to hold control bits which control their configurations.
- SRAM Static Random Access Memory
- Each SRAM cell controls one or more transistors at the configurable points in an FPGA or serves as one or more entries in a lookup table. (The configuration memory cells collectively determine what functions the FPGA will implement.)
- the present invention will be described in connection with SRAM FPGAs.
- the configuration of the FPGA is typically loaded from a non-volatile configuration memory into the SRAM configuration memory cells when power is applied to the system.
- Some commercially available SRAM FPGAs have a stream-based interface to the SRAM configuration memory. That is, a stream of data is applied to one or a few pins in the FPGA and shifted in through a shift register to destination SRAM cells to provide a configuration for the whole device or for a subsection of the FPGA.
- This stream-based interface provides an efficient method of loading the complete device configuration from an external source without any additional overhead circuits such as row and column decoders.
- the locations of the destination SRAM cells are not individually addressable. For some stream based interfaces, in order to make any changes in the configuration, an entire section of the configuration memory must be reloaded.
- SRAM FPGAs are RAM addressable, and use data and address lines each connected to a separate external pin to access the configuration memory in a way similar to that used to access any random access memory.
- an external processor can perform word-wide read or write operations on the registers of the user's design without having to re-load other parts of the configuration data.
- a small portion of the configuration memory can be changed rapidly, and the remaining configuration memory may remain undisturbed.
- the configuration memory interface allows high bandwidth (high speed) communication between the processor and the FPGA.
- Such systems may provide mechanisms for synchronizing computations between the FPGA and a processor outside the FPGA, and provide a mechanism to support dynamic reconfiguration. In dynamic reconfiguration, partial reconfiguration occurs while the remainder of the FPGA is in use.
- Configuration information may be loaded from a variety of sources, for example, from the memory accessed by a microprocessor, from a non-volatile PROM under control of the FPGA itself (see description in Freeman, U.S. Reissue Pat. No. 34,363), or by mapping the FPGA configuration memory into the address space of the microprocessor.
- Partial reconfiguration may also occur from within some known FPGAs.
- Freeman in U.S. Pat. No. 5,343,406 [docket M-936] describes a lookup table FPGA in which the lookup tables which generate combinatorial functions can be loaded both from an externally supplied configuration bit stream and from the interconnect wiring within the FPGA. Thus partial reconfiguration of these FPGA chips can occur.
- Such FPGA chips are available from Xilinx, Inc. as the XC4000 series FPGA chips.
- FIG. 1 shows such an FPGA chip and the relationships between external pads, the FPGA user logic structures, and the configuration memory which configures the user logic. It is convenient to visualize the FPGA as formed in first and second stories, a first story holding the configuration information which selects the functions performed by the FPGA, and a second story which performs the function selected by the user. FIG. 1 illustrates the FPGA in this manner. (Physically, the configuration memory and the user logic are formed on the same substrate of an integrated circuit structure. This structure is described in PCT application serial No. WO 94/10754 published May 11, 1994.)
- pads are for accessing user logic 19 and others are for addressing and loading configuration memory 25 .
- the pad drivers 18 are configured by a user-generated enable signal to determine whether a particular user logic pad 16 is an input pad, an output pad, or unused.
- Switches such as switch 15 are configured by the underlying configuration memory 25 to transfer signals between the pad drivers 18 and the internal user logic 19 .
- Such internal user logic is discussed in detail by the present inventor in Patent Cooperation Treaty patent application serial No. WO 94/10754 published 11 May 1994.
- Pads R 0 through R 3 , R/W, CE, CK, RST, C 0 through C 2 . D 0 through D 7 and their related pins are dedicated to the configuration function.
- a commercially available device typically has more pads for both configuration and user logic than shown in FIG. 1 .
- Configuration memory 25 is loaded by addressing a memory cell or memory word as is done in a conventional RAM.
- Row and column address busses 22 and 27 carry address signals which are decoded by row and column decoders 21 and 26 , and connect a selected word of configuration memory 25 to configuration data bus 23 to be read or written.
- Pads D 0 through D 7 are coupled to configuration data bus 23 .
- FIG. 2 shows the relationship between the address and data busses, the row and column decode structures, the eight bit drivers associated with each word, and the data locations in the configuration memory array 25 .
- Such structures are well known in the art. Betty Prince in “Semiconductor Memories” ⁇ 1983, 1991 by John Wiley & Sons discusses such structures at pages 149-174.
- Memory load control unit 24 enables row and column decoders 21 and 26 in response to well known clock, chip enable, and reset signals from pads CE, CK and RST respectively.
- Memory control unit 24 in response to a read/write signal on pad R/W, determines whether pads D 0 through D 7 will have an input configuration for writing or an output configuration for reading data bus 23 .
- an external device such as a microprocessor addresses portions of the configuration memory and loads new data into those locations.
- FIG. 3A shows the relationship between parts of the FPGA user logic of FIG. 1, namely a pad 16 , the related pad driver 18 , and a switch 15 in the user logic.
- switch 15 which in FIG. 3A is located at the east edge of the FPGA, sends and receives signals between user logic at the left and the external pad 16 and pin 17 at the right.
- Lines extending to the left of switch 15 are of three different lengths as indicated by their numerical representation. For example, line E 16 B is 16 cells long and carries signals in the east direction, line E 4 B is four cells long going east, and line EB is one cell long going east.
- Line WB is one cell long going west.
- Switches 19 and 20 in the interior core of the user logic shown in FIG. 3B comprise a plurality of multiplexers each programmable by bits in the configuration memory 25 (see FIG. 1) to connect their input and output signals as desired by a user. This is discussed in more detail in PCT patent application publication number WO 94/10754 mentioned above.
- FIG. 4 shows the internal structure of the pad driver 18 and the related switch of FIG. 3 A.
- switch 15 includes eight multiplexers 41 through 48 , each for providing one of the output signals WB, W 4 B, W 16 B, WA, W 4 A, W 16 A, EN, and OUT. Input signals to these eight multiplexers are selected from the east-going input signals E 16 B, E 4 B, EB, E 16 A, F 4 A, EA, and the pad signal PADIN provided by pad driver 18 .
- pad driver 18 includes tristate output buffer 78 for providing output signal OUT to pad 16 under control of enable signal EN.
- the slew rate (switching speed) of output buffer 78 is also selectable by the user through memory cell SLEW. If pad driver 18 is configured to serve as an input driver, EN is set to make buffer 78 inactive. In the event that the chip is put into a package in which no pin 17 is connected, pullup control transistor TPUP is turned on by memory cell PUP to connect pullup resistor RPUP to the input terminal of input buffer 79 so the input voltage will not float to an intermediate state and drain power.
- dashed lines are used to indicate configuration memory cells which control multiplexers and transistors in the switch and pad driver.
- the dashes suggest that the configuration memory cells are not visible in the picture.
- the memory cell is not directly connected to the multiplexer or transistor as shown, but is gated, for example through an AND gate which typically receives a global enable input.
- Signals from the memory cells which control the pullup transistor and slew rate on the output buffer are typically gated, and enable multiplexer 47 is typically controllable to provide a disabling output signal regardless of the values in its configuration memory cells.
- Such gating structures are not shown but are well known.
- the same pad driver circuit 18 shown in FIG. 4 is used for address and data pads which access configuration memory 25 .
- the enable line EN is tied to ground and the OUT line is tied to either power or ground.
- the present invention allows the same pad to be used for both configuration and user interface, makes partial dynamic reconfiguration particularly convenient, and offers the user powerful new choices for controlling logic functions from within the FPGA and new choices for interfacing with structures outside the FPGA. It also allows the FPGA chip to be loaded with configuration information either from parallel address and data pins or from a serial data pin.
- a programmable switch is placed between the pins or pads of the chip and the internal circuitry of the chip.
- the internal circuitry includes logic which is accessed by a user during operation of the FPGA and configuration memory which controls the functions performed by the FPGA chip.
- the programmable switch adopts an initial state upon power-up to connect selected external pins to the configuration memory so that the configuration memory can be loaded.
- the configuration memory programs not only the internal circuitry accessed by the user but also the programmable switch itself.
- the programmable switch can be reconfigured to connect signal lines of the FPGA user logic to lines for addressing or controlling the configuration memory which were initially loaded from external pins.
- a programmable switch which is initially configured to connect its related pad or pads to configuration control lines such as a chip enable line or a serial data input line can later be configured to connect an internally generated signal or signals to the line or lines and thus override any external signal which would have been connected to that line or lines.
- additional pins are designated to select between serial and parallel loading and to control the serial loading.
- a serial-to-parallel interface structure is provided which can receive a serial bit stream comprising both configuration data and an address for the data, and apply the data to the addressed location just as if the data had been applied to external data pins.
- the programmable switch can be configured by the serial bit stream to change the source or destination of these serial bit stream control signals.
- one of the additional pins designated to control serial loading can be a “wait” pin, which is initially configured to receive an external wait signal and is later configured to override the wait signal with an internally generated signal when the serial bit stream is completed.
- a user could include in the user logic which is loaded during initial configuration, an address decoder which decodes microprocessor read/write cycles and produces related signals for selecting the particular integrated circuit chip, thereby removing the need for separate chips to decode addresses.
- an address decoder which decodes microprocessor read/write cycles and produces related signals for selecting the particular integrated circuit chip, thereby removing the need for separate chips to decode addresses.
- control signals on certain pins are not needed all the time, then these pins can be reused to route other user signals into the array. If pins are used this way, appropriate constant values are placed onto the lines which carry these control signals.
- a simple programming logic structure provides a general purpose programming interface. If complex programming logic is required by the user, the simple programming logic structure can be supplemented by user logic in the core of the device which is accessed by reconfiguring the programmable switch.
- a set of switches are manufactured to connect the pads of the chip to the programming logic of the chip and also to the core logic of the chip as selected by the user.
- all but three external pins are connected to programmable switches which provide this option.
- a logical zero appears in each cell of the configuration memory, causing each programmable switch to connect its pad to the programming logic which programs configuration memory, so that the programming logic can receive instructions from an external source and control programming of the core logic of the chip. Since among functions which can be programmed into the FPGA are connections to and configuration of these programmable switches, the configuration of these programmable switches can be changed from their initial configurations. Thus powerful new options are made available to the user through this relatively simple change in the FPGA chip architecture.
- FIG. 1 shows one FPGA chip and the relationships between external pads, the FPGA user logic structures and the configuration memory which configures the user logic.
- FIG. 2 shows the row and column address structure of the circuit of FIG. 1 .
- FIG. 3A shows the relationship between parts of the FPGA user logic of FIG. 1, namely a pad, the related pad driver, and a switch in the user logic.
- FIG. 3B shows a portion of user logic which may be used with the invention, illustrating a hierarchical interconnect structure.
- FIG. 4 shows the internal structure of the pad driver and the related switch of FIG. 3 A.
- FIG. 5 shows a structural relationship between a pad, a pad driver, a portion of the FPGA core logic, and the FPGA configuration memory according to the invention, illustrating that the underlying configuration memory controls the pad drivers, the programmable switch and the user logic.
- FIG. 6A shows the relationship between parts of the FPGA user logic of the invention, namely a pad at the north edge of the FPGA, the related pad driver, a programmable switch in the user logic, and signals accessed by the programmable switch.
- FIG. 6B shows the relationship between a pad at the east edge of the FPGA, the related pad driver, a programmable switch in the user logic, and signals accessed by the programmable switch.
- FIG. 6C shows the relationship between signals generated by the programmable switches of FIGS. 6A and 6B and the signal lines in the memory control structure which carry these signals.
- FIG. 7 shows a first embodiment of the pad driver and switch of the present invention.
- FIG. 8 shows a second embodiment of the programmable switch and pad driver of the present invention.
- FIG. 9A shows a logic cell of the type which may be used in FIG. 3 B and which may be used with the switch of the present invention.
- FIG. 9B shows a four-by-four cell block with the pattern of routing lines which connect the M output signals from multiplexer 57 of FIG. 9A to switches surrounding the four-by-four cell block.
- FIG. 9C illustrates the arrangement of ME signals provided to switches 734 at the east edge of the chip.
- FIG. 10 shows a novel function unit which may operate in the logic cell of FIG. 9 A.
- FIG. 11 shows a padless switch and its connections to a related switch and pad of the type shown in FIG. 7 .
- FIG. 12 illustrates a structure which provides a global clock signal from an external pad to a programmable switch and further provides the global clock signal to a gating device.
- FIGS. 13A through 13D illustrate switches provided in one embodiment at locations throughout the user logic structure.
- FIG. 14 shows a state machine representation of the operation of a serial interface structure with which the invention may be used.
- FIG. 15 shows a timing diagram illustrating the global clock signal GClk, the SEClk signal at half the global frequency, and the SEData signal for the serial interface of FIG. 14 .
- FIG. 16 shows several FPGAs connected to a printed circuit board so that they can be configured from a single serial PROM.
- FIG. 17 shows an application of the programmable switch of the invention to modify a chip enable signal.
- FIGS. 18A and 18B show two structures for validating configuration data.
- FIG. 5 shows one structural relationship between pads, a programmable switch, the FPGA user logic, and the configuration memory according to the invention.
- Programmable switch 34 can access both the configuration memory 38 and the user logic 39 .
- Programmable switch 34 can send and receive data to and from user logic 39 as indicated by the bidirectional bus 35 and can also send and receive data from configuration memory 38 as indicated by bidirectional bus 36 .
- FIG. 5 illustrates that the underlying configuration memory 38 controls the pad drivers 33 , the programmable switch 34 and the user logic 39 .
- FIG. 6A shows in more detail the relationship provided by the invention between parts of the FPGA, namely a pad at the north edge of the FPGA, the related pad driver 33 , a programmable switch 634 -N in the user logic, and signals accessed by the programmable switch 634 -N.
- switch 634 -N is one of many switches which make up switch 34 of FIG. 5 . Each connects to a separate pad 16 .
- Pad driver 33 is controlled by three control signals PULL DOWN, PULL UP, and SLEW derived from three configuration memory cells, in a way similar to the structure of FIG. 4 .
- Switch 634 -N at the north edge of the chip receives three input signals derived from three lines which control the configuration memory.
- Signals INB in one embodiment can be used to provide a data signal on a data line which writes to the configuration memory and signal OUTB can be derived from that same data line.
- the ENB signal (which enables switch 634 -N to forward signal OUTB, as will be shown below in connection with FIG. 6C) is derived from a control unit for controlling configuration memory in response to well-known signals such as clock, read/write, and chip enable signals.
- the WORD signal is derived from a word line in the configuration memory. In this embodiment, word lines extend vertically through the chip are accessed by switches at the north and south edges of the chip. Signal lines extending downward from switch 634 -N connect to a user logic array such as shown in FIG. 3 B. The embodiment of FIG.
- FIG. 6A differs from that of FIG. 3B in that it includes a fourth level of hierarchy having routing lines N 64 and S 64 which are 64 cells long. Additionally a line MN is of a length between one and four cells, and connects to a selected point in a four-cell block, as will be discussed in connection with FIGS. 9A and 9B.
- FIG. 6B shows the relationship between a pad at the east edge of the FPGA, the related pad driver, a programmable switch in the user logic, and signals accessed by the programmable switch.
- signals from the programming structure include a bit line rather than a word line.
- FIG. 6C shows connections to the programming structure of the signals INB, ENB, OUTB, WORD, and BIT which were illustrated in FIGS. 6A and 6B.
- the configuration memory 38 of FIG. 6C includes words of 32 bits, each word being addressed by a row and column address. Address lines A 0 through A 5 address rows and address lines A 6 through A 10 address columns. Each combination of row and column addresses selects one 32-bit word. When a word is selected, the 32 bits of that word are read from or written to data lines D 0 through D 31 . Each bit of the addressed word is read from a different line OUTB by a different switch 634 or written to a corresponding line INB by the corresponding switch 634 .
- FIGS. 6A through 6C show embodiments in which one switch 634 corresponds to one pad 16
- other embodiments of switch 34 include lines which connect internal signals to more than one pad.
- Multiple switches 634 in FIG. 6C receive the same ENB input signal, and derive corresponding EN signals, one for each pad, for enabling pad driver output signals OUT.
- FIG. 7 shows one embodiment of the pad driver and switch of the present invention.
- a plurality of switches 634 are provided as part of programmable switch 34 of FIG. 5B, one switch 634 for every row or column of cells of user logic. (For cells, see FIG. 3B, cells 12 .) Every switch 634 has the ability to route either a user logic signal or a control logic signal to or from pad 16 .
- the control logic signals include chip enable, read/write, address, and data. This means that the pins and pads which provide these control signals during configuration after power-up are not necessarily used for addressing and loading configuration data but may also be used to interface with the user logic. Likewise, a signal generated by the user logic can be applied to one of the control inputs of the configuration memory.
- signal lines at the left connect programmable switch 634 to user logic and thus form part of bus 35 (see FIG. 5 ).
- Signal lines at the top of the figure connect to the control lines for addressing, reading, writing to configuration memory and thus form part of bus 36 of FIG. 5 .
- an enable signal ENB which is generated by control logic for loading configuration memory 38 (see FIG. 6 C) modifies a user output signal OUTEN through NAND gate 101 to generate the enable signal EN controlling output buffer 78 . Since the OUTEN signal is generated by user logic, both the configuration control logic and the user's logic affects the value of the EN signal.
- output data signal OUTB on bus 36 is applied to multiplexer 98 .
- User logic output signal UOUT is also applied to multiplexer 98 .
- the output enable signal OUTEN as optionally inverted by multiplexer 97 is logical zero
- the user output signal UOUT is applied by multiplexer 98 as signal OUT through buffer 78 to pad 16 .
- pad 16 carries a signal generated by user logic 39 .
- the optionally inverted OUTEN signal from multiplexer 97 is logical one, if the control logic enable signal ENB is low (thus causing NAND gate 101 to generate a logical one EN signal) the configuration data output signal OUTB is applied to pad 16 . If control logic enable signal ENB is high, pad 16 receives a high impedance if PUP and PDN are both zero and receives a constant if PUP or PDN is high.
- Input line IN from pad driver 633 can be applied both to user logic via multiplexers 73 and 99 and to the configuration memory control structure via multiplexer 74 .
- These three multiplexers 73 , 74 , and 99 are controlled by bits in the configuration memory (as suggested by the dashed lines around memory cells 82 , 83 , and 84 ).
- Multiplexer 99 can apply either a delayed version of the signal or a passed-through version of the signal to line DELIN as selected by configuration memory cell 84 .
- Multiplexer 73 selects between signal DELIN and a user logic generated signal USIG from bus 35 and sends the selected signal UIN on bus 35 to user logic.
- Switch 634 can also apply the externally derived signal IN to bus 36 for use as a configuration memory control signal if configuration memory cell 83 has been programmed to forward this IN signal.
- memory cell 83 can cause one of the user logic signals E 16 to be a control signal for configuration memory.
- the embodiment of FIG. 8 has the ability to interact with several signals for accessing the configuration memory through buses 36 and 40 as well as accessing several routing lines in the user logic through bus 35 .
- the embodiment of FIG. 8 sits at the east edge of an FPGA logic structure having four levels of interconnect hierarchy.
- Multiplexers 93 through 96 drive west-going lines W, W 4 , W 16 , and W 64 having lengths indicated by their suffixes and perform functions similar to multiplexer 73 of FIG. 7 .
- East-going lines E, E 4 , E 16 , and E 64 provide east-going signals on lines of the indicated lengths.
- East-going signal ME is of another length, in one embodiment one to four cells long (discussed below with reference to FIGS. 9 A and 9 B).
- Multiplexers of FIG. 8 having the same label as multiplexers of FIG. 7 perform the same function.
- Bus 40 allows further interaction between the configuration memory control structure and the user logic. Bus 40 is best understood with reference to FIGS. 9A and 10. As is well known for memory structures, a plurality of bit lines extend perpendicular to a plurality of word lines for addressing, reading and writing an array of memory cells. In FIG. 10, word lines extend vertically, one of which, line WORD, is shown. Bit lines extend horizontally, four of which, BIT 0 , ⁇ overscore (BIT 0 ) ⁇ , BIT 1 and BIT 2 , are shown. Not only do the bit and word lines address configuration memory cells such as the multiplexer control memory cells indicated by dashed lines, these bit and word lines also are used in the structure of FIG. 10 to provide an alternative means of reading and writing to flip flops 111 which are part of the function unit FU in the preferred cell of FIG. 9 A.
- FIG. 9A shows one of the cells 12 illustrated in FIG. 3 B.
- Three input multiplexers 58 , 60 , and 62 provide a selected input signal X 1 , X 2 , and X 3 to function unit FU.
- Four output multiplexers 50 , 52 , 54 , and 56 provide output signals going north, south, east, and west respectively. These output signals are derived from input signals from north, south, east and west as shown in FIG. 9 A and also from the signal F, which is the output signal from function unit FU.
- Multiplexer 57 provides as an output signal the X 2 or X 3 signal and thus allows a signal coming in on one of the length-one or length-four lines to be provided as an output signal M.
- FIG. 9B shows a four-by-four cell block and shows the pattern of routing lines which connect the M output signals from multiplexer 57 in a single cell of FIG. 9A to switches surrounding the four-by-four cell block.
- the destination of the M output signal of FIG. 9A depends upon where cell 12 is positioned within the four-by-four cell block.
- the M output signal from cell 12 - 11 at the upper left corner of a four-by-four cell group is provided to switches to the east and west of the four-by-four cell group.
- the M output signal from cell 12 - 12 is provided to switches to the north and west of the four-by-four cell group.
- the M output signal from cell 12 - 13 is provided to switches to the north and east of the four-by-four cell group.
- the M output signal from cell 12 - 14 is provided to switches to the north and south of the four-by-four cell group.
- the M output signal from cell 12 - 21 is provided to switches to the north and west; from cell 12 - 22 to the east and west; from cell 12 - 23 to the north and south; and from cell 12 - 24 to the north and east.
- Similar sets of connections are provided for the third and fourth rows as shown.
- four M signals are provided to each switch. These are in addition to the signals illustrated in FIG. 3 B.
- multiplexer 57 receives the X 2 and X 3 input signals, which can each be derived from length-one or length-four signals from any of the four directions.
- cells 12 - 11 , 12 - 22 , 12 - 33 , and 12 - 44 could derive signals from the south and direct these signals to the east or west.
- cells 12 - 41 , 12 - 32 , 12 - 23 , and 12 - 14 can derive signals from switches to the west and direct these signals to the north or south.
- Cells not on the diagonal of the four-by-four block can fan out signals in two right angle directions. These turns are made without using up the length-one wires. This combination of connections adds only two horizontal metal lines per row of cells and two vertical metal lines per column of cells, so very little metal area is consumed. Further, the structure illustrated in FIG. 9B requires only one two-to-one multiplexer in each cell and thus consumes very little area. The routing flexibility from adding multiplexer 57 and its related output lines requires only one additional memory cell in the configuration memory. Multiplexer 57 reuses signals X 2 and X 3 generated by multiplexers 60 and 62 .
- switch 734 At the edge of the chip, only two signals would be provided to switch 734 , since no logic cells exist between switch 734 and the pads. However, in the embodiment of FIGS. 8-12, only one M signal is provided to switch 734 .
- FIG. 9C illustrates the arrangement of ME signals provided to switches 734 at the east edge of the chip. These are illustrated in FIG. 8 (east edge of the chip) as signals ME. Many other combinations are of course possible in other embodiments.
- input signals X 1 , X 2 , and X 3 are generated by user logic.
- Lines WORD, ⁇ overscore (BIT 0 ) ⁇ , BIT 1 , BIT 1 and BIT 2 are part of the configuration memory programming structure for reading and writing the memory cells in the configuration memory and these lines can also be used to read and write registers 111 which are part of the user logic.
- a register protect multiplexer 104 can be programmed to select whether a signal from the user logic or a signal from the structure which controls configuration memory will be allowed to write to register 111 .
- register protect bit RP in configuration memory When register protect bit RP in configuration memory is logical zero, the combinatorial output from multiplexer 103 is forwarded to multiplexer 105 and can be loaded into register 111 in response to clock signal CLK.
- the register protect bit RP When the register protect bit RP is logical one, the Q output signal from register 111 is provided as input to multiplexer 105 , which provides the D input to register 111 .
- the user logic which generates the output signal from multiplexer 103 can not change the value in register 111 . Even the clear signal CLR will not clear those registers which have their register protect bit RP set.
- configuration memory access signals on lines WORD, BIT 0 , ⁇ overscore (BIT 0 ) ⁇ , BIT 1 and BIT 2 can be used both to read and to write register 111 .
- an external CPU can have access to these registers while other portions of the FPGA are performing other functions and registers are being cleared with a global clear signal.
- Multiplexer 109 which receives both the combinatorial and sequential outputs of function unit FU allows an external CPU or other device to access the combinatorial output of multiplexer 103 as well as the output of register 111 .
- GCLK Global Clock signal
- all registers in the user logic must be clocked from GCLK and there must be no registers or latches built from gates in the user logic. It is necessary to turn off GCLK to the user logic because it will take many processor cycles to read the entire device state. If GCLK was not turned off, some state information would change during the read process and the saved values would not reflect a single clock cycle ‘snapshot’ of the user register states. Reads to registers and configuration memory locations can take place with the user logic clock off.
- the global clock signal GClk is provided to a gating structure 129 , which generates a global user clock signal UGClk if the STOP signal is not asserted.
- This signal UGClk is shown in FIGS. 13A and 13C as a selectable source for the clock signal CLK which drives user registers shown in FIG. 10 .
- configuration memory interface structure The portion of configuration memory interface for reading state information to or from one user logic cell is shown in FIG. 10 .
- Logic in the FPGA starts off with the previously swapped out configuration and state.
- FIG. 11 shows two programmable switches which direct signals from a single pad 16 .
- padless switch 634 -N is at the north edge of the chip and programmable switch 634 -E with pad 16 is at the east edge.
- the chip is arranged so that lines INB, OUTB, and ENB of switch 634 -E connect to lines IN, OUT, and EN of switch 634 -N.
- switch 634 -E can be used to direct signals either to its own lines of user logic or to switch 634 -N which in turn directs signals either to its own lines of user logic or to its respective lines INB, OUTB, and ENB.
- every second switch receives a data bus signal.
- sixteen of the switches preferably not adjacent, receive address signals.
- fourteen of the switches receive control signals.
- the seven switches on the east edge and the seven switches on the west edge which do not have associated pads are connected to the secondary ports of switches on the south edge which have their secondary ports free. In this embodiment, all the north switches, 32 west switches, 48 east switches, and 36 south switches do not have their secondary ports used.
- serial and wait control signals listed above support a mode of loading configuration data from a serial bit stream and make the memory-addressable chip described above compatible with a bit stream method of loading supported by the XC17000 family of serial configuration PROMs available from Xilinx, Inc. Such loading methods are discussed at pages 2-231 to 2-238 of the Xilinx Data Book, ⁇ 1994, available from Xilinx, Inc., 2100 Logic Drive, San Jose, Calif. 95124.
- the address pads that is, those pads which are initially configured as address pads, do not receive output signals from the programming structure on bus 36 (FIG. 8 or FIG. 5) since addresses are input only. It may be simpler to design all programmable switches identically, thus providing OUTB and ENB lines as with bidirectional pads such as data pads. If the lines in bus 36 are input only, the OUTB and ENB lines of switch 734 are connected to power or ground and not left floating, so that when the pad is programmed to be an address or other input pad, output buffer 78 is always disabled.
- the reset signal is an example of such a signal.
- the programmable switch may still programmably connect the signal from the pad to the user logic. If pad drivers are provided for such signals and are of the same design as pad drivers described above, the EN and OUT terminals of these pad drivers may be connected to ground (or to power if appropriate) so that the output drivers are permanently disabled.
- This structure removes some flexibility of the programmable switch but assures that the function, such as reset or clock, is always accessible to external control.
- FIG. 12 illustrates a structure which provides a global clock signal GClk from an external pad to programmable switch 34 and further provides the global clock signal GClk to a gating device 129 which as controlled by a STOP signal generated by the configuration memory control structure either toggles the user global clock signal UGClk or stops this clock signal while the external global clock signal GClk continues to toggle.
- Gating device 129 preferably receives additional signals to assure that no spurious pulses are applied to the user global clock signal UGClk Such circuits are known and not described here.
- FIG. 12 illustrates an embodiment which provides the reset signal RST directly to configuration memory without the option of being directed elsewhere by programmable switch 34 .
- FIG. 12 also indicates an embodiment in which an external output enable control signal OE controls pad drivers 33 directly without being programmable through programmable switch 34 .
- FIGS. 13A through 13D illustrate switches provided in one embodiment at locations throughout the user logic structure.
- FIG. 13A represents a north south switch 118 NS on a north-south boundary between 4 ⁇ 4 groups of logic cells.
- Switch 118 NS is similar to a switch 19 in FIG. 3 B.
- Switches 118 NS form horizontal boundaries between 4 ⁇ 4 groups of cells.
- FIG. 13B illustrates an east/west switch 118 EW.
- Switches 118 EW form east/west boundaries between 4 ⁇ 4 groups of cells and routes signals of various lengths as shown.
- FIG. 13C a north/south switch 120 NS is illustrated.
- Switches 120 NS form horizontal boundaries between 16 ⁇ 16 blocks of cells.
- switches 120 EW of which one is illustrated in FIG. 13D, form vertical boundaries between 16 ⁇ 16 blocks of cells.
- those portions of the switches of FIGS. 13A through 13D which are shown as having dashed line output signals are actually implemented as part of the neighboring logic cells shown in FIG. 9 A and replace appropriate multiplexers in those neighboring cells.
- switch 118 NS In addition to routing signals of various lengths these switches generate certain control signals.
- switch 118 NS In FIG. 13A, switch 118 NS generates a clock signal CLK, which drives the clock input CLK of user registers shown in FIG. 10 and can be derived either from the global clear signal GClr or from the gated user global clock signal UGClk illustrated in FIG. 12 .
- the clock signal CLK from one switch is also provided as the signal Clkln to the next switch directly north.
- User generated signals can be used as clock signals via the NOut input to the CLK multiplexer, and a clock signal CLK generated in one 4 ⁇ 4 block of cells can be used to drive a clock input in a cell to the north of the 4 ⁇ 4 block.
- FIG. 13C shows a switch 120 NS at a horizontal boundary of a 16 ⁇ 16 block of cells.
- switch 120 NS includes a clear multiplexer which generates the clear signal CLR. This signal is shown in FIG. 10 to be gated with the register protect signal in AND gate 107 to drive the reset input R of register 111 in a cell of user logic.
- the clear signal CLR can be derived from a global clear signal GClr, from the clear signal generated in the block above ClrIn, from various routing signals, and from the global clock signal UGClk.
- FIGS. 13A through 13D Some of the multiplexers in FIGS. 13A through 13D are shown as providing a second optional output signal.
- the SOut multiplexer also provides an optional SCOut signal and the NOut multiplexer provides an optional NCOut signal.
- FIGS. 13B, 13 C and 13 D also show multiplexers with an optional second output signal having a “C” designation. This C output corresponds to the output that comes from the cell's neighbor multiplexer in FIG. 9 A.
- the NCOut signal is selected from the four signals F, N, E and W. Of the three select bits for controlling the eight-input NOut multiplexer, the two least significant bits also control the four-input NCOut multiplexer.
- NOut will be identical to NCOut if the NOut multiplexer is set to select one of F, N, E or W.
- the PS 4 input to the NOut multiplexer is taken from the S 4 signal to the cell to the north of the cell in which the NOut multiplexer is formed (not the S 4 Out signal from the illustrated switch).
- the prefix “P” indicates the input signal comes from a previous cell (upstream from the direction of signal flow).
- FIGS. 13A through 13D show only one embodiment of the invention. Clearly many alternative variations on these switches can be provided.
- the FPGA chip can be loaded through a serial interface as well as through an addressing structure.
- the serial interface structure makes the FPGA with addressable configuration memory compatible with serial PROMs available from Xilinx, Inc.
- the serial interface structure also allows the FPGA to use most pins for user input/output while a portion of the FPGA is being configured through a few pins.
- the serial interface structure provides a method of configuring the configuration memory which is independent of the CE, read/write, address, and data pins and can therefore be used conveniently to load programming information for circuitry which affects those pins.
- the FPGA may also use an output pin driven by user logic to provide a Wait output signal for controlling slave FPGAs.
- the first signal, ⁇ overscore (Serial) ⁇ selects between loading the configuration data through address and data lines as discussed earlier, and loading a bitstream through a single pin.
- FIG. 14 shows a state machine representation of the operation of the serial interface structure. State 0 occurs after a global FPGA Reset signal or upon power-up of the chip.
- bit stream includes both address and data information so that data may be loaded in any order, so that partial reconfiguration may be accomplished, and so that wild card and mask registers which allow more than one address to be loaded with the same data or allow less than a complete word to be loaded (discussed in PCT patent application WO 94/10754, mentioned above) can also be used.
- Driving SEReset high is represented by State 2 in FIG. 14 .
- SEReset remains high for a sufficient number of cycles of the FPGA global clock to reset the serial PROM.
- SEReset is then deasserted.
- Driving ⁇ overscore (SECE) ⁇ low is represented by State 5 .
- ⁇ overscore (SECE) ⁇ remains low with SEClk not yet being toggled for at least a number of clock cycles sufficient to allow for the propagation delay between when the FPGA asserts the ⁇ overscore (SECE) ⁇ signal and the valid data from the serial PROM propagates back to the FPGA, in one embodiment 11 cycles of the global FPGA clock. The number depends upon the fastest expected global clock frequency.
- SEClk begins to toggle.
- SEClk may be some portion of the global FPGA clock frequency, for example ⁇ fraction (1/16) ⁇ or 1 ⁇ 2 the global clock frequency, and may be adjustable.
- the FPGA watches the serial data for a synchronization pattern, for example five zeros followed by a one, or several ones followed by a zero. To assure synchronization, the data stream may include, for example, seven ones followed by a zero while the FPGA watches for three ones followed by a zero.
- the device moves to State 3 , and begins to load serial data SEData.
- Serial data are loaded in address/data pairs. After an address/data pair has been shifted into the FPGA, the address in the FPGA is selected, and the data are loaded into that address. This is the same operation which occurs when a parallel write occurs in parallel mode.
- the bits may be shifted in on the rising edge of SEClk.
- FIG. 15 shows a timing diagram illustrating the global clock signal GClk, the SEClk signal at half the global frequency, and the SEData signal for the serial interface of FIG. 14 .
- the synchronization byte occurs at the beginning of SEData, and is followed by a first data word of 8 bits and an address of 16 bits.
- the serial interface structure allows serial data to be written to any configuration memory cell within the FPGA. This means a word can be loaded which changes the data word size or the SEClk rate for subsequent data.
- the data word size is initially 8 bits and the SEClk rate is initially set to ⁇ fraction (1/16) ⁇ the global clock rate GClk.
- the first 8-bit word loaded can be addressed to the configuration memory controlling the SEClk rate and modify it to be a faster rate.
- the SEClk rate begins at ⁇ fraction (1/16) ⁇ of the GClk rate and can be increased to, for example, 1 ⁇ 2 the global clock rate. Subsequent words are then loaded at this rate.
- the next data word can be addressed to the configuration memory cells controlling the data word length and modify the data word length to 32 bits. Subsequent words in the data stream are then loaded and written internally as 32-bit words. This leads to loading serial data at the fastest possible rate.
- the initial SEClk rate is 1 ⁇ 2 the GClk rate and remains at that rate. However, the length of the data word is switched from 8 bits after the first word to 32 bits, and this is the length of the second data word, as shown.
- the Wait signal goes high. This may occur in two ways. First, the external Wait signal may be brought high and thus cause the corresponding internal Wait signal to go high. Second, a data-loaded bit at or near the end of the address/data pair may configure the programmable switch between the Wait pin and the Wait internal signal so that the Wait internal signal goes high.
- ⁇ overscore (Serial) ⁇ goes high, the device moves to State 1 and continues in parallel mode. If Wait goes high, the FPGA moves to State 4 and remains there until the Wait signal is deasserted or the FPGA is shifted into parallel mode. Because of this Wait state, the structure can be partly loaded, perform some operation desired by the user, then further loaded with different configuration data, perform another operation, and so forth.
- ⁇ overscore (SECE) ⁇ remains low (asserted) and SEClk toggles in states 3 , 4 , and 6 .
- the control memory On power up or after a reset pulse, the control memory must be set to a known value which ensures a low power consumption and sets the programmable switch so that external pads are coupled to the configuration memory addressing structure to permit the initial device configuration.
- cell multiplexer decoding schemes are chosen so that coupling to the configuration memory addressing structure is achieved by writing 0 into all configuration memory cells.
- this initial clear operation operates asynchronously and does not depend on an external clock. Clearing all the configuration memory cells can be achieved by holding all bit lines at 0, all bitbar lines at 1 and all word lines at 1, thus writing 0 into all configuration memory cells simultaneously.
- This technique has one major problem: in the preferred embodiment of the invention there are more than 200 configuration memory cells per bit line. Theoretically all these configuration memory cells could hold ‘1’ on power up or when Reset is applied. However, in that case, the bit line buffers would have to overcome 200 configuration memory cells in parallel. This would require impractically large bit line buffers.
- the wildcard registers described in WO 94/10754 can be used in combination with fixed delay elements to turn the word lines on over a period of time. Initially one wildcard bit is set and 2 configuration memory cells are written. After a period of time (e.g. 50 ns), the second wildcard bit is set: 4 configuration memory cells are now selected, 2 of which are known to be 0 since they were previously written.
- bit line buffers have very little load—in the worst case two configuration memory cells pull up and two pull down—buffers need only ‘tip’ the balance.
- bit line driver need only tip the balance—it does not need to drive 8 configuration memory cells simultaneously to the opposite state.
- bit line buffers have to flip more than two configuration memory cells simultaneously.
- All control registers are cleared to disable all row and column wildcard features (for detail, see WO 94/10754).
- the global clock CLK which clocks registers 111 (FIG. 10) in the cells are disabled.
- Input buffers 79 (FIG. 8) are set to accept TTL logic thresholds.
- the data bus width (FIG. 2, WORD N) is set to 8 bits and the eight data bus bits are applied to all eight addressed registers.
- the serial configuration clock SEClk is set to ⁇ fraction (1/16) ⁇ of the FPGA global clock frequency.
- Function units FU within the cells 12 are configured by multiplexers 109 (FIG. 10) to provide the Q output of registers 111 . Since all configuration memory values are zero, the register protect feature is off. Since the clock is off, all function units output a constant zero.
- All multiplexers 50 , 52 , 54 , 56 in cells 12 (FIG. 9A) provide the output of function unit FU, and therefore all output a constant zero.
- Multiplexers 57 select the X 3 output, which is constant zero.
- Switches within the array each select an input which is a constant zero.
- the next to last data word to be loaded modifies the configuration memory which controls the programmable switch 34 of the Wait pin on the master FPGA so that the internal value of the Wait signal goes high.
- One more word is loaded after this write to configuration memory.
- the last word loaded into the master FPGA drives the User I/O pin high, which in turn drives the Wait input of slave FPGA 1 to a low, which causes slave FPGA 1 to enter State 6 .
- slave FPGA 1 When slave FPGA 1 receives a synchronization pattern, it enters State 3 and starts loading data.
- the next to last data word causes the value of the Wait signal to go high. As before, one more word is loaded after this write to configuration memory.
- the last word loaded into the master FPGA drives the User I/O pin high, which in turn drives the Wait input of slave FPGA 2 to a low, which causes slave FPGA 2 to enter State 6 .
- Steps 8-10 are repeated until the last slave FPGA in the chain is reached.
- the last slave FPGA can simply return to parallel mode (State 1 ) and leave the master in State 4 . If the master is also to be returned to parallel mode, the last slave must cause the programmable switch which drives the master's ⁇ overscore (Serial) ⁇ input line to go high. There are a number of ways to do this. One way is for one I/O pin of the last slave FPGA to be connected to a pin of the master FPGA and for the programmable switch connected to this pin to direct the signal to drive the master's ⁇ overscore (Serial) ⁇ input line high.
- FIG. 17 shows an example application which the user may make of the programmable switch of the invention.
- the user wishes to modify a chip enable signal CE so that the FPGA chip responds to the chip enable signal CE only when address lines A 16 through A 19 are high.
- This example application could not be so easily accomplished by the FPGA structures of the prior art. In fact, it would typically require that a PAL chip be provided on the board with the FPGA to decode the chip enable signal before providing it to the FPGA chip. With the present invention, this function can be accomplished within the FPGA chip.
- the user loads bits into configuration memory 38 , to cause FPGA user logic 39 to form AND gates 1 - 4 .
- the user also loads configuration bits to cause the CE signal to be routed to AND gate 1 and the A 16 through A 19 signals to be routed to AND gates 3 and 4 as shown, preferably through the serial interface.
- the serial interface allows the user to conveniently reconfigure those switches 734 connected to the CE and address pads, without having to use the CE and address pads to access the memory bits which control their own switches.
- the user programs configuration memory 38 to connect AND gates 1 through 4 together as shown, and to route the output signal from AND gate 1 to the CE line which controls configuration memory 38 .
- programmable switch 34 comprising a plurality of switches 734 .
- Programmable switch 34 is programmed to receive the CE signal from an external pad and apply, it on bus 35 to an appropriate line leading into FPGA user logic 39 .
- the pad which is intended to receive the CE signal is at the west edge of the chip.
- the CE pad is at the east edge of the chip.
- any of lines W, W 16 , or W 64 may be selected to route the external CE signal by appropriately loading configuration memory cells which configure multiplexers 93 , 95 , and 96 .
- pads which receive address signals A 16 through A 19 are set to direct the signal to user logic 39 on bus 35 , again through one of multiplexers 93 , 95 , and 96 .
- the programmable switch which directs the CE signal to FPGA user logic 39 is also programmed to set multiplexer 74 so that the signal on line E 16 is directed to line INB.
- bus 35 carries the original CE signal to FPGA user logic 39 and then carries the modified CE signal back to switch 35 where it is directed by multiplexer 74 as the INB signal to the internal chip enable line CE which controls configuration memory 38 .
- FIG. 1 Note the contrast with FIG. 1, in which the chip enable signal CE is applied directly to memory control unit 24 .
- FIG. 1 if a user wishes to modify a chip enable signal, it is necessary to generate a modified chip enable signal before applying it to the CE pad of FIG. 1 or to perform the inefficient step of routing the CE signal onto the chip, generating a modified signal, routing the modified signal off the chip and back to the CE input pad of the chip, a much slower sequence, which uses additional I/O pins.
- Another example application is to direct the read/write signal to the user logic and combine it with address signals before generating the internal read/write signal, so that only selected addresses can be rewritten after the initial configuration.
- Yet another example is to disable the read access so that a user's design can not be decompiled by another user of the design. This function is similar to the “security fuse” on a PAL.
- a further example is to connect a data pad to both user logic and to the programming circuitry which normally connects to this data pad. Then when a particular sequence of data signals is passed between the external pad and certain data lines, user logic can initiate an action. For example, by copying one area of the configuration memory to another, the user logic can reconfigure the device. Or the user logic can make simple changes to the configuration such as redirecting a multiplexer to receive a different signal, or copying an external data stream into part of the configuration memory.
- a larger register which must receive characters which represent the name of the device manufacturer and the part family plus an identifier for the particular die revision.
- this register includes 128 bits. Only if the correct values are present in all 128 bits will the output buffers and certain other elements be enabled.
- a host computer determines the type of FPGA and adjusts its own behavior accordingly, for example by choosing one of several FPGA configurations to load.
- the FPGA may be able to function differently when one of several different strings of configuration data are loaded into this register. For example, if a bitstream for a previous less capable device, or a smaller family member is loaded, the FPGA may emulate the simpler device.
- FIGS. 18A and 18B show two structures for validating configuration data.
- a set of 128 configuration bits are connectected to wide AND gate AND 0 . Some of the cells have their Q output connected to AND gate AND 0 and some have their ⁇ overscore (Q) ⁇ output connected. If the expected pattern includes a logical 0 in the bit position, the ⁇ overscore (Q) ⁇ output is connected. If the expected pattern includes a logical 1 in the bit position, the Q output is connected. For example, in FIG. 18A, the Q output of CELL 1 is connected to AND gate AND 0 and the ⁇ overscore (Q) ⁇ output of CELL 2 is connected. A logical 1 output signal MATCH indicates a good configuration. A logical 0 indicates a failed configuration.
- a set of 128 configuration bits is again decoded.
- two AND gates AND 1 and AND 2 are provided and each decodes a different combination of logical 0's and logical 1's.
- the Q output of CELL 1 is connected to AND gate AND 1 and the ⁇ overscore (Q) ⁇ output of CELL 1 is connected to AND gate AND 2 .
- the ⁇ overscore (Q) ⁇ output of CELL 2 is connected to both AND 1 and AND 2 . Therefore AND gate AND 1 provides a logical 1 MATCH 1 signal in response to a different bit pattern than AND gate AND 2 . Since two acceptable bit patterns can be detected, the device can be programmed to respond differently to the two bit patterns.
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Logic Circuits (AREA)
Abstract
A programmable switch for a field programmable gate array (FPGA) allows a user to reconfigure or partly reconfigure the FPGA from within the FPGA, allows an addressable configuration memory to be addressed through a set of pins for configuration and through user logic for reconfiguration. The same pins can be used for both configuration and user logic. Also signals such as chip enable and other control signals can be modified by user logic before performing their function so that chips external to the FPGA can be eliminated. Upon power-up of the chip, each programmable switch connects its pad to the programming logic which programs configuration memory, so that the programming logic can receive instructions from an external source and control programming of the core logic of the chip. The configuration memory programs not only the internal circuitry accessed by the user but also the programmable switch itself. Thus as configuration proceeds, or after configuration is completed, the programmable switch can be reconfigured to connect internal portions of the FPGA user logic to parts of the configuration memory which were initially loaded from external pins.
Description
This application claims priority of United Kingdom application 9508931 filed May 2, 1995.
The invention relates to integrated circuits, more particularly to field programmable logic devices (FPGAs) having a programmable core of logic, a configuration memory for programming the core logic, logic for programming the configuration memory, and pad drivers for interfacing to external pads and pins.
Reprogrammable FPGAs have been available commercially for several years. The best known commercial family of FPGAs are those from Xilinx, Inc. One class of these devices uses Static Random Access Memory (SRAM) cells to hold control bits which control their configurations. Each SRAM cell controls one or more transistors at the configurable points in an FPGA or serves as one or more entries in a lookup table. (The configuration memory cells collectively determine what functions the FPGA will implement.)
The present invention will be described in connection with SRAM FPGAs. The configuration of the FPGA is typically loaded from a non-volatile configuration memory into the SRAM configuration memory cells when power is applied to the system.
Some commercially available SRAM FPGAs have a stream-based interface to the SRAM configuration memory. That is, a stream of data is applied to one or a few pins in the FPGA and shifted in through a shift register to destination SRAM cells to provide a configuration for the whole device or for a subsection of the FPGA. This stream-based interface provides an efficient method of loading the complete device configuration from an external source without any additional overhead circuits such as row and column decoders. In prior art stream-based FPGAs, the locations of the destination SRAM cells are not individually addressable. For some stream based interfaces, in order to make any changes in the configuration, an entire section of the configuration memory must be reloaded.
Other SRAM FPGAs are RAM addressable, and use data and address lines each connected to a separate external pin to access the configuration memory in a way similar to that used to access any random access memory. With an addressable configuration memory, an external processor can perform word-wide read or write operations on the registers of the user's design without having to re-load other parts of the configuration data. In such systems, a small portion of the configuration memory can be changed rapidly, and the remaining configuration memory may remain undisturbed. Thus the configuration memory interface allows high bandwidth (high speed) communication between the processor and the FPGA. Such systems may provide mechanisms for synchronizing computations between the FPGA and a processor outside the FPGA, and provide a mechanism to support dynamic reconfiguration. In dynamic reconfiguration, partial reconfiguration occurs while the remainder of the FPGA is in use. These systems still allow use of conventional design tools to create FPGA configurations for static designs.
Configuration information may be loaded from a variety of sources, for example, from the memory accessed by a microprocessor, from a non-volatile PROM under control of the FPGA itself (see description in Freeman, U.S. Reissue Pat. No. 34,363), or by mapping the FPGA configuration memory into the address space of the microprocessor.
Partial reconfiguration may also occur from within some known FPGAs. Freeman in U.S. Pat. No. 5,343,406 [docket M-936] describes a lookup table FPGA in which the lookup tables which generate combinatorial functions can be loaded both from an externally supplied configuration bit stream and from the interconnect wiring within the FPGA. Thus partial reconfiguration of these FPGA chips can occur. Such FPGA chips are available from Xilinx, Inc. as the XC4000 series FPGA chips.
Several goals are important to consider when designing an FPGA. Since package pins on an FPGA are limited, it is important that loading the configuration information require as few dedicated package pins as possible in order to leave as many pins as possible for user input and output after the FPGA has been configured. (Using certain pins for loading data during configuration and then making them available for another purpose after configuration does not limit the number of pins available for user logic.) Also, the structure of the FPGA should require that as few additional components as possible be added to the board in which the FPGA is to be placed. (One purpose of using an FPGA is to reduce board part count). It is also important to some users that the FPGA configuration structure allow for partial and fast reconfiguration. It is further beneficial for a user to be able to access internal gates and registers during operation. (A system for allowing a user to access internal gates and registers during operation is described in Patent Cooperation Treaty patent application serial No. WO 94/10754 published 11 May 1994 [docket MA-002]).
Present FPGAs attempt to meet these conflicting goals by providing a variety of programming modes (serial bit stream load, parallel bit stream load, loading under control of a microprocessor, etc.). Offering these options requires a relatively complex set of programming logic on the FPGA. Some modes require more pins and others require more programming time. For example, serial mode uses only one data pin whereas parallel mode may require 8 or 16 data pins. But serial mode takes at least 8 or 16 times as long to load the configuration. Not all the pins used during configuration are dedicated to that purpose. However, selecting between these modes has required dedicating a set of pins on the FPGA to selecting the mode.
In present RAM addressable FPGAs some of the pins of the FPGA are dedicated to address lines, data lines, and other control lines for loading the configuration memory, while other pins are dedicated to input and output of user logic. FIG. 1 shows such an FPGA chip and the relationships between external pads, the FPGA user logic structures, and the configuration memory which configures the user logic. It is convenient to visualize the FPGA as formed in first and second stories, a first story holding the configuration information which selects the functions performed by the FPGA, and a second story which performs the function selected by the user. FIG. 1 illustrates the FPGA in this manner. (Physically, the configuration memory and the user logic are formed on the same substrate of an integrated circuit structure. This structure is described in PCT application serial No. WO 94/10754 published May 11, 1994.)
As shown in FIG. 1, some of the pads are for accessing user logic 19 and others are for addressing and loading configuration memory 25. The pad drivers 18 are configured by a user-generated enable signal to determine whether a particular user logic pad 16 is an input pad, an output pad, or unused. Switches such as switch 15 are configured by the underlying configuration memory 25 to transfer signals between the pad drivers 18 and the internal user logic 19. Such internal user logic is discussed in detail by the present inventor in Patent Cooperation Treaty patent application serial No. WO 94/10754 published 11 May 1994. Pads R0 through R3, R/W, CE, CK, RST, C0 through C2. D0 through D7 and their related pins (not shown in FIG. 1) are dedicated to the configuration function. A commercially available device typically has more pads for both configuration and user logic than shown in FIG. 1.
Configuration memory 25 is loaded by addressing a memory cell or memory word as is done in a conventional RAM. Row and column address busses 22 and 27 carry address signals which are decoded by row and column decoders 21 and 26, and connect a selected word of configuration memory 25 to configuration data bus 23 to be read or written. Pads D0 through D7 are coupled to configuration data bus 23.
FIG. 2 shows the relationship between the address and data busses, the row and column decode structures, the eight bit drivers associated with each word, and the data locations in the configuration memory array 25. Such structures are well known in the art. Betty Prince in “Semiconductor Memories” ©1983, 1991 by John Wiley & Sons discusses such structures at pages 149-174.
Also shown in FIG. 1 is memory load control unit 24. Control unit 24 enables row and column decoders 21 and 26 in response to well known clock, chip enable, and reset signals from pads CE, CK and RST respectively. Memory control unit 24, in response to a read/write signal on pad R/W, determines whether pads D0 through D7 will have an input configuration for writing or an output configuration for reading data bus 23.
If the structure of FIG. 1 is to be reconfigured or partially reconfigured during operation, an external device such as a microprocessor addresses portions of the configuration memory and loads new data into those locations.
FIG. 3A shows the relationship between parts of the FPGA user logic of FIG. 1, namely a pad 16, the related pad driver 18, and a switch 15 in the user logic. In FIG. 3A, switch 15, which in FIG. 3A is located at the east edge of the FPGA, sends and receives signals between user logic at the left and the external pad 16 and pin 17 at the right. Lines extending to the left of switch 15 are of three different lengths as indicated by their numerical representation. For example, line E16B is 16 cells long and carries signals in the east direction, line E4B is four cells long going east, and line EB is one cell long going east. Line WB is one cell long going west.
Such a hierarchy of line lengths is shown in FIG. 3B, where line 34 is 16 cells long (only partly shown) going east, line 26 is four cells long going east, line 22 is one cell long going east and line 24 is one cell long going west. Switches 19 and 20 in the interior core of the user logic shown in FIG. 3B comprise a plurality of multiplexers each programmable by bits in the configuration memory 25 (see FIG. 1) to connect their input and output signals as desired by a user. This is discussed in more detail in PCT patent application publication number WO 94/10754 mentioned above.
FIG. 4 shows the internal structure of the pad driver 18 and the related switch of FIG. 3A. As shown in FIG. 4, switch 15 includes eight multiplexers 41 through 48, each for providing one of the output signals WB, W4B, W16B, WA, W4A, W16A, EN, and OUT. Input signals to these eight multiplexers are selected from the east-going input signals E16B, E4B, EB, E16A, F4A, EA, and the pad signal PADIN provided by pad driver 18.
Also shown in FIG. 4, pad driver 18 includes tristate output buffer 78 for providing output signal OUT to pad 16 under control of enable signal EN. The slew rate (switching speed) of output buffer 78 is also selectable by the user through memory cell SLEW. If pad driver 18 is configured to serve as an input driver, EN is set to make buffer 78 inactive. In the event that the chip is put into a package in which no pin 17 is connected, pullup control transistor TPUP is turned on by memory cell PUP to connect pullup resistor RPUP to the input terminal of input buffer 79 so the input voltage will not float to an intermediate state and drain power.
In FIG. 4, dashed lines are used to indicate configuration memory cells which control multiplexers and transistors in the switch and pad driver. The dashes suggest that the configuration memory cells are not visible in the picture. One can envision the memory cells as on a lower plane, as discussed above in connection with FIG. 1. In some cases, the memory cell is not directly connected to the multiplexer or transistor as shown, but is gated, for example through an AND gate which typically receives a global enable input. Signals from the memory cells which control the pullup transistor and slew rate on the output buffer are typically gated, and enable multiplexer 47 is typically controllable to provide a disabling output signal regardless of the values in its configuration memory cells. Such gating structures are not shown but are well known.
As illustrated in FIG. 1, the same pad driver circuit 18 shown in FIG. 4 is used for address and data pads which access configuration memory 25. For address pads, since the address lines are input only, the enable line EN is tied to ground and the OUT line is tied to either power or ground.
The present invention allows the same pad to be used for both configuration and user interface, makes partial dynamic reconfiguration particularly convenient, and offers the user powerful new choices for controlling logic functions from within the FPGA and new choices for interfacing with structures outside the FPGA. It also allows the FPGA chip to be loaded with configuration information either from parallel address and data pins or from a serial data pin.
In accordance with the present invention, in an FPGA integrated circuit chip, a programmable switch is placed between the pins or pads of the chip and the internal circuitry of the chip. The internal circuitry includes logic which is accessed by a user during operation of the FPGA and configuration memory which controls the functions performed by the FPGA chip. In the present invention, the programmable switch adopts an initial state upon power-up to connect selected external pins to the configuration memory so that the configuration memory can be loaded. However, the configuration memory programs not only the internal circuitry accessed by the user but also the programmable switch itself. Thus as configuration proceeds, or after configuration is completed, the programmable switch can be reconfigured to connect signal lines of the FPGA user logic to lines for addressing or controlling the configuration memory which were initially loaded from external pins.
In particular, a programmable switch which is initially configured to connect its related pad or pads to configuration control lines such as a chip enable line or a serial data input line can later be configured to connect an internally generated signal or signals to the line or lines and thus override any external signal which would have been connected to that line or lines.
To provide for both parallel and serial configuration, in addition to the address and data pads which can be connected by programmable switches to internal address and data lines, additional pins are designated to select between serial and parallel loading and to control the serial loading. Internal to the FPGA chip, a serial-to-parallel interface structure is provided which can receive a serial bit stream comprising both configuration data and an address for the data, and apply the data to the addressed location just as if the data had been applied to external data pins. The programmable switch can be configured by the serial bit stream to change the source or destination of these serial bit stream control signals. For one example, one of the additional pins designated to control serial loading can be a “wait” pin, which is initially configured to receive an external wait signal and is later configured to override the wait signal with an internally generated signal when the serial bit stream is completed.
As one example of what can be accomplished with the present invention, a user could include in the user logic which is loaded during initial configuration, an address decoder which decodes microprocessor read/write cycles and produces related signals for selecting the particular integrated circuit chip, thereby removing the need for separate chips to decode addresses. This example application is discussed in detail below.
For another example, if control signals on certain pins are not needed all the time, then these pins can be reused to route other user signals into the array. If pins are used this way, appropriate constant values are placed onto the lines which carry these control signals.
In the present invention, a simple programming logic structure provides a general purpose programming interface. If complex programming logic is required by the user, the simple programming logic structure can be supplemented by user logic in the core of the device which is accessed by reconfiguring the programmable switch.
To achieve this new flexibility, a set of switches are manufactured to connect the pads of the chip to the programming logic of the chip and also to the core logic of the chip as selected by the user. In one embodiment all but three external pins are connected to programmable switches which provide this option. Upon power-up of the chip, a logical zero appears in each cell of the configuration memory, causing each programmable switch to connect its pad to the programming logic which programs configuration memory, so that the programming logic can receive instructions from an external source and control programming of the core logic of the chip. Since among functions which can be programmed into the FPGA are connections to and configuration of these programmable switches, the configuration of these programmable switches can be changed from their initial configurations. Thus powerful new options are made available to the user through this relatively simple change in the FPGA chip architecture.
FIG. 1 shows one FPGA chip and the relationships between external pads, the FPGA user logic structures and the configuration memory which configures the user logic.
FIG. 2 shows the row and column address structure of the circuit of FIG. 1.
FIG. 3A shows the relationship between parts of the FPGA user logic of FIG. 1, namely a pad, the related pad driver, and a switch in the user logic.
FIG. 3B shows a portion of user logic which may be used with the invention, illustrating a hierarchical interconnect structure.
FIG. 4 shows the internal structure of the pad driver and the related switch of FIG. 3A.
FIG. 5 shows a structural relationship between a pad, a pad driver, a portion of the FPGA core logic, and the FPGA configuration memory according to the invention, illustrating that the underlying configuration memory controls the pad drivers, the programmable switch and the user logic.
FIG. 6A shows the relationship between parts of the FPGA user logic of the invention, namely a pad at the north edge of the FPGA, the related pad driver, a programmable switch in the user logic, and signals accessed by the programmable switch.
FIG. 6B shows the relationship between a pad at the east edge of the FPGA, the related pad driver, a programmable switch in the user logic, and signals accessed by the programmable switch.
FIG. 6C shows the relationship between signals generated by the programmable switches of FIGS. 6A and 6B and the signal lines in the memory control structure which carry these signals.
FIG. 7 shows a first embodiment of the pad driver and switch of the present invention.
FIG. 8 shows a second embodiment of the programmable switch and pad driver of the present invention.
FIG. 9A shows a logic cell of the type which may be used in FIG. 3B and which may be used with the switch of the present invention.
FIG. 9B shows a four-by-four cell block with the pattern of routing lines which connect the M output signals from multiplexer 57 of FIG. 9A to switches surrounding the four-by-four cell block.
FIG. 9C illustrates the arrangement of ME signals provided to switches 734 at the east edge of the chip.
FIG. 10 shows a novel function unit which may operate in the logic cell of FIG. 9A.
FIG. 11 shows a padless switch and its connections to a related switch and pad of the type shown in FIG. 7.
FIG. 12 illustrates a structure which provides a global clock signal from an external pad to a programmable switch and further provides the global clock signal to a gating device.
FIGS. 13A through 13D illustrate switches provided in one embodiment at locations throughout the user logic structure.
FIG. 14 shows a state machine representation of the operation of a serial interface structure with which the invention may be used.
FIG. 15 shows a timing diagram illustrating the global clock signal GClk, the SEClk signal at half the global frequency, and the SEData signal for the serial interface of FIG. 14.
FIG. 16 shows several FPGAs connected to a printed circuit board so that they can be configured from a single serial PROM.
FIG. 17 shows an application of the programmable switch of the invention to modify a chip enable signal.
FIGS. 18A and 18B show two structures for validating configuration data.
FIG. 5 shows one structural relationship between pads, a programmable switch, the FPGA user logic, and the configuration memory according to the invention. Programmable switch 34 can access both the configuration memory 38 and the user logic 39. Programmable switch 34 can send and receive data to and from user logic 39 as indicated by the bidirectional bus 35 and can also send and receive data from configuration memory 38 as indicated by bidirectional bus 36. FIG. 5 illustrates that the underlying configuration memory 38 controls the pad drivers 33, the programmable switch 34 and the user logic 39. The pads 31 and pad drivers 33 connect to programmable switch 34. Connections which programmable switch 34 can make include:
1. apply an input signal from a pad 31 to a line of bus 35 to the FPGA user logic 39, thereby allowing a user to apply an input signal to the FPGA user logic;
2. apply an input signal from a pad 31 to a line of bus 36 as a control line (address, data, chip enable, read/write, clock, etc. depending upon which pad is used) to configuration memory 38, thereby allowing external signals to change the configuration of user logic 39;
3. apply an input signal from a pad 31 to a line of bus 36 as a control line (address, data, chip enable, read/write, etc.) to configuration memory 38, thereby allowing external signals to change the configuration of the programmable switch itself;
4. take a user logic output signal applied to a line of bus 35 and apply it through one of pad drivers 33 to a pad 31 thereby providing a chip output signal;
5. read a value in configuration memory 38 onto a line of bus 36 and then apply it to an input terminal in FPGA user logic 39 via bus 35;
6. read a value in configuration memory 38 onto a line of bus 36 and apply it on a line 32 to a pad 31.
7. connect internal signal lines (word, bit) 40 which control configuration memory 38 through bus 35 to user logic 39;
8. take a user logic output signal applied to a line of bus 35 and apply it as one of several control signals for writing to a memory location in configuration memory 38, whereby user logic 39 changes the FPGA configuration;
9. perform a two-step process of applying an external signal via bus 35 to user logic 39, which applies a logic function of this signal to another line of bus 35, and use the output of this logic function to control configuration memory 38; and
10. apply an output signal from the configuration memory 38 via bus 36 to user logic 39, which modifies the signal, then apply the modified signal taken from bus 36 through a pad driver 33 to an output pad 31.
The above list is not exhaustive. Many other options are offered to an FPGA user by the novel switch 34.
FIG. 6A shows in more detail the relationship provided by the invention between parts of the FPGA, namely a pad at the north edge of the FPGA, the related pad driver 33, a programmable switch 634-N in the user logic, and signals accessed by the programmable switch 634-N. In the embodiment of FIG. 6A, switch 634-N is one of many switches which make up switch 34 of FIG. 5. Each connects to a separate pad 16. Pad driver 33 is controlled by three control signals PULL DOWN, PULL UP, and SLEW derived from three configuration memory cells, in a way similar to the structure of FIG. 4. Switch 634-N at the north edge of the chip receives three input signals derived from three lines which control the configuration memory. Signals INB in one embodiment can be used to provide a data signal on a data line which writes to the configuration memory and signal OUTB can be derived from that same data line. The ENB signal (which enables switch 634-N to forward signal OUTB, as will be shown below in connection with FIG. 6C) is derived from a control unit for controlling configuration memory in response to well-known signals such as clock, read/write, and chip enable signals. The WORD signal is derived from a word line in the configuration memory. In this embodiment, word lines extend vertically through the chip are accessed by switches at the north and south edges of the chip. Signal lines extending downward from switch 634-N connect to a user logic array such as shown in FIG. 3B. The embodiment of FIG. 6A differs from that of FIG. 3B in that it includes a fourth level of hierarchy having routing lines N64 and S64 which are 64 cells long. Additionally a line MN is of a length between one and four cells, and connects to a selected point in a four-cell block, as will be discussed in connection with FIGS. 9A and 9B.
FIG. 6B shows the relationship between a pad at the east edge of the FPGA, the related pad driver, a programmable switch in the user logic, and signals accessed by the programmable switch. In switch 634-E of FIG. 6B, signals from the programming structure include a bit line rather than a word line.
FIG. 6C shows connections to the programming structure of the signals INB, ENB, OUTB, WORD, and BIT which were illustrated in FIGS. 6A and 6B. To access a bit or word in the configuration memory, many signals must work together. The configuration memory 38 of FIG. 6C includes words of 32 bits, each word being addressed by a row and column address. Address lines A0 through A5 address rows and address lines A6 through A10 address columns. Each combination of row and column addresses selects one 32-bit word. When a word is selected, the 32 bits of that word are read from or written to data lines D0 through D31. Each bit of the addressed word is read from a different line OUTB by a different switch 634 or written to a corresponding line INB by the corresponding switch 634.
Although FIGS. 6A through 6C show embodiments in which one switch 634 corresponds to one pad 16, other embodiments of switch 34 include lines which connect internal signals to more than one pad. Multiple switches 634 in FIG. 6C receive the same ENB input signal, and derive corresponding EN signals, one for each pad, for enabling pad driver output signals OUT.
First Embodiment, FIG. 7
FIG. 7 shows one embodiment of the pad driver and switch of the present invention. In this embodiment, a plurality of switches 634 are provided as part of programmable switch 34 of FIG. 5B, one switch 634 for every row or column of cells of user logic. (For cells, see FIG. 3B, cells 12.) Every switch 634 has the ability to route either a user logic signal or a control logic signal to or from pad 16. The control logic signals include chip enable, read/write, address, and data. This means that the pins and pads which provide these control signals during configuration after power-up are not necessarily used for addressing and loading configuration data but may also be used to interface with the user logic. Likewise, a signal generated by the user logic can be applied to one of the control inputs of the configuration memory.
Looking at FIG. 7, signal lines at the left connect programmable switch 634 to user logic and thus form part of bus 35 (see FIG. 5). Signal lines at the top of the figure connect to the control lines for addressing, reading, writing to configuration memory and thus form part of bus 36 of FIG. 5. Extending into switch 634 from bus 36, an enable signal ENB, which is generated by control logic for loading configuration memory 38 (see FIG. 6C), modifies a user output signal OUTEN through NAND gate 101 to generate the enable signal EN controlling output buffer 78. Since the OUTEN signal is generated by user logic, both the configuration control logic and the user's logic affects the value of the EN signal.
As shown in FIG. 7, output data signal OUTB on bus 36 is applied to multiplexer 98. User logic output signal UOUT is also applied to multiplexer 98. When the output enable signal OUTEN as optionally inverted by multiplexer 97 is logical zero, the user output signal UOUT is applied by multiplexer 98 as signal OUT through buffer 78 to pad 16. Thus pad 16 carries a signal generated by user logic 39. When the optionally inverted OUTEN signal from multiplexer 97 is logical one, if the control logic enable signal ENB is low (thus causing NAND gate 101 to generate a logical one EN signal) the configuration data output signal OUTB is applied to pad 16. If control logic enable signal ENB is high, pad 16 receives a high impedance if PUP and PDN are both zero and receives a constant if PUP or PDN is high.
Input line IN from pad driver 633 can be applied both to user logic via multiplexers 73 and 99 and to the configuration memory control structure via multiplexer 74. These three multiplexers 73, 74, and 99 are controlled by bits in the configuration memory (as suggested by the dashed lines around memory cells 82, 83, and 84). Multiplexer 99 can apply either a delayed version of the signal or a passed-through version of the signal to line DELIN as selected by configuration memory cell 84. Multiplexer 73 selects between signal DELIN and a user logic generated signal USIG from bus 35 and sends the selected signal UIN on bus 35 to user logic. Switch 634 can also apply the externally derived signal IN to bus 36 for use as a configuration memory control signal if configuration memory cell 83 has been programmed to forward this IN signal. Alternatively, memory cell 83 can cause one of the user logic signals E16 to be a control signal for configuration memory.
Second Embodiment. FIGS. 8-10
The embodiment of FIG. 8 has the ability to interact with several signals for accessing the configuration memory through buses 36 and 40 as well as accessing several routing lines in the user logic through bus 35. The embodiment of FIG. 8 sits at the east edge of an FPGA logic structure having four levels of interconnect hierarchy. Multiplexers 93 through 96 drive west-going lines W, W4, W16, and W64 having lengths indicated by their suffixes and perform functions similar to multiplexer 73 of FIG. 7. East-going lines E, E4, E16, and E64 provide east-going signals on lines of the indicated lengths. East-going signal ME is of another length, in one embodiment one to four cells long (discussed below with reference to FIGS. 9A and 9B). Multiplexers of FIG. 8 having the same label as multiplexers of FIG. 7 perform the same function.
FIG. 9A shows one of the cells 12 illustrated in FIG. 3B. Three input multiplexers 58, 60, and 62 provide a selected input signal X1, X2, and X3 to function unit FU. Four output multiplexers 50, 52, 54, and 56 provide output signals going north, south, east, and west respectively. These output signals are derived from input signals from north, south, east and west as shown in FIG. 9A and also from the signal F, which is the output signal from function unit FU. Multiplexer 57 provides as an output signal the X2 or X3 signal and thus allows a signal coming in on one of the length-one or length-four lines to be provided as an output signal M.
FIG. 9B shows a four-by-four cell block and shows the pattern of routing lines which connect the M output signals from multiplexer 57 in a single cell of FIG. 9A to switches surrounding the four-by-four cell block. The destination of the M output signal of FIG. 9A depends upon where cell 12 is positioned within the four-by-four cell block. As shown in FIG. 9B, the M output signal from cell 12-11 at the upper left corner of a four-by-four cell group is provided to switches to the east and west of the four-by-four cell group. The M output signal from cell 12-12 is provided to switches to the north and west of the four-by-four cell group. The M output signal from cell 12-13 is provided to switches to the north and east of the four-by-four cell group. The M output signal from cell 12-14 is provided to switches to the north and south of the four-by-four cell group. In the second row, the M output signal from cell 12-21 is provided to switches to the north and west; from cell 12-22 to the east and west; from cell 12-23 to the north and south; and from cell 12-24 to the north and east. Similar sets of connections are provided for the third and fourth rows as shown. Thus, in the core of the chip, four M signals are provided to each switch. These are in addition to the signals illustrated in FIG. 3B.
The arrangement of connecting lines allows a bus to turn a corner from vertical or horizontal wires or be rearranged or split using the M signals from multiplexers 97 of FIG. 9A. As can be seen in FIG. 9A, multiplexer 57 receives the X2 and X3 input signals, which can each be derived from length-one or length-four signals from any of the four directions. For example, in FIG. 9B, cells 12-11, 12-22, 12-33, and 12-44 could derive signals from the south and direct these signals to the east or west. Likewise, cells 12-41, 12-32, 12-23, and 12-14 can derive signals from switches to the west and direct these signals to the north or south. Cells not on the diagonal of the four-by-four block can fan out signals in two right angle directions. These turns are made without using up the length-one wires. This combination of connections adds only two horizontal metal lines per row of cells and two vertical metal lines per column of cells, so very little metal area is consumed. Further, the structure illustrated in FIG. 9B requires only one two-to-one multiplexer in each cell and thus consumes very little area. The routing flexibility from adding multiplexer 57 and its related output lines requires only one additional memory cell in the configuration memory. Multiplexer 57 reuses signals X2 and X3 generated by multiplexers 60 and 62. Many cell functions do not require both the X2 and the X3 multiplexers, some cells have unused function units, and a function unit might already have selected the desired input line to drive X2 or X3. Thus, there is a good chance of having an X2 or X3 multiplexer output signal which can be used by multiplexer 57 with no sacrifice to other parts of a user's design. The routing flexibility from adding multiplexer 57 and its related output lines also helps the routability of random logic designs.
At the edge of the chip, only two signals would be provided to switch 734, since no logic cells exist between switch 734 and the pads. However, in the embodiment of FIGS. 8-12, only one M signal is provided to switch 734.
FIG. 9C illustrates the arrangement of ME signals provided to switches 734 at the east edge of the chip. These are illustrated in FIG. 8 (east edge of the chip) as signals ME. Many other combinations are of course possible in other embodiments.
Register Protect Structure
Returning to FIG. 10, another feature of function unit FU achieves an important advantage. As discussed above, input signals X1, X2, and X3 are generated by user logic. Lines WORD, {overscore (BIT0)}, BIT1, BIT1 and BIT2, are part of the configuration memory programming structure for reading and writing the memory cells in the configuration memory and these lines can also be used to read and write registers 111 which are part of the user logic. A register protect multiplexer 104 can be programmed to select whether a signal from the user logic or a signal from the structure which controls configuration memory will be allowed to write to register 111. When register protect bit RP in configuration memory is logical zero, the combinatorial output from multiplexer 103 is forwarded to multiplexer 105 and can be loaded into register 111 in response to clock signal CLK. When the register protect bit RP is logical one, the Q output signal from register 111 is provided as input to multiplexer 105, which provides the D input to register 111. Thus the user logic, which generates the output signal from multiplexer 103 can not change the value in register 111. Even the clear signal CLR will not clear those registers which have their register protect bit RP set. In this mode, configuration memory access signals on lines WORD, BIT0, {overscore (BIT0)}, BIT1 and BIT2, can be used both to read and to write register 111. Thus an external CPU can have access to these registers while other portions of the FPGA are performing other functions and registers are being cleared with a global clear signal. Multiplexer 109, which receives both the combinatorial and sequential outputs of function unit FU allows an external CPU or other device to access the combinatorial output of multiplexer 103 as well as the output of register 111.
Connecting the WORD, BIT0, {overscore (BIT0)}, BIT1 and BIT2 lines to provide signals through the programmable switches to the user logic allows the user logic to detect and act on register accesses which are made through the configuration memory addressing structure.
Register Protect with Snapshot Feature
In some applications it is desirable to be able to take a snapshot of the state of an FPGA comprising both configuration information and the state of registers, save this snapshot in external memory, re-configure the FPGA to perform another task and then restore the snapshot of the state of the FPGA from the external memory so that the FPGA logic can start from where it left off. This is analogous to ‘swapping in’ and ‘swapping out’ a process on a conventional computer which has a multi-process operating system. So the term ‘swapping out’ can be used for saving the snapshot and ‘swapping in’ for restoring it. To make the snapshot feature possible when there is a register protect multiplexer 104 in every cell, it is necessary to be able to stop the Global Clock signal (GCLK) to the user logic without stopping the clock to the processor interface. In addition, all registers in the user logic must be clocked from GCLK and there must be no registers or latches built from gates in the user logic. It is necessary to turn off GCLK to the user logic because it will take many processor cycles to read the entire device state. If GCLK was not turned off, some state information would change during the read process and the saved values would not reflect a single clock cycle ‘snapshot’ of the user register states. Reads to registers and configuration memory locations can take place with the user logic clock off.
Thus a gated version of the global clock UGClk for driving user logic is provided. Stopping and starting UGCLK to the array must be done cleanly so that no spurious short pulses are produced. Circuits for doing this are well known in the art, and are not described here. In FIG. 12 the global clock signal GClk is provided to a gating structure 129, which generates a global user clock signal UGClk if the STOP signal is not asserted. This signal UGClk is shown in FIGS. 13A and 13C as a selectable source for the clock signal CLK which drives user registers shown in FIG. 10.
The following steps accomplish the Snapshot Feature:
1. Turn off UGClk to the array.
2. Read configuration and state information through the configuration memory interface structure. The portion of configuration memory interface for reading state information to or from one user logic cell is shown in FIG. 10.
1. Set all RP=TRUE (configure memory to protect all registers). Setting all RP=TRUE can be done with one write cycle for the whole chip or a small number of write cycles for a given sub-area of the chip by using the wildcard addressing feature described in PCT application WO 94/10754. UGClk can be enabled or disabled because the values in the registers are to be overwritten.
2. Turn UGClk on. UGClk must be running to allow writes to registers since values are clocked into registers on the rising edge of CLK which is derived from UGClk.
3. Load register state through configuration memory interface. Even though UGClk is running, the register state will not be overwritten by user logic signals because register protect is set Thus, although many clock cycles may be required to load the registers the registers will eventually hold the correct values for the swapped out states.
4. Turn UGClk off. Writes to configuration memory do not require UGClk to the array to be running. Turning off UGClk assures that register states will not be changed even though as the correct configuration is loaded many registers will have their register protect turned off.
5. Program the configuration memory.
6. Turn UGClk on.
Logic in the FPGA starts off with the previously swapped out configuration and state.
Padless Switches
FIG. 11 shows two programmable switches which direct signals from a single pad 16. In FIG. 11, padless switch 634-N is at the north edge of the chip and programmable switch 634-E with pad 16 is at the east edge. The chip is arranged so that lines INB, OUTB, and ENB of switch 634-E connect to lines IN, OUT, and EN of switch 634-N. Thus switch 634-E can be used to direct signals either to its own lines of user logic or to switch 634-N which in turn directs signals either to its own lines of user logic or to its respective lines INB, OUTB, and ENB.
In order to avoid routing congestion, care must be taken to distribute padless switches around the chip and to distribute the programming address and data signals around the chip. In one implementation, there are 64 programmable switches on each edge of the chip, 64 pads on the north and south edges, and 57 pads on the east and west edges of the chip. There is a 32-bit data bus and a 16 bit address bus. In addition the chip receives or generates 14 control signals as follows:
read/write
chip enable
reset
serial mode load
wait
global clock
global clear
first global signal
second global signal
output enable
serial clock
serial clear
serial data
serial enable
At the west edge of the chip, every second switch receives a data bus signal. At the east edge of the chip, sixteen of the switches, preferably not adjacent, receive address signals. At the south edge, fourteen of the switches receive control signals. The seven switches on the east edge and the seven switches on the west edge which do not have associated pads are connected to the secondary ports of switches on the south edge which have their secondary ports free. In this embodiment, all the north switches, 32 west switches, 48 east switches, and 36 south switches do not have their secondary ports used.
The serial and wait control signals listed above support a mode of loading configuration data from a serial bit stream and make the memory-addressable chip described above compatible with a bit stream method of loading supported by the XC17000 family of serial configuration PROMs available from Xilinx, Inc. Such loading methods are discussed at pages 2-231 to 2-238 of the Xilinx Data Book, ©1994, available from Xilinx, Inc., 2100 Logic Drive, San Jose, Calif. 95124.
Pads which are Input Only
The address pads, that is, those pads which are initially configured as address pads, do not receive output signals from the programming structure on bus 36 (FIG. 8 or FIG. 5) since addresses are input only. It may be simpler to design all programmable switches identically, thus providing OUTB and ENB lines as with bidirectional pads such as data pads. If the lines in bus 36 are input only, the OUTB and ENB lines of switch 734 are connected to power or ground and not left floating, so that when the pad is programmed to be an address or other input pad, output buffer 78 is always disabled.
Critical Signals such as Reset and Programming Clock
Certain signals which must be externally accessible for recovering from undesirable states may not be disconnectable from the programming logic. The reset signal is an example of such a signal. For such signals, the programmable switch may still programmably connect the signal from the pad to the user logic. If pad drivers are provided for such signals and are of the same design as pad drivers described above, the EN and OUT terminals of these pad drivers may be connected to ground (or to power if appropriate) so that the output drivers are permanently disabled.
This structure removes some flexibility of the programmable switch but assures that the function, such as reset or clock, is always accessible to external control.
FIG. 12 illustrates a structure which provides a global clock signal GClk from an external pad to programmable switch 34 and further provides the global clock signal GClk to a gating device 129 which as controlled by a STOP signal generated by the configuration memory control structure either toggles the user global clock signal UGClk or stops this clock signal while the external global clock signal GClk continues to toggle. Gating device 129 preferably receives additional signals to assure that no spurious pulses are applied to the user global clock signal UGClk Such circuits are known and not described here. FIG. 12 illustrates an embodiment which provides the reset signal RST directly to configuration memory without the option of being directed elsewhere by programmable switch 34. FIG. 12 also indicates an embodiment in which an external output enable control signal OE controls pad drivers 33 directly without being programmable through programmable switch 34.
User Logic Switches Can Generate CLK and CLR
FIGS. 13A through 13D illustrate switches provided in one embodiment at locations throughout the user logic structure. FIG. 13A represents a north south switch 118NS on a north-south boundary between 4×4 groups of logic cells. Switch 118NS is similar to a switch 19 in FIG. 3B. Switches 118NS form horizontal boundaries between 4×4 groups of cells. FIG. 13B illustrates an east/west switch 118EW. Switches 118EW form east/west boundaries between 4×4 groups of cells and routes signals of various lengths as shown. In FIG. 13C, a north/south switch 120NS is illustrated. Switches 120NS form horizontal boundaries between 16×16 blocks of cells. Similarly, switches 120EW, of which one is illustrated in FIG. 13D, form vertical boundaries between 16×16 blocks of cells.
In a preferred embodiment, those portions of the switches of FIGS. 13A through 13D which are shown as having dashed line output signals are actually implemented as part of the neighboring logic cells shown in FIG. 9A and replace appropriate multiplexers in those neighboring cells.
In addition to routing signals of various lengths these switches generate certain control signals. In FIG. 13A, switch 118NS generates a clock signal CLK, which drives the clock input CLK of user registers shown in FIG. 10 and can be derived either from the global clear signal GClr or from the gated user global clock signal UGClk illustrated in FIG. 12. The clock signal CLK from one switch is also provided as the signal Clkln to the next switch directly north. User generated signals can be used as clock signals via the NOut input to the CLK multiplexer, and a clock signal CLK generated in one 4×4 block of cells can be used to drive a clock input in a cell to the north of the 4×4 block.
FIG. 13C shows a switch 120NS at a horizontal boundary of a 16×16 block of cells. In addition to routing multiplexers and the CLK multiplexer discussed above, switch 120NS includes a clear multiplexer which generates the clear signal CLR. This signal is shown in FIG. 10 to be gated with the register protect signal in AND gate 107 to drive the reset input R of register 111 in a cell of user logic. As shown in FIG. 13C the clear signal CLR can be derived from a global clear signal GClr, from the clear signal generated in the block above ClrIn, from various routing signals, and from the global clock signal UGClk.
Some of the multiplexers in FIGS. 13A through 13D are shown as providing a second optional output signal. For example, in FIG. 13A, the SOut multiplexer also provides an optional SCOut signal and the NOut multiplexer provides an optional NCOut signal. FIGS. 13B, 13C and 13D also show multiplexers with an optional second output signal having a “C” designation. This C output corresponds to the output that comes from the cell's neighbor multiplexer in FIG. 9A. For example, in FIG. 13A, the NCOut signal is selected from the four signals F, N, E and W. Of the three select bits for controlling the eight-input NOut multiplexer, the two least significant bits also control the four-input NCOut multiplexer. Thus NOut will be identical to NCOut if the NOut multiplexer is set to select one of F, N, E or W. The same arrangement exists for the other multiplexers illustrated in FIGS. 13A through 13D as having a second output. The PS4 input to the NOut multiplexer is taken from the S4 signal to the cell to the north of the cell in which the NOut multiplexer is formed (not the S4Out signal from the illustrated switch). In every case the prefix “P” indicates the input signal comes from a previous cell (upstream from the direction of signal flow).
FIGS. 13A through 13D show only one embodiment of the invention. Clearly many alternative variations on these switches can be provided.
Serial Interface Structure
In the embodiment of FIGS. 8-12, the FPGA chip can be loaded through a serial interface as well as through an addressing structure. The serial interface structure makes the FPGA with addressable configuration memory compatible with serial PROMs available from Xilinx, Inc. The serial interface structure also allows the FPGA to use most pins for user input/output while a portion of the FPGA is being configured through a few pins.
The serial interface structure provides a method of configuring the configuration memory which is independent of the CE, read/write, address, and data pins and can therefore be used conveniently to load programming information for circuitry which affects those pins.
Six signals on six pins provide for the serial interface. The six signals are
{overscore (Serial)} Selects between serial and parallel (addressable) modes of interface. (0=serial, 1=parallel)
Wait controls transitions between states in serial mode. (0=continue loading, 1=pause). The FPGA may also use an output pin driven by user logic to provide a Wait output signal for controlling slave FPGAs.
SEReset Output signal resets serial PROM address counter.
{overscore (SECE)} Used by master FPGA to enable serial PROM output.
SEClk Output from FPGA clocks serial PROM and slave FPGAs if present.
SEData Serial configuration data for configuring the FPGA.
The first signal, {overscore (Serial)} selects between loading the configuration data through address and data lines as discussed earlier, and loading a bitstream through a single pin.
State Machine Representation of Serial Interface
FIG. 14 shows a state machine representation of the operation of the serial interface structure. State 0 occurs after a global FPGA Reset signal or upon power-up of the chip.
If {overscore (Serial)} has been set to 1, operation is in the parallel mode (State 1) in which address and data pins are used to load configuration data, as will be discussed below in connection with FIG. 17 and other figures.
If {overscore (Serial)} has been set to 0, operation is in the serial mode and data are loaded as a serial bit stream. In one embodiment the bit stream includes both address and data information so that data may be loaded in any order, so that partial reconfiguration may be accomplished, and so that wild card and mask registers which allow more than one address to be loaded with the same data or allow less than a complete word to be loaded (discussed in PCT patent application WO 94/10754, mentioned above) can also be used.
If {overscore (Serial)} is 0 and the Wait pin carries a 0. the FPGA prepares to be loaded with serial data. In response to {overscore (Serial)}=0 and Wait=0, all output buffers 78 (FIG. 8) are placed into a high impedance state and pads available to a user for parallel address, parallel data, and user logic signals are pulled high (In FIG. 8, transistor TPUP is turned on.) This is achieved by a global signal which overrides the memory cell signals and remains asserted until the device is configured, which is indicated by a decoded bit pattern in a register of configuration memory cells, discussed further below. Also in response to {overscore (Serial)}=0 and Wait=0, the FPGA drives SEReset high, then {overscore (SECE)} low, then begins to toggle SEClk.
Driving SEReset high is represented by State 2 in FIG. 14. SEReset remains high for a sufficient number of cycles of the FPGA global clock to reset the serial PROM. SEReset is then deasserted.
Driving {overscore (SECE)} low is represented by State 5. {overscore (SECE)} remains low with SEClk not yet being toggled for at least a number of clock cycles sufficient to allow for the propagation delay between when the FPGA asserts the {overscore (SECE)} signal and the valid data from the serial PROM propagates back to the FPGA, in one embodiment 11 cycles of the global FPGA clock. The number depends upon the fastest expected global clock frequency.
In State 6, SEClk begins to toggle. SEClk may be some portion of the global FPGA clock frequency, for example {fraction (1/16)} or ½ the global clock frequency, and may be adjustable. The FPGA watches the serial data for a synchronization pattern, for example five zeros followed by a one, or several ones followed by a zero. To assure synchronization, the data stream may include, for example, seven ones followed by a zero while the FPGA watches for three ones followed by a zero.
When this synchronization pattern has been received, the device moves to State 3, and begins to load serial data SEData. Serial data are loaded in address/data pairs. After an address/data pair has been shifted into the FPGA, the address in the FPGA is selected, and the data are loaded into that address. This is the same operation which occurs when a parallel write occurs in parallel mode. The bits may be shifted in on the rising edge of SEClk.
Serial Timing
FIG. 15 shows a timing diagram illustrating the global clock signal GClk, the SEClk signal at half the global frequency, and the SEData signal for the serial interface of FIG. 14. The synchronization byte occurs at the beginning of SEData, and is followed by a first data word of 8 bits and an address of 16 bits. The serial interface structure allows serial data to be written to any configuration memory cell within the FPGA. This means a word can be loaded which changes the data word size or the SEClk rate for subsequent data. In the embodiment of FIG. 15, the data word size is initially 8 bits and the SEClk rate is initially set to {fraction (1/16)} the global clock rate GClk.
The first 8-bit word loaded can be addressed to the configuration memory controlling the SEClk rate and modify it to be a faster rate. In one embodiment, the SEClk rate begins at {fraction (1/16)} of the GClk rate and can be increased to, for example, ½ the global clock rate. Subsequent words are then loaded at this rate. The next data word can be addressed to the configuration memory cells controlling the data word length and modify the data word length to 32 bits. Subsequent words in the data stream are then loaded and written internally as 32-bit words. This leads to loading serial data at the fastest possible rate. In the embodiment illustrated in FIG. 15, the initial SEClk rate is ½ the GClk rate and remains at that rate. However, the length of the data word is switched from 8 bits after the first word to 32 bits, and this is the length of the second data word, as shown.
When data have been loaded, the Wait signal goes high. This may occur in two ways. First, the external Wait signal may be brought high and thus cause the corresponding internal Wait signal to go high. Second, a data-loaded bit at or near the end of the address/data pair may configure the programmable switch between the Wait pin and the Wait internal signal so that the Wait internal signal goes high.
Alternatively, if {overscore (Serial)} goes high, the device moves to State 1 and continues in parallel mode. If Wait goes high, the FPGA moves to State 4 and remains there until the Wait signal is deasserted or the FPGA is shifted into parallel mode. Because of this Wait state, the structure can be partly loaded, perform some operation desired by the user, then further loaded with different configuration data, perform another operation, and so forth. {overscore (SECE)} remains low (asserted) and SEClk toggles in states 3, 4, and 6.
Reset and Initialization
In one embodiment, when the FPGA is powered up or reset, all configuration memory is cleared, (therefore register protect feature is off) and the registers 111 within each logic cell are cleared. All I/O pads are disabled (output buffers 78 are disabled and pullup and pulldown transistors PUP and PDN are off).
On power up or after a reset pulse, the control memory must be set to a known value which ensures a low power consumption and sets the programmable switch so that external pads are coupled to the configuration memory addressing structure to permit the initial device configuration. Preferably, cell multiplexer decoding schemes are chosen so that coupling to the configuration memory addressing structure is achieved by writing 0 into all configuration memory cells. To avoid the possibility of a high power consumption caused by random values in the configuration memory persisting for some time, it is desirable that this initial clear operation operates asynchronously and does not depend on an external clock. Clearing all the configuration memory cells can be achieved by holding all bit lines at 0, all bitbar lines at 1 and all word lines at 1, thus writing 0 into all configuration memory cells simultaneously. This technique has one major problem: in the preferred embodiment of the invention there are more than 200 configuration memory cells per bit line. Theoretically all these configuration memory cells could hold ‘1’ on power up or when Reset is applied. However, in that case, the bit line buffers would have to overcome 200 configuration memory cells in parallel. This would require impractically large bit line buffers. To avoid this problem the wildcard registers described in WO 94/10754 can be used in combination with fixed delay elements to turn the word lines on over a period of time. Initially one wildcard bit is set and 2 configuration memory cells are written. After a period of time (e.g. 50 ns), the second wildcard bit is set: 4 configuration memory cells are now selected, 2 of which are known to be 0 since they were previously written. This means the bit line buffers have very little load—in the worst case two configuration memory cells pull up and two pull down—buffers need only ‘tip’ the balance. After 50 ns the next wildcard bit is set, now 8 configuration memory cells are selected, 4 of which are known to be 0. Again the bit line driver need only tip the balance—it does not need to drive 8 configuration memory cells simultaneously to the opposite state. Every 50 ns another column wildcard bit is set until all the word lines are high and the chip is cleared. At no stage do the bit line buffers have to flip more than two configuration memory cells simultaneously.
After reset is complete, an initialization sequence then occurs:
1) All control registers are cleared to disable all row and column wildcard features (for detail, see WO 94/10754). The global clock CLK which clocks registers 111 (FIG. 10) in the cells are disabled. Input buffers 79 (FIG. 8) are set to accept TTL logic thresholds. The data bus width (FIG. 2, WORD N) is set to 8 bits and the eight data bus bits are applied to all eight addressed registers. The serial configuration clock SEClk is set to {fraction (1/16)} of the FPGA global clock frequency.
2) Function units FU within the cells 12 (FIG. 9A) are configured by multiplexers 109 (FIG. 10) to provide the Q output of registers 111. Since all configuration memory values are zero, the register protect feature is off. Since the clock is off, all function units output a constant zero.
3) All multiplexers 50, 52, 54, 56 in cells 12 (FIG. 9A) provide the output of function unit FU, and therefore all output a constant zero.
4) Except for the top row of cells, all multiplexers X1, X2, X3 in cells 12 select the N input, which is a constant zero.
5) Multiplexers 57 select the X3 output, which is constant zero.
6) Switches within the array each select an input which is a constant zero.
7) Global clear is asserted by initialization logic.
Example Application of the Serial Interface, FIG. 16
In the arrangement shown in FIG. 16, several FPGAs are connected to a printed circuit board so that they can be configured from a single serial PROM. When the board is powered up or the FPGA chips are reset, the above initialization sequence occurs. After this initialization sequence is complete, the following sequence of steps may be performed in order to configure the chip.
1) The master FPGA chip enters State 2 since Wait=0 and {overscore (Serial)}=0.
2) The slave FPGA chips enter State 4 since {overscore (Serial)}=0 and Wait=1.
3) The master enters State 2 and resets the serial PROM. The Slaves wait in State 4.
4) The master enters State 5 and enables the serial PROM.
5) The master enters State 6 and waits for a synchronization pattern.
6) The master enters State 3 and starts loading data.
7) The next to last data word to be loaded modifies the configuration memory which controls the programmable switch 34 of the Wait pin on the master FPGA so that the internal value of the Wait signal goes high. One more word is loaded after this write to configuration memory. The last word loaded into the master FPGA drives the User I/O pin high, which in turn drives the Wait input of slave FPGA 1 to a low, which causes slave FPGA 1 to enter State 6.
8) The master enters State 4 but still drives SEClk and {overscore (SECE)} so that the slaves will be loaded. In State 6, slave FPGA 1 waits for a synchronization pattern.
9) When slave FPGA 1 receives a synchronization pattern, it enters State 3 and starts loading data.
10) As before, the next to last data word causes the value of the Wait signal to go high. As before, one more word is loaded after this write to configuration memory. The last word loaded into the master FPGA drives the User I/O pin high, which in turn drives the Wait input of slave FPGA 2 to a low, which causes slave FPGA 2 to enter State 6.
11) Steps 8-10 are repeated until the last slave FPGA in the chain is reached.
12) The last slave FPGA can simply return to parallel mode (State 1) and leave the master in State 4. If the master is also to be returned to parallel mode, the last slave must cause the programmable switch which drives the master's {overscore (Serial)} input line to go high. There are a number of ways to do this. One way is for one I/O pin of the last slave FPGA to be connected to a pin of the master FPGA and for the programmable switch connected to this pin to direct the signal to drive the master's {overscore (Serial)} input line high.
13) Finally, if the master's {overscore (Serial)} input line is high, the master FPGA enters State 1, stops SEClk, and deasserts {overscore (SECE)}.
Example Application of the Programmable Switch, FIG. 17
FIG. 17 shows an example application which the user may make of the programmable switch of the invention. In this example, the user wishes to modify a chip enable signal CE so that the FPGA chip responds to the chip enable signal CE only when address lines A16 through A19 are high. This example application could not be so easily accomplished by the FPGA structures of the prior art. In fact, it would typically require that a PAL chip be provided on the board with the FPGA to decode the chip enable signal before providing it to the FPGA chip. With the present invention, this function can be accomplished within the FPGA chip.
This application is now explained using both FIG. 17 and FIG. 8. Looking at FIG. 17, the user loads bits into configuration memory 38, to cause FPGA user logic 39 to form AND gates 1-4. The user also loads configuration bits to cause the CE signal to be routed to AND gate 1 and the A16 through A19 signals to be routed to AND gates 3 and 4 as shown, preferably through the serial interface. Here, the serial interface allows the user to conveniently reconfigure those switches 734 connected to the CE and address pads, without having to use the CE and address pads to access the memory bits which control their own switches. The user programs configuration memory 38 to connect AND gates 1 through 4 together as shown, and to route the output signal from AND gate 1 to the CE line which controls configuration memory 38.
To route the signals in this manner makes use of programmable switch 34 comprising a plurality of switches 734. Programmable switch 34 is programmed to receive the CE signal from an external pad and apply, it on bus 35 to an appropriate line leading into FPGA user logic 39. As shown in FIG. 17, the pad which is intended to receive the CE signal is at the west edge of the chip. However, to see the detail of a switch, we shall look at FIG. 8 and assume the CE pad is at the east edge of the chip. For this CE pad, (and other pads at the east edge of the chip) any of lines W, W16, or W64 may be selected to route the external CE signal by appropriately loading configuration memory cells which configure multiplexers 93, 95, and 96. Similarly, pads which receive address signals A16 through A19 are set to direct the signal to user logic 39 on bus 35, again through one of multiplexers 93, 95, and 96. The programmable switch which directs the CE signal to FPGA user logic 39 is also programmed to set multiplexer 74 so that the signal on line E16 is directed to line INB. Thus bus 35 carries the original CE signal to FPGA user logic 39 and then carries the modified CE signal back to switch 35 where it is directed by multiplexer 74 as the INB signal to the internal chip enable line CE which controls configuration memory 38.
Note the contrast with FIG. 1, in which the chip enable signal CE is applied directly to memory control unit 24. In FIG. 1, if a user wishes to modify a chip enable signal, it is necessary to generate a modified chip enable signal before applying it to the CE pad of FIG. 1 or to perform the inefficient step of routing the CE signal onto the chip, generating a modified signal, routing the modified signal off the chip and back to the CE input pad of the chip, a much slower sequence, which uses additional I/O pins.
Another example application is to direct the read/write signal to the user logic and combine it with address signals before generating the internal read/write signal, so that only selected addresses can be rewritten after the initial configuration.
Yet another example is to disable the read access so that a user's design can not be decompiled by another user of the design. This function is similar to the “security fuse” on a PAL.
A further example is to connect a data pad to both user logic and to the programming circuitry which normally connects to this data pad. Then when a particular sequence of data signals is passed between the external pad and certain data lines, user logic can initiate an action. For example, by copying one area of the configuration memory to another, the user logic can reconfigure the device. Or the user logic can make simple changes to the configuration such as redirecting a multiplexer to receive a different signal, or copying an external data stream into part of the configuration memory.
Validation of Configuration Data
For FPGAs which can be programmed through both a serial interface and a parallel addressing structure, it is difficult to use a checksum or CRC check to verify that configuration data have been correctly loaded. It is convenient to provide another mechanism by which the device can know that the configuration is complete and is likely to be valid. The simplest method is to dedicate a single bit of configuration memory to mark a good configuration. The user could write to this bit upon completion. However, this method has the disadvantage that a hardware fault or software bug could result in writing the required bit value when the configuration is incorrect.
To assure greater reliability, and in particular to assure that the bitstream for another device type is not loaded, a larger register is provided which must receive characters which represent the name of the device manufacturer and the part family plus an identifier for the particular die revision. In one embodiment, this register includes 128 bits. Only if the correct values are present in all 128 bits will the output buffers and certain other elements be enabled. In another embodiment, by reading this or another register, a host computer determines the type of FPGA and adjusts its own behavior accordingly, for example by choosing one of several FPGA configurations to load.
In some cases, the FPGA may be able to function differently when one of several different strings of configuration data are loaded into this register. For example, if a bitstream for a previous less capable device, or a smaller family member is loaded, the FPGA may emulate the simpler device.
FIGS. 18A and 18B show two structures for validating configuration data.
In FIG. 18A, a set of 128 configuration bits are connectected to wide AND gate AND0. Some of the cells have their Q output connected to AND gate AND0 and some have their {overscore (Q)} output connected. If the expected pattern includes a logical 0 in the bit position, the {overscore (Q)} output is connected. If the expected pattern includes a logical 1 in the bit position, the Q output is connected. For example, in FIG. 18A, the Q output of CELL1 is connected to AND gate AND0 and the {overscore (Q)} output of CELL2 is connected. A logical 1 output signal MATCH indicates a good configuration. A logical 0 indicates a failed configuration.
In FIG. 18B, a set of 128 configuration bits is again decoded. This time two AND gates AND1 and AND2 are provided and each decodes a different combination of logical 0's and logical 1's. For example, the Q output of CELL1 is connected to AND gate AND1 and the {overscore (Q)} output of CELL1 is connected to AND gate AND2. The {overscore (Q)} output of CELL2 is connected to both AND1 and AND2. Therefore AND gate AND1 provides a logical 1 MATCH1 signal in response to a different bit pattern than AND gate AND2. Since two acceptable bit patterns can be detected, the device can be programmed to respond differently to the two bit patterns. Clearly other devices than AND gates can be used to decode bit patterns, other numbers of bits can be used, different decoders can decode the output of different registers rather than the same register shown in FIG. 18B, and different decoders can decode different numbers of bits.
Though only specific embodiments of the present invention have been described here in detail, other embodiments will become obvious to those skilled in the art in light of the above description, and are intended to fall within the scope of the present invention.
Claims (59)
1. A programmable logic device comprising:
a user logic structure;
a configuration memory for controlling said user logic structure;
structure for accessing said configuration memory;
a plurality of pads for connecting external signals to said programmable logic device;
a programmable switch, said programmable switch being programmable to connect signals between said pads, said user logic structure, and said structure for accessing said configuration memory, said programmable switch being programmed by said configuration memory.
2. A programmable logic device as in claim 1 in which said programmable switch includes a multiplexer which receives as input signals a signal from one of said pads and a signal from said user logic structure and provides as output a signal to said structure for accessing said configuration memory.
3. A programmable logic device as in claim 1 in which said programmable switch includes a multiplexer which receives as input signals a signal from said user logic structure and a signal from said structure for accessing said configuration memory and provides as an output a signal to one of said pads.
4. A programmable logic device as in claim 3 in which said signal to one of said pads is programmably provided to said pad in response to an enable signal derived from said user logic structure and said structure for accessing said configuration memory.
5. A programmable logic device as in claim 3 in which said signal to one of said pads is programmably provided to said pad in response to an enable signal derived from said user logic structure.
6. A programmable logic device as in claim 1 in which said programmable switch includes a multiplexer which receives as input signals a signal from said user logic structure and a signal from one of said pads and provides as output a signal to said user logic structure.
7. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving input signals from said pads and providing one or more output signals to one or more of said pads;
a configurable memory for configuring said user logic portion; and
a switch for coupling at least one output signal from said user logic portion to said configuration memory so that said output signal can be stored in said configuration memory.
8. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving input signals from and providing one or more output signals to said pads;
a configuration memory for configuring said user logic portion;
circuitry for receiving control signals and data signals and storing said data signals in said configuration memory in response to said control signals; and
a switch for receiving an output signal from said user logic portion and applying said output signal as a control signal to said circuitry for receiving.
9. Programmable logic device of claim 8 wherein said control signal is an address signal.
10. Programmable logic device of claim 8 wherein said control signal controls whether data is to be written to or read from said configuration memory.
11. Programmable logic device of claim 8 wherein said control signal is an enable signal for said configuration memory.
12. Programmable logic device of claim 8 wherein said programmable logic device is incorporated into a system comprising a processor said processor providing address signals to said user logic, said user logic asserting a chip select function signal to said configuration memory in response to said address signals.
13. Programmable logic device of claim 8 wherein said programmable logic device receives a control signal from a source external to said programmable logic device and provides said control signal to said user logic portion, said user logic portion modifying said control signal and applying said modified control signal to said configuration memory.
14. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving input signals from and providing one or more output signals to said pads;
a configuration memory for configuring said user logic portion;
circuitry for receiving control signals and providing data signals from said configuration memory in response to said control signals; and
a switch for receiving an output signal from said user logic portion and applying said output signal as a control signal to said circuitry for receiving.
15. Programmable logic device of claim 14 wherein said control signal is an address signal.
16. Programmable logic device of claim 14 wherein said control signal controls whether data is to be written to or read from said configuration memory.
17. Programmable logic device of claim 14 wherein said control signal is an enable signal for said configuration memory.
18. Programmable logic device of claim 14 wherein said programmable logic device is incorporated into a system comprising a processor, said processor providing address signals to said user logic, said user logic asserting a chip select function signal to said configuration memory in response to said address signals.
19. Programmable logic device of claim 14 wherein said programmable logic device receives a control signal from a source external to said programmable logic device and provides said control signal to said user logic portion, said user logic portion modifying said control signal and applying said modified control signal to said configuration memory.
20. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving input signals from said pads and for providing one or more output signals on said pads;
a configuration memory for configuring said user logic portion;
a switch for receiving a first output signal from said configuration memory and a second output signal from said user logic portion and providing said first or second output signals to one of said pads, said switch being controlled by a third output signal from said user logic portion.
21. A programmable logic device comprising:
a user logic portion for performing selected logic functions;
a configuration memory for controlling the functions performed by said user logic portion;
a set of pads for receiving signals from an external source, at least some of said signals comprising data signals to be stored in said configuration memory; and
circuitry for selecting locations within said configuration memory for receiving said data signals, said locations being selected in part by said user logic portion.
22. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving signals from said pads and providing one or more output signals on one or more of said pads;
a configuration memory for controlling the function performed by said user logic portion, said user logic portion detecting the presence of selected data received on said pads and copying configuration data from one portion of said configuration memory into another portion of said configuration memory in response to the presence of said selected data.
23. A programmable logic device comprising:
a user logic portion;
a configuration memory for controlling the function performed by said user logic portion;
circuitry for receiving configuration data and storing said configuration data within said configuration memory, said circuitry comprising a switch, said switch being controlled by configuration data already received by said programmable logic device and controlling where within said configuration memory additional configuration data is to be stored.
24. A programmable logic device comprising:
a user logic portion;
a configuration memory for controlling the function performed by said user logic portion;
circuitry for receiving configuration data and storing said configuration data within said configuration memory, said user logic portion monitoring said configuration data and initiating an action in response to a predetermined pattern of data bits.
25. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving input signals from said pads and providing one or more output signals to one or more of said pads;
a configurable memory for configuring said user logic portion; and
means for coupling at least one output signal from said user logic portion to said configuration memory so that said output signal can be stored in said configuration memory.
26. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving input signals from and providing one or more output signals to said pads;
a configuration memory for configuring said user logic portion;
circuitry for receiving control signals and data signals and storing said data signals in said configuration memory in response to said control signals; and
means for receiving an output signal from said user logic portion and applying said output signal as a control signal to said circuitry for receiving.
27. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving input signals from and providing one or more output signals to said pads;
a configuration memory for configuring said user logic portion;
circuitry for receiving control signals and providing data signals from said configuration memory in response to said control signals; and
means for receiving an output signal from said user logic portion and applying said output signal as a control signal to said circuitry for receiving.
28. A programmable logic device comprising:
a set of pads for receiving signals from a source external to the programmable logic device or providing signals to a destination external to the programmable logic device;
a user logic portion for receiving input signals from said pads and for providing one or more output signals on said pads;
a configuration memory for configuring said user logic portion;
means for receiving a first output signal from said configuration memory and a second output signal from said user logic portion and providing said first or second output signals to one of said pads, said means for receiving being controlled by a third output signal from said user logic portion.
29. A programmable logic device comprising:
a user logic portion for performing selected logic functions;
a configuration memory for controlling the functions performed by said user logic portion;
a set of pads for receiving signals from an external source, at least some of said signals comprising data signals to be stored in said configuration memory; and
means for selecting locations within said configuration memory for receiving said data signals, said locations being selected in part by said user logic portion.
30. A programmable logic device comprising:
a user logic portion;
a configuration memory for controlling the function performed by said user logic portion;
circuitry for receiving configuration data and storing said configuration data within said configuration memory, said circuitry comprising means controlled by configuration data already received by said programmable logic device for controlling where within said configuration memory additional configuration data is to be stored.
31. A programmable logic device comprising:
a user logic structure;
a configuration memory for controlling said user logic structure;
a structure for accessing said configuration memory;
a plurality of pads for connecting external signals to said programmable logic device;
means for connecting signals between said pads, said user logic structure, and said structure for accessing said configuration memory, said means for connecting being controlled by said configuration memory.
32. In a programmable logic device comprising:
a) a user logic section having user memory devices;
b) a configuration memory comprising a set of memory cells for storing configuration data and for controlling the function performed by the user logic; and
c) a configuration memory interface circuit for loading data into or reading data out of said configuration memory,
a method for swapping data in and out of a configurable logic device comprising:
a) using said configuration memory interface for reading data stored in said user memory devices; and
b) using said configuration memory interface for writing new data into said user memory devices.
33. Method of claim 32 further comprising using said configuration memory interface for writing new configuration data into said configuration memory.
34. Method of claim 33 further comprising using said configuration memory interface for reading configuration data stored in said configuration memory prior to writing new configuration data into said configuration memory.
35. Method of claim 32 wherein said programmable logic device comprises a clock line for clocking said user memory devices, said method further comprising:
preventing clock signals from appearing on said clock line prior to said reading data stored in said user memory devices so that said data in said user memory devices cannot be changed by said user logic section.
36. Method of claim 32 wherein said programmable logic device comprises a set of register protect memory cells for generating a signal that prevents the user logic section from writing data to said user memory devices, said programmable logic device also comprising a clock line for clocking said user memory devices, said method comprising:
storing a value in said register protect memory cells for generating said signal that prevents the user logic section from writing data to said user memory devices, said storing being performed prior to said writing new data.
37. Method of claim 36 wherein said configuration memory comprises a set of bit lines, each of said bit lines being coupled to an associated set of memory cells within said configuration memory, each of said bit lines also being coupled to an associated set of user memory devices, wherein during said using of said configuration memory interface to write data into said user memory devices, data is communicated from said bit lines into said associated user memory devices.
38. Method of claim 32 wherein said configuration memory interface comprises address decoders for decoding an address and selecting memory cells within said configuration memory, said decoders also selecting user memory devices so that data can be used to write data into or out of selected user memory devices.
39. A programmable logic device comprising:
a programmable user logic portion for performing selected logic functions, said programmable logic user portion comprising a set of user memory cells for storing user logic signals;
a configuration memory section comprising a set of configuration memory cells, the data stored in said configuration memory section controlling the logic function performed by said user logic portion; and
a configuration memory interface for writing data to said configuration memory cells, said configuration memory interface also being coupled to said user memory cells said configuration memory interface being used to read data from said user memory cells and to write data to said user memory cells.
40. Programmable logic device of claim 39 further comprising:
a set of register protect memory cells for generating a signal that prevents said programmable user logic portion from writing data to said user memory cells when said configuration memory interface writes data into said user memory cells.
41. Programmable logic device of claim 39 wherein said configuration memory interface comprises a set of decoders for selecting memory cells within said configuration memory section, said decoders also selecting user memory cells when said configuration memory interface writes data into said user memory cells.
42. Programmable logic device of claim 39 further comprising:
a clock line for providing a clock signal to said user memory cells; and
means for preventing clock signals from appearing on said user memory cells so that data being read from said user memory cells by said configuration memory interface are not altered by said user logic portion during reading of said user memory cells.
43. Programmable logic device comprising:
a programmable user logic portion for performing selected logic functions, said user logic portion comprising user memory cells for storing user logic signals;
a configuration memory for controlling the function performed by said programmable user logic portion;
a set of input/output pads;
configuration memory interface means for receiving data from said input/output pads and storing data in said configuration memory, said configuration memory interface means also storing data in and reading data from said user memory cells.
44. In a circuit comprising a) at least one bit line; b) a set of memory cells; and c) a set of switches for coupling said memory cells to said bit line, a method for setting said memory cells to a logic value comprising:
applying a signal on said bit line, said signal corresponding to said logic value;
coupling a first subset of said memory cells to said bit line, whereby said first subset of memory cells are set to said logic value; and
thereafter coupling a second subset of memory cells to said bit line while said first subset of memory cells are coupled to said bit line, whereby said second subset of memory cells are set to said logic value.
45. Method of claim 44 wherein said applying of said signal to said bit line is accomplished using a driver circuit, and coupling said second subset of said memory cells to said bit line after said coupling of said first subset of said memory cells to said bit line prevents said first and second subsets of memory cells from overpowering said driver.
46. Structure comprising:
a bit line;
a driver for applying a value to said bit line;
a set of memory cells;
a set of switches for coupling said set of memory cells to said bit line, said driver setting said memory cells to an initial value, wherein when said driver sets said memory cells to said initial value, a first subset of switches within said set of switches closes to couple a first subset of memory cells within said set of memory cells to said bit line to set said first subset of memory cells to said initial value, and thereafter a second subset of switches within said set of switches closes to couple a second subset of memory cells within said set of memory cells to said bit lines to set said second subset of memory cells to said initial value.
47. Structure comprising:
a bit line;
a driver for applying a value to said bit line;
a set of memory cells;
switch means for coupling said set of memory cells to said bit line, said driver setting said memory cells to an initial value, wherein when said driver sets said memory cells to said initial value, said switch means couples a first subset of memory cells within said set of memory cells to said bit line to set said first subset of memory cells to said initial value, and thereafter said switch means couples a second subset of memory cells within said set of memory cells to said bit lines to set said second subset of memory cells to said initial value.
48. In a system comprising a configuration data source and a programmable logic device, and said programmable logic device comprising a register storing identifying data, a method comprising:
having said configuration data source read said identifying data in said register within said programmable logic device; and
causing said configuration data source to configure said programmable logic device by providing configuration data to said programmable logic device, said configuration data being selected in response to said identifying data.
49. Method of claim 48 wherein said configuration data source comprises a host processor.
50. In a system comprising a configuration data source and a programmable logic device, a method comprising:
causing said configuration data source to provide configuration data to said programmable logic device;
causing said programmable logic device to analyze a portion of said configuration data, and if said portion comprises a first value, using said configuration data to configure said programmable logic device, and if said portion comprises a second value, disabling the output buffers of said programmable logic device.
51. Method of claim 50 wherein said configuration data source is a host processor.
52. In a system comprising a configuration data source and a programmable logic device, a method comprising:
causing said configuration data source to provide configuration data to said programmable logic device;
causing said programmable logic device to analyze a portion of said configuration data, and if said portion comprises a first value, using said configuration data to configure said programmable logic device with said configuration data, and if said portion comprises a second value, not configuring said programmable logic device with said configuration data.
53. In a system comprising a programmable logic device, a method comprising:
providing configuration data to said programmable logic device;
causing said programmable logic device to analyze a portion of said configuration data, and if said portion comprises a first value, using said configuration data to configure said programmable logic device to behave as a first device type, and if said portion comprises a second value, using said configuration data to configure said programmable logic device to behave as a second device type.
54. A system comprising:
a configuration data source;
a programmable logic device for receiving said configuration data from said configuration data source, said programmable logic device containing a memory storing a value, said configuration data source reading said value and providing configuration data that is selected in response to said value.
55. System of claim 54 wherein said configuration data source is a host processor.
56. A system comprising:
a configuration data source; and
a programmable logic device receiving configuration data from said configuration data source, said configuration data comprising a segment, said configuration data source reading said segment, and if said segment is a first value, said programmable logic device is configured by said configuration data, and if said segment is a second value, the output buffers of said programmable logic device are disabled.
57. A system comprising:
a configuration data source; and
a programmable logic device receiving configuration data from said configuration data source, said configuration data comprising a segment, said configuration data source reading said segment, and if said segment is a first value, said programmable logic device is configured by said configuration data, and if said segment is a second value, said programmable logic device is not configured by said configuration data.
58. A system comprising:
a configuration data source; and
a programmable logic device receiving configuration data from said configuration data source said configuration data comprising a segment, said configuration data source reading said segment, and if said segment is a first value, said programmable logic device is configured by said configuration data such that said programmable logic device behaves as a first device type, and if said segment is a second value, said programmable logic device behaves as a second device type.
59. In a programmable logic device having configuration memory, logic, and pads, a switch programmable to connect:
a selected one of the pads to the configuration memory;
a selected one of the pads to a selected terminal of the logic; and
a selected terminal of the logic to the configuration memory.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/478,778 USRE37195E1 (en) | 1995-05-02 | 2000-01-06 | Programmable switch for FPGA input/output signals |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB9508931.4A GB9508931D0 (en) | 1995-05-02 | 1995-05-02 | Programmable switch for FPGA input/output signals |
GB9508931 | 1995-05-02 | ||
US08/465,134 US5705938A (en) | 1995-05-02 | 1995-09-05 | Programmable switch for FPGA input/output signals |
US09/478,778 USRE37195E1 (en) | 1995-05-02 | 2000-01-06 | Programmable switch for FPGA input/output signals |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/465,134 Reissue US5705938A (en) | 1995-05-02 | 1995-09-05 | Programmable switch for FPGA input/output signals |
Publications (1)
Publication Number | Publication Date |
---|---|
USRE37195E1 true USRE37195E1 (en) | 2001-05-29 |
Family
ID=10773878
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/465,134 Ceased US5705938A (en) | 1995-05-02 | 1995-09-05 | Programmable switch for FPGA input/output signals |
US09/478,778 Expired - Lifetime USRE37195E1 (en) | 1995-05-02 | 2000-01-06 | Programmable switch for FPGA input/output signals |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/465,134 Ceased US5705938A (en) | 1995-05-02 | 1995-09-05 | Programmable switch for FPGA input/output signals |
Country Status (2)
Country | Link |
---|---|
US (2) | US5705938A (en) |
GB (2) | GB9508931D0 (en) |
Cited By (93)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6483342B2 (en) * | 2000-05-26 | 2002-11-19 | Lattice Semiconductor Corporation | Multi-master multi-slave system bus in a field programmable gate array (FPGA) |
US6496032B1 (en) * | 1999-07-02 | 2002-12-17 | C-Link Technology | Method and structure for efficiently placing and interconnecting circuit blocks in an integrated circuit |
US20030117875A1 (en) * | 2001-12-21 | 2003-06-26 | Lee Kang Seol | Power-up signal generator for semiconductor memory devices |
US20030183404A1 (en) * | 2002-03-29 | 2003-10-02 | Barnes David Andrew | Simplifying the layout of printed circuit boards |
US20040046575A1 (en) * | 2002-03-29 | 2004-03-11 | Kabushiki Kaisha Toshiba | Semiconductor device protecting built-in transistor from the voltage applied at test mode |
US20040128474A1 (en) * | 2000-10-09 | 2004-07-01 | Martin Vorbach | Method and device |
US20040190555A1 (en) * | 2003-03-31 | 2004-09-30 | Meng David Q. | Multithreaded, multiphase processor utilizing next-phase signals |
US6847227B2 (en) * | 2001-09-18 | 2005-01-25 | Anadigm Limited | Methods and apparatus for reconfiguring programmable devices |
US20050028220A1 (en) * | 2003-03-04 | 2005-02-03 | Broadcom Corporation | Television functionality on a chip |
US20050024085A1 (en) * | 2003-07-29 | 2005-02-03 | Zheng (Jeff) Chen | Memory access via serial memory interface |
US20050036523A1 (en) * | 2003-08-14 | 2005-02-17 | Sweet James D. | System and method using an I/O multiplexer module |
US20050086462A1 (en) * | 2001-03-05 | 2005-04-21 | Martin Vorbach | Methods and devices for treating and/or processing data |
US6981090B1 (en) * | 2000-10-26 | 2005-12-27 | Cypress Semiconductor Corporation | Multiple use of microcontroller pad |
US6996713B1 (en) | 2002-03-29 | 2006-02-07 | Xilinx, Inc. | Method and apparatus for protecting proprietary decryption keys for programmable logic devices |
US7111110B1 (en) * | 2002-12-10 | 2006-09-19 | Altera Corporation | Versatile RAM for programmable logic device |
US7134025B1 (en) | 2002-03-29 | 2006-11-07 | Xilinx, Inc. | Methods and circuits for preventing the overwriting of memory frames in programmable logic devices |
US7143295B1 (en) | 2002-07-18 | 2006-11-28 | Xilinx, Inc. | Methods and circuits for dedicating a programmable logic device for use with specific designs |
US20070075736A1 (en) * | 2005-09-30 | 2007-04-05 | Goodnow Kenneth J | FPGA powerup to known functional state |
US20070075733A1 (en) * | 2005-09-30 | 2007-04-05 | International Business Machines Corporation | Fpga powerup to known functional state |
US20070150637A1 (en) * | 2002-02-18 | 2007-06-28 | Martin Vorbach | Bus systems and method for reconfiguration |
US7301822B1 (en) | 2005-05-18 | 2007-11-27 | Xilinx, Inc. | Multi-boot configuration of programmable devices |
US7358762B1 (en) * | 2005-05-18 | 2008-04-15 | Xilinx, Inc. | Parallel interface for configuring programmable devices |
US7358761B1 (en) | 2005-01-21 | 2008-04-15 | Csitch Corporation | Versatile multiplexer-structures in programmable logic using serial chaining and novel selection schemes |
US20080175262A1 (en) * | 2007-01-19 | 2008-07-24 | Fujitsu Limited | Data communication apparatus, configuration information update method, and configuration information update program |
US7558995B1 (en) * | 2005-11-21 | 2009-07-07 | Xilinx, Inc. | Method and apparatus for eliminating noise induced errors during test of a programmable logic device |
US7576561B1 (en) | 2007-11-13 | 2009-08-18 | Xilinx, Inc. | Device and method of configuring a device having programmable logic |
US7650448B2 (en) | 1996-12-20 | 2010-01-19 | Pact Xpp Technologies Ag | I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
US7657877B2 (en) | 2001-06-20 | 2010-02-02 | Pact Xpp Technologies Ag | Method for processing data |
US20100036972A1 (en) * | 2007-03-22 | 2010-02-11 | Toyota Infotechnology Center Co., Ltd. | Reconfigurable computing device and method for inspecting configuration data |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US7761845B1 (en) | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
US7782087B2 (en) | 2002-09-06 | 2010-08-24 | Martin Vorbach | Reconfigurable sequencer structure |
US7822968B2 (en) | 1996-12-09 | 2010-10-26 | Martin Vorbach | Circuit having a multidimensional structure of configurable cells that include multi-bit-wide inputs and outputs |
US7822881B2 (en) | 1996-12-27 | 2010-10-26 | Martin Vorbach | Process for automatic dynamic reloading of data flow processors (DFPs) and units with two- or three-dimensional programmable cell architectures (FPGAs, DPGAs, and the like) |
US20100272811A1 (en) * | 2008-07-23 | 2010-10-28 | Alkermes,Inc. | Complex of trospium and pharmaceutical compositions thereof |
US7825688B1 (en) | 2000-10-26 | 2010-11-02 | Cypress Semiconductor Corporation | Programmable microcontroller architecture(mixed analog/digital) |
US7840842B2 (en) | 2001-09-03 | 2010-11-23 | Martin Vorbach | Method for debugging reconfigurable architectures |
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 |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US7893724B2 (en) | 2004-03-25 | 2011-02-22 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
US20110119646A1 (en) * | 2009-11-19 | 2011-05-19 | David Murray | Integrated circuits design |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
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 |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
US8069436B2 (en) | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
US8069428B1 (en) | 2001-10-24 | 2011-11-29 | Cypress Semiconductor Corporation | Techniques for generating microcontroller configuration information |
US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US8078894B1 (en) | 2007-04-25 | 2011-12-13 | Cypress Semiconductor Corporation | Power management architecture, method and configuration system |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
US8085100B2 (en) | 2005-02-04 | 2011-12-27 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
US8089461B2 (en) | 2005-06-23 | 2012-01-03 | Cypress Semiconductor Corporation | Touch wake for electronic devices |
US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US8099618B2 (en) | 2001-03-05 | 2012-01-17 | Martin Vorbach | Methods and devices for treating and processing data |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US8120408B1 (en) | 2005-05-05 | 2012-02-21 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US8156284B2 (en) | 2002-08-07 | 2012-04-10 | Martin Vorbach | Data processing method and device |
US8160864B1 (en) | 2000-10-26 | 2012-04-17 | Cypress Semiconductor Corporation | In-circuit emulator and pod synchronized boot |
US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US8209653B2 (en) | 2001-09-03 | 2012-06-26 | Martin Vorbach | Router |
US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
US8281108B2 (en) | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
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 |
US8301872B2 (en) | 2000-06-13 | 2012-10-30 | Martin Vorbach | Pipeline configuration protocol and configuration unit communication |
US8402313B1 (en) | 2002-05-01 | 2013-03-19 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
USRE44365E1 (en) | 1997-02-08 | 2013-07-09 | Martin Vorbach | Method of self-synchronization of configurable elements of a programmable module |
US8484487B2 (en) | 2001-08-03 | 2013-07-09 | Cypress Semiconductor Corporation | Method for efficient supply of power to a microcontroller |
US8499270B1 (en) | 2007-04-25 | 2013-07-30 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US8527949B1 (en) | 2001-11-19 | 2013-09-03 | Cypress Semiconductor Corporation | Graphical user interface for dynamically reconfiguring a programmable device |
US20140044135A1 (en) * | 2012-08-10 | 2014-02-13 | Karthikeyan Sankaralingam | Lookup Engine with Reconfigurable Low Latency Computational Tiles |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US8812820B2 (en) | 2003-08-28 | 2014-08-19 | Pact Xpp Technologies Ag | Data processing device and method |
US8819505B2 (en) | 1997-12-22 | 2014-08-26 | Pact Xpp Technologies Ag | Data processor having disabled cores |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US10411710B1 (en) | 2018-12-05 | 2019-09-10 | Xilinx, Inc. | Adaptive read scheme for configuration SRAMs in a programmable device |
US10698662B2 (en) | 2001-11-15 | 2020-06-30 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
Families Citing this family (126)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356620B2 (en) * | 2003-06-10 | 2008-04-08 | Altera Corporation | Apparatus and methods for communicating with programmable logic devices |
US5794033A (en) * | 1995-10-24 | 1998-08-11 | International Business Machines Corporation | Method and system for in-site and on-line reprogramming of hardware logics with remote loading in a network device |
US5734582A (en) * | 1995-12-12 | 1998-03-31 | International Business Machines Corporation | Method and system for layout and schematic generation for heterogeneous arrays |
US6882177B1 (en) | 1996-01-10 | 2005-04-19 | Altera Corporation | Tristate structures for programmable logic devices |
US5894228A (en) * | 1996-01-10 | 1999-04-13 | Altera Corporation | Tristate structures for programmable logic devices |
GB9604496D0 (en) * | 1996-03-01 | 1996-05-01 | Xilinx Inc | Embedded memory for field programmable gate array |
US5869979A (en) * | 1996-04-05 | 1999-02-09 | Altera Corporation | Technique for preconditioning I/Os during reconfiguration |
US5977791A (en) | 1996-04-15 | 1999-11-02 | Altera Corporation | Embedded memory block with FIFO mode for programmable logic device |
US6005410A (en) * | 1996-12-05 | 1999-12-21 | International Business Machines Corporation | Interconnect structure between heterogeneous core regions in a programmable array |
DE19654846A1 (en) * | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Process for the independent dynamic reloading of data flow processors (DFPs) as well as modules with two- or multi-dimensional programmable cell structures (FPGAs, DPGAs, etc.) |
US6249143B1 (en) * | 1997-05-23 | 2001-06-19 | Altera Corporation | Programmable logic array integrated circuit with distributed random access memory array |
US9092595B2 (en) | 1997-10-08 | 2015-07-28 | Pact Xpp Technologies Ag | Multiprocessor having associated RAM units |
US6216191B1 (en) * | 1997-10-15 | 2001-04-10 | Lucent Technologies Inc. | Field programmable gate array having a dedicated processor interface |
US6091263A (en) * | 1997-12-12 | 2000-07-18 | Xilinx, Inc. | Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM |
US6172520B1 (en) * | 1997-12-30 | 2001-01-09 | Xilinx, Inc. | FPGA system with user-programmable configuration ports and method for reconfiguring the FPGA |
US6028445A (en) * | 1997-12-30 | 2000-02-22 | Xilinx, Inc. | Decoder structure and method for FPGA configuration |
US6034545A (en) * | 1998-01-30 | 2000-03-07 | Arm Limited | Macrocell for data processing circuit |
US6222757B1 (en) * | 1998-02-25 | 2001-04-24 | Xilinx, Inc. | Configuration memory architecture for FPGA |
US6034546A (en) | 1998-06-09 | 2000-03-07 | Cypress Semicondutor Corp. | High performance product term based carry chain scheme |
WO2000031652A2 (en) * | 1998-11-20 | 2000-06-02 | Altera Corporation | Reconfigurable programmable logic device computer system |
US6297666B1 (en) | 1998-11-24 | 2001-10-02 | Innovasic, Inc. | Fully programmable and configurable application specific integrated circuit |
US6301695B1 (en) | 1999-01-14 | 2001-10-09 | Xilinx, Inc. | Methods to securely configure an FPGA using macro markers |
US6324676B1 (en) | 1999-01-14 | 2001-11-27 | Xilinx, Inc. | FPGA customizable to accept selected macros |
US6160418A (en) * | 1999-01-14 | 2000-12-12 | Xilinx, Inc. | Integrated circuit with selectively disabled logic blocks |
US6357037B1 (en) | 1999-01-14 | 2002-03-12 | Xilinx, Inc. | Methods to securely configure an FPGA to accept selected macros |
US6305005B1 (en) | 1999-01-14 | 2001-10-16 | Xilinx, Inc. | Methods to securely configure an FPGA using encrypted macros |
US6262933B1 (en) | 1999-01-29 | 2001-07-17 | Altera Corporation | High speed programmable address decoder |
US6654889B1 (en) | 1999-02-19 | 2003-11-25 | Xilinx, Inc. | Method and apparatus for protecting proprietary configuration data for programmable logic devices |
US6407576B1 (en) * | 1999-03-04 | 2002-06-18 | Altera Corporation | Interconnection and input/output resources for programmable logic integrated circuit devices |
KR100761328B1 (en) * | 1999-05-07 | 2007-09-27 | 모픽스 테크놀로지 아이엔씨 | Heterogeneous programmable gate array |
GB2350456A (en) * | 1999-05-13 | 2000-11-29 | Jpc Technology Ltd | Data processing |
US6486702B1 (en) | 1999-07-02 | 2002-11-26 | Altera Corporation | Embedded memory blocks for programmable logic |
US6204687B1 (en) * | 1999-08-13 | 2001-03-20 | Xilinx, Inc. | Method and structure for configuring FPGAS |
US6728666B1 (en) * | 1999-09-13 | 2004-04-27 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Evolvable circuit with transistor-level reconfigurability |
US7072814B1 (en) | 1999-09-13 | 2006-07-04 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Evolutionary technique for automated synthesis of electronic circuits |
US6445242B2 (en) * | 1999-11-23 | 2002-09-03 | Texas Instruments Incorporated | Fuse selectable pinout package |
US6255849B1 (en) | 2000-02-04 | 2001-07-03 | Xilinx, Inc. | On-chip self-modification for PLDs |
US6519674B1 (en) * | 2000-02-18 | 2003-02-11 | Chameleon Systems, Inc. | Configuration bits layout |
US7343594B1 (en) | 2000-08-07 | 2008-03-11 | Altera Corporation | Software-to-hardware compiler with symbol set inference analysis |
AU2001281164A1 (en) | 2000-08-07 | 2002-02-18 | Altera Corporation | Inter-device communication interface |
US6931543B1 (en) | 2000-11-28 | 2005-08-16 | Xilinx, Inc. | Programmable logic device with decryption algorithm and decryption key |
US6957340B1 (en) | 2000-11-28 | 2005-10-18 | Xilinx, Inc. | Encryption key for multi-key encryption in programmable logic device |
US6441641B1 (en) | 2000-11-28 | 2002-08-27 | Xilinx, Inc. | Programmable logic device with partial battery backup |
US6981153B1 (en) | 2000-11-28 | 2005-12-27 | Xilinx, Inc. | Programmable logic device with method of preventing readback |
US6366117B1 (en) | 2000-11-28 | 2002-04-02 | Xilinx, Inc. | Nonvolatile/battery-backed key in PLD |
US7117372B1 (en) | 2000-11-28 | 2006-10-03 | Xilinx, Inc. | Programmable logic device with decryption and structure for preventing design relocation |
US6965675B1 (en) | 2000-11-28 | 2005-11-15 | Xilinx, Inc. | Structure and method for loading encryption keys through a test access port |
US7058177B1 (en) | 2000-11-28 | 2006-06-06 | Xilinx, Inc. | Partially encrypted bitstream method |
US7117373B1 (en) | 2000-11-28 | 2006-10-03 | Xilinx, Inc. | Bitstream for configuring a PLD with encrypted design data |
US9436631B2 (en) | 2001-03-05 | 2016-09-06 | Pact Xpp Technologies Ag | Chip including memory element storing higher level memory data on a page by page basis |
US9141390B2 (en) | 2001-03-05 | 2015-09-22 | Pact Xpp Technologies Ag | Method of processing data with an array of data processors according to application ID |
US9552047B2 (en) | 2001-03-05 | 2017-01-24 | Pact Xpp Technologies Ag | Multiprocessor having runtime adjustable clock and clock dependent power supply |
US9250908B2 (en) | 2001-03-05 | 2016-02-02 | Pact Xpp Technologies Ag | Multi-processor bus and cache interconnection system |
US20090300262A1 (en) * | 2001-03-05 | 2009-12-03 | Martin Vorbach | Methods and devices for treating and/or processing data |
US6605962B2 (en) * | 2001-05-06 | 2003-08-12 | Altera Corporation | PLD architecture for flexible placement of IP function blocks |
US6720796B1 (en) | 2001-05-06 | 2004-04-13 | Altera Corporation | Multiple size memories in a programmable logic device |
US7076595B1 (en) * | 2001-05-18 | 2006-07-11 | Xilinx, Inc. | Programmable logic device including programmable interface core and central processing unit |
US10031733B2 (en) | 2001-06-20 | 2018-07-24 | Scientia Sol Mentis Ag | Method for processing data |
US6536014B1 (en) * | 2001-09-26 | 2003-03-18 | International Business Machines Corporation | Reusable configuration tool |
US6798239B2 (en) * | 2001-09-28 | 2004-09-28 | Xilinx, Inc. | Programmable gate array having interconnecting logic to support embedded fixed logic circuitry |
US7420392B2 (en) * | 2001-09-28 | 2008-09-02 | Xilinx, Inc. | Programmable gate array and embedded circuitry initialization and processing |
US6781407B2 (en) | 2002-01-09 | 2004-08-24 | Xilinx, Inc. | FPGA and embedded circuitry initialization and processing |
US6983405B1 (en) | 2001-11-16 | 2006-01-03 | Xilinx, Inc., | Method and apparatus for testing circuitry embedded within a field programmable gate array |
US6996758B1 (en) | 2001-11-16 | 2006-02-07 | Xilinx, Inc. | Apparatus for testing an interconnecting logic fabric |
US6886092B1 (en) | 2001-11-19 | 2005-04-26 | Xilinx, Inc. | Custom code processing in PGA by providing instructions from fixed logic processor portion to programmable dedicated processor portion |
US6525560B1 (en) * | 2001-12-12 | 2003-02-25 | Xilinx, Inc. | Method and structure for shipping a die as multiple products |
US6820248B1 (en) | 2002-02-14 | 2004-11-16 | Xilinx, Inc. | Method and apparatus for routing interconnects to devices with dissimilar pitches |
US6976160B1 (en) | 2002-02-22 | 2005-12-13 | Xilinx, Inc. | Method and system for controlling default values of flip-flops in PGA/ASIC-based designs |
US6754882B1 (en) | 2002-02-22 | 2004-06-22 | Xilinx, Inc. | Method and system for creating a customized support package for an FPGA-based system-on-chip (SoC) |
US6934922B1 (en) | 2002-02-27 | 2005-08-23 | Xilinx, Inc. | Timing performance analysis |
US7007121B1 (en) | 2002-02-27 | 2006-02-28 | Xilinx, Inc. | Method and apparatus for synchronized buses |
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) |
US6839874B1 (en) | 2002-02-28 | 2005-01-04 | Xilinx, Inc. | Method and apparatus for testing an embedded device |
US7088767B1 (en) | 2002-03-01 | 2006-08-08 | Xilinx, Inc. | Method and apparatus for operating a transceiver in different data rates |
US7111220B1 (en) | 2002-03-01 | 2006-09-19 | Xilinx, Inc. | Network physical layer with embedded multi-standard CRC generator |
US7187709B1 (en) | 2002-03-01 | 2007-03-06 | Xilinx, Inc. | High speed configurable transceiver architecture |
US6961919B1 (en) | 2002-03-04 | 2005-11-01 | Xilinx, Inc. | Method of designing integrated circuit having both configurable and fixed logic circuitry |
WO2003079549A1 (en) * | 2002-03-18 | 2003-09-25 | Koninklijke Philips Electronics N.V. | Configuration memory implementation for lut-based reconfigurable logic architectures |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
US20060075211A1 (en) * | 2002-03-21 | 2006-04-06 | Martin Vorbach | Method and device for data processing |
US6973405B1 (en) | 2002-05-22 | 2005-12-06 | Xilinx, Inc. | Programmable interactive verification agent |
US6759869B1 (en) | 2002-06-05 | 2004-07-06 | Xilinx, Inc. | Large crossbar switch implemented in FPGA |
US6772405B1 (en) | 2002-06-13 | 2004-08-03 | Xilinx, Inc. | Insertable block tile for interconnecting to a device embedded in an integrated circuit |
US6810514B1 (en) * | 2002-07-03 | 2004-10-26 | Xilinx, Inc. | Controller arrangement for partial reconfiguration of a programmable logic device |
US7085973B1 (en) | 2002-07-09 | 2006-08-01 | Xilinx, Inc. | Testing address lines of a memory controller |
US20110238948A1 (en) * | 2002-08-07 | 2011-09-29 | Martin Vorbach | Method and device for coupling a data processing unit and a data processing array |
US7099426B1 (en) | 2002-09-03 | 2006-08-29 | Xilinx, Inc. | Flexible channel bonding and clock correction operations on a multi-block data path |
US7092865B1 (en) | 2002-09-10 | 2006-08-15 | Xilinx, Inc. | Method and apparatus for timing modeling |
US6803787B1 (en) * | 2002-09-25 | 2004-10-12 | Lattice Semiconductor Corp. | State machine in a programmable logic device |
US6917219B2 (en) * | 2003-03-12 | 2005-07-12 | Xilinx, Inc. | Multi-chip programmable logic device having configurable logic circuitry and configuration data storage on different dice |
JP2006524850A (en) * | 2003-04-04 | 2006-11-02 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | Data processing method and data processing apparatus |
US7421014B2 (en) * | 2003-09-11 | 2008-09-02 | Xilinx, Inc. | Channel bonding of a plurality of multi-gigabit transceivers |
US8768642B2 (en) | 2003-09-15 | 2014-07-01 | Nvidia Corporation | System and method for remotely configuring semiconductor functional circuits |
US8732644B1 (en) | 2003-09-15 | 2014-05-20 | Nvidia Corporation | Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits |
US8775997B2 (en) | 2003-09-15 | 2014-07-08 | Nvidia Corporation | System and method for testing and configuring semiconductor functional circuits |
US20050071730A1 (en) * | 2003-09-30 | 2005-03-31 | Lattice Semiconductor Corporation | Continuous self-verify of configuration memory in programmable logic devices |
US7206973B2 (en) * | 2003-12-11 | 2007-04-17 | Lsi Logic Corporation | PCI validation |
US8711161B1 (en) * | 2003-12-18 | 2014-04-29 | Nvidia Corporation | Functional component compensation reconfiguration system and method |
US8723231B1 (en) * | 2004-09-15 | 2014-05-13 | Nvidia Corporation | Semiconductor die micro electro-mechanical switch management system and method |
US8711156B1 (en) | 2004-09-30 | 2014-04-29 | Nvidia Corporation | Method and system for remapping processing elements in a pipeline of a graphics processing unit |
US7257750B1 (en) | 2005-01-13 | 2007-08-14 | Lattice Semiconductor Corporation | Self-verification of configuration memory in programmable logic devices |
JP2008530642A (en) * | 2005-02-07 | 2008-08-07 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | Low latency mass parallel data processor |
US7900064B2 (en) * | 2005-04-20 | 2011-03-01 | Honeywell International Inc. | Encrypted debug interface |
US7961885B2 (en) * | 2005-04-20 | 2011-06-14 | Honeywell International Inc. | Encrypted JTAG interface |
US8011005B2 (en) * | 2005-04-20 | 2011-08-30 | Honeywell International Inc. | Hardware encryption key for use in anti-tamper system |
US7327159B1 (en) * | 2005-11-28 | 2008-02-05 | Lattice Semiconductor Corporation | Interface block architectures |
US8417838B2 (en) * | 2005-12-12 | 2013-04-09 | Nvidia Corporation | System and method for configurable digital communication |
US8412872B1 (en) | 2005-12-12 | 2013-04-02 | Nvidia Corporation | Configurable GPU and method for graphics processing using a configurable GPU |
US7352602B2 (en) * | 2005-12-30 | 2008-04-01 | Micron Technology, Inc. | Configurable inputs and outputs for memory stacking system and method |
JP4887824B2 (en) * | 2006-02-16 | 2012-02-29 | 富士通セミコンダクター株式会社 | Memory system |
US7596744B1 (en) | 2006-02-24 | 2009-09-29 | Lattice Semiconductor Corporation | Auto recovery from volatile soft error upsets (SEUs) |
US8065574B1 (en) * | 2007-06-08 | 2011-11-22 | Lattice Semiconductor Corporation | Soft error detection logic testing systems and methods |
US8724483B2 (en) * | 2007-10-22 | 2014-05-13 | Nvidia Corporation | Loopback configuration for bi-directional interfaces |
US8453019B2 (en) * | 2007-11-06 | 2013-05-28 | Nvidia Corporation | Method and system for a free running strobe tolerant interface |
JP5169486B2 (en) * | 2008-05-26 | 2013-03-27 | 富士通株式会社 | FPGA configuration device, circuit board having the same, electronic device, and FPGA configuration method |
US7906983B2 (en) * | 2008-12-08 | 2011-03-15 | Intuitive Research And Technology | Programmable logic device having an embedded test logic with secure access control |
US8687639B2 (en) * | 2009-06-04 | 2014-04-01 | Nvidia Corporation | Method and system for ordering posted packets and non-posted packets transfer |
US9176909B2 (en) | 2009-12-11 | 2015-11-03 | Nvidia Corporation | Aggregating unoccupied PCI-e links to provide greater bandwidth |
US9331869B2 (en) * | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
US9330031B2 (en) | 2011-12-09 | 2016-05-03 | Nvidia Corporation | System and method for calibration of serial links using a serial-to-parallel loopback |
US8959469B2 (en) | 2012-02-09 | 2015-02-17 | Altera Corporation | Configuring a programmable device using high-level language |
CN103383543B (en) * | 2012-05-02 | 2017-08-15 | 飞思卡尔半导体公司 | On-chip system and its control module |
US9811618B1 (en) * | 2013-03-07 | 2017-11-07 | Xilinx, Inc. | Simulation of system designs |
US10396799B1 (en) * | 2017-12-12 | 2019-08-27 | Xilinx, Inc. | Circuit for and method of accessing memory elements in an integrated circuit device |
KR102605637B1 (en) * | 2018-07-27 | 2023-11-24 | 에스케이하이닉스 주식회사 | Semiconductor apparatus and data processing system |
US10852800B1 (en) * | 2019-01-25 | 2020-12-01 | Cadence Design Systems, Inc. | Multi-modal power control |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0253530A2 (en) | 1986-07-18 | 1988-01-20 | Honeywell Inc. | Dynamically reconfigurable array logic |
US5084636A (en) | 1989-12-27 | 1992-01-28 | Kawasaki Steel | Master-slave programmable logic devices |
EP0486991A2 (en) | 1990-11-19 | 1992-05-27 | Kawasaki Steel Corporation | Programmable logic device |
WO1992020157A1 (en) | 1991-05-03 | 1992-11-12 | Lattice Semiconductor Corporation | Structure and method for multiplexing pins for in-system programming |
US5237219A (en) | 1992-05-08 | 1993-08-17 | Altera Corporation | Methods and apparatus for programming cellular programmable logic integrated circuits |
USRE34363E (en) | 1984-03-12 | 1993-08-31 | Xilinx, Inc. | Configurable electrical circuit having configurable logic elements and configurable interconnects |
WO1994001867A1 (en) | 1992-07-02 | 1994-01-20 | Camarota Rafael C | Non-disruptive, randomly addressable memory system |
WO1994010754A1 (en) | 1992-11-05 | 1994-05-11 | Xilinx, Inc. | Improved configurable cellular array |
US5343406A (en) | 1989-07-28 | 1994-08-30 | Xilinx, Inc. | Distributed memory architecture for a configurable logic array and method for using distributed memory |
-
1995
- 1995-05-02 GB GBGB9508931.4A patent/GB9508931D0/en active Pending
- 1995-09-05 US US08/465,134 patent/US5705938A/en not_active Ceased
-
1996
- 1996-05-01 GB GB9609014A patent/GB2300504B/en not_active Expired - Lifetime
-
2000
- 2000-01-06 US US09/478,778 patent/USRE37195E1/en not_active Expired - Lifetime
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE34363E (en) | 1984-03-12 | 1993-08-31 | Xilinx, Inc. | Configurable electrical circuit having configurable logic elements and configurable interconnects |
EP0253530A2 (en) | 1986-07-18 | 1988-01-20 | Honeywell Inc. | Dynamically reconfigurable array logic |
US5343406A (en) | 1989-07-28 | 1994-08-30 | Xilinx, Inc. | Distributed memory architecture for a configurable logic array and method for using distributed memory |
US5084636A (en) | 1989-12-27 | 1992-01-28 | Kawasaki Steel | Master-slave programmable logic devices |
EP0486991A2 (en) | 1990-11-19 | 1992-05-27 | Kawasaki Steel Corporation | Programmable logic device |
WO1992020157A1 (en) | 1991-05-03 | 1992-11-12 | Lattice Semiconductor Corporation | Structure and method for multiplexing pins for in-system programming |
US5237218A (en) | 1991-05-03 | 1993-08-17 | Lattice Semiconductor Corporation | Structure and method for multiplexing pins for in-system programming |
US5237219A (en) | 1992-05-08 | 1993-08-17 | Altera Corporation | Methods and apparatus for programming cellular programmable logic integrated circuits |
WO1994001867A1 (en) | 1992-07-02 | 1994-01-20 | Camarota Rafael C | Non-disruptive, randomly addressable memory system |
WO1994010754A1 (en) | 1992-11-05 | 1994-05-11 | Xilinx, Inc. | Improved configurable cellular array |
Non-Patent Citations (1)
Title |
---|
Betty Prince, "Semiconductor Memories", copyright 1983, 1991, John Wiley & Sons, pp. 149-174. |
Cited By (153)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7822968B2 (en) | 1996-12-09 | 2010-10-26 | Martin Vorbach | Circuit having a multidimensional structure of configurable cells that include multi-bit-wide inputs and outputs |
US8156312B2 (en) | 1996-12-09 | 2012-04-10 | Martin Vorbach | Processor chip for reconfigurable data processing, for processing numeric and logic operations and including function and interconnection control units |
US7650448B2 (en) | 1996-12-20 | 2010-01-19 | Pact Xpp Technologies Ag | I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures |
US7899962B2 (en) | 1996-12-20 | 2011-03-01 | Martin Vorbach | I/O and memory bus system for DFPs and units with two- or multi-dimensional programmable cell architectures |
US8195856B2 (en) | 1996-12-20 | 2012-06-05 | Martin Vorbach | I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures |
US7822881B2 (en) | 1996-12-27 | 2010-10-26 | Martin Vorbach | Process for automatic dynamic reloading of data flow processors (DFPs) and units with two- or three-dimensional programmable cell architectures (FPGAs, DPGAs, and the like) |
USRE45109E1 (en) | 1997-02-08 | 2014-09-02 | Pact Xpp Technologies Ag | Method of self-synchronization of configurable elements of a programmable module |
USRE44365E1 (en) | 1997-02-08 | 2013-07-09 | Martin Vorbach | Method of self-synchronization of configurable elements of a programmable module |
USRE45223E1 (en) | 1997-02-08 | 2014-10-28 | Pact Xpp Technologies Ag | Method of self-synchronization of configurable elements of a programmable module |
US8819505B2 (en) | 1997-12-22 | 2014-08-26 | Pact Xpp Technologies Ag | Data processor having disabled cores |
US8468329B2 (en) | 1999-02-25 | 2013-06-18 | Martin Vorbach | Pipeline configuration protocol and configuration unit communication |
US8726250B2 (en) | 1999-06-10 | 2014-05-13 | Pact Xpp Technologies Ag | Configurable logic integrated circuit having a multidimensional structure of configurable elements |
US8312200B2 (en) | 1999-06-10 | 2012-11-13 | Martin Vorbach | Processor chip including a plurality of cache elements connected to a plurality of processor cores |
US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
US6496032B1 (en) * | 1999-07-02 | 2002-12-17 | C-Link Technology | Method and structure for efficiently placing and interconnecting circuit blocks in an integrated circuit |
US6483342B2 (en) * | 2000-05-26 | 2002-11-19 | Lattice Semiconductor Corporation | Multi-master multi-slave system bus in a field programmable gate array (FPGA) |
US8301872B2 (en) | 2000-06-13 | 2012-10-30 | Martin Vorbach | Pipeline configuration protocol and configuration unit communication |
US8471593B2 (en) | 2000-10-06 | 2013-06-25 | Martin Vorbach | Logic cell array and bus system |
US9047440B2 (en) | 2000-10-06 | 2015-06-02 | Pact Xpp Technologies Ag | Logical cell array and bus system |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US20040128474A1 (en) * | 2000-10-09 | 2004-07-01 | Martin Vorbach | Method and device |
US10020810B2 (en) | 2000-10-26 | 2018-07-10 | Cypress Semiconductor Corporation | PSoC architecture |
US8555032B2 (en) | 2000-10-26 | 2013-10-08 | Cypress Semiconductor Corporation | Microcontroller programmable system on a chip with programmable interconnect |
US8358150B1 (en) | 2000-10-26 | 2013-01-22 | Cypress Semiconductor Corporation | Programmable microcontroller architecture(mixed analog/digital) |
US6981090B1 (en) * | 2000-10-26 | 2005-12-27 | Cypress Semiconductor Corporation | Multiple use of microcontroller pad |
US10725954B2 (en) | 2000-10-26 | 2020-07-28 | Monterey Research, Llc | Microcontroller programmable system on a chip |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US9766650B2 (en) | 2000-10-26 | 2017-09-19 | Cypress Semiconductor Corporation | Microcontroller programmable system on a chip with programmable interconnect |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US9843327B1 (en) | 2000-10-26 | 2017-12-12 | Cypress Semiconductor Corporation | PSOC architecture |
US8736303B2 (en) | 2000-10-26 | 2014-05-27 | Cypress Semiconductor Corporation | PSOC architecture |
US10261932B2 (en) | 2000-10-26 | 2019-04-16 | Cypress Semiconductor Corporation | Microcontroller programmable system on a chip |
US10248604B2 (en) | 2000-10-26 | 2019-04-02 | Cypress Semiconductor Corporation | Microcontroller programmable system on a chip |
US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US8160864B1 (en) | 2000-10-26 | 2012-04-17 | Cypress Semiconductor Corporation | In-circuit emulator and pod synchronized boot |
US7825688B1 (en) | 2000-10-26 | 2010-11-02 | Cypress Semiconductor Corporation | Programmable microcontroller architecture(mixed analog/digital) |
US20050086462A1 (en) * | 2001-03-05 | 2005-04-21 | Martin Vorbach | Methods and devices for treating and/or processing data |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US8099618B2 (en) | 2001-03-05 | 2012-01-17 | Martin Vorbach | Methods and devices for treating and processing data |
US8145881B2 (en) | 2001-03-05 | 2012-03-27 | Martin Vorbach | Data processing device and method |
US8312301B2 (en) | 2001-03-05 | 2012-11-13 | Martin Vorbach | Methods and devices for treating and processing data |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US9075605B2 (en) | 2001-03-05 | 2015-07-07 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7657877B2 (en) | 2001-06-20 | 2010-02-02 | Pact Xpp Technologies Ag | Method for processing data |
US8484487B2 (en) | 2001-08-03 | 2013-07-09 | Cypress Semiconductor Corporation | Method for efficient supply of power to a microcontroller |
US8869121B2 (en) | 2001-08-16 | 2014-10-21 | Pact Xpp Technologies Ag | Method for the translation of programs for reconfigurable architectures |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US8209653B2 (en) | 2001-09-03 | 2012-06-26 | Martin Vorbach | Router |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
US7840842B2 (en) | 2001-09-03 | 2010-11-23 | Martin Vorbach | Method for debugging reconfigurable architectures |
US8429385B2 (en) | 2001-09-03 | 2013-04-23 | Martin Vorbach | Device including a field having function cells and information providing cells controlled by the function cells |
US8407525B2 (en) | 2001-09-03 | 2013-03-26 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
US8069373B2 (en) | 2001-09-03 | 2011-11-29 | Martin Vorbach | Method for debugging reconfigurable architectures |
US6847227B2 (en) * | 2001-09-18 | 2005-01-25 | Anadigm Limited | Methods and apparatus for reconfiguring programmable devices |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US8069428B1 (en) | 2001-10-24 | 2011-11-29 | Cypress Semiconductor Corporation | Techniques for generating microcontroller configuration information |
US8793635B1 (en) | 2001-10-24 | 2014-07-29 | Cypress Semiconductor Corporation | Techniques for generating microcontroller configuration information |
US10466980B2 (en) | 2001-10-24 | 2019-11-05 | Cypress Semiconductor Corporation | Techniques for generating microcontroller configuration information |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US10698662B2 (en) | 2001-11-15 | 2020-06-30 | 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 |
US8527949B1 (en) | 2001-11-19 | 2013-09-03 | Cypress Semiconductor Corporation | Graphical user interface for dynamically reconfiguring a programmable device |
US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
US8370791B2 (en) | 2001-11-19 | 2013-02-05 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US8533677B1 (en) | 2001-11-19 | 2013-09-10 | Cypress Semiconductor Corporation | Graphical user interface for dynamically reconfiguring a programmable device |
US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
US6885605B2 (en) | 2001-12-21 | 2005-04-26 | Hynix Semiconductor Inc. | Power-up signal generator for semiconductor memory devices |
US20030117875A1 (en) * | 2001-12-21 | 2003-06-26 | Lee Kang Seol | Power-up signal generator for semiconductor memory devices |
US8281108B2 (en) | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
US20070150637A1 (en) * | 2002-02-18 | 2007-06-28 | Martin Vorbach | Bus systems and method for reconfiguration |
US8127061B2 (en) | 2002-02-18 | 2012-02-28 | Martin Vorbach | Bus systems and reconfiguration methods |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
US6864719B2 (en) * | 2002-03-29 | 2005-03-08 | Kabushiki Kaisha Toshiba | Semiconductor device protecting built-in transistor from the voltage applied at test mode |
US20030183404A1 (en) * | 2002-03-29 | 2003-10-02 | Barnes David Andrew | Simplifying the layout of printed circuit boards |
US7200235B1 (en) | 2002-03-29 | 2007-04-03 | Xilinx, Inc. | Error-checking and correcting decryption-key memory for programmable logic devices |
US7219237B1 (en) | 2002-03-29 | 2007-05-15 | Xilinx, Inc. | Read- and write-access control circuits for decryption-key memories on programmable logic devices |
US6876227B2 (en) * | 2002-03-29 | 2005-04-05 | Parama Networks, Inc. | Simplifying the layout of printed circuit boards |
US7366306B1 (en) | 2002-03-29 | 2008-04-29 | Xilinx, Inc. | Programmable logic device that supports secure and non-secure modes of decryption-key access |
US7373668B1 (en) | 2002-03-29 | 2008-05-13 | Xilinx, Inc. | Methods and circuits for protecting proprietary configuration data for programmable logic devices |
US6996713B1 (en) | 2002-03-29 | 2006-02-07 | Xilinx, Inc. | Method and apparatus for protecting proprietary decryption keys for programmable logic devices |
US7389429B1 (en) | 2002-03-29 | 2008-06-17 | Xilinx, Inc. | Self-erasing memory for protecting decryption keys and proprietary configuration data |
US7134025B1 (en) | 2002-03-29 | 2006-11-07 | Xilinx, Inc. | Methods and circuits for preventing the overwriting of memory frames in programmable logic devices |
US20040046575A1 (en) * | 2002-03-29 | 2004-03-11 | Kabushiki Kaisha Toshiba | Semiconductor device protecting built-in transistor from the voltage applied at test mode |
US7162644B1 (en) | 2002-03-29 | 2007-01-09 | Xilinx, Inc. | Methods and circuits for protecting proprietary configuration data for programmable logic devices |
US8402313B1 (en) | 2002-05-01 | 2013-03-19 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
US7143295B1 (en) | 2002-07-18 | 2006-11-28 | Xilinx, Inc. | Methods and circuits for dedicating a programmable logic device for use with specific designs |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
US8281265B2 (en) | 2002-08-07 | 2012-10-02 | Martin Vorbach | Method and device for processing data |
US8156284B2 (en) | 2002-08-07 | 2012-04-10 | Martin Vorbach | Data processing method and device |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US7782087B2 (en) | 2002-09-06 | 2010-08-24 | Martin Vorbach | Reconfigurable sequencer structure |
US8803552B2 (en) | 2002-09-06 | 2014-08-12 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
US7928763B2 (en) | 2002-09-06 | 2011-04-19 | Martin Vorbach | Multi-core processing system |
US7761845B1 (en) | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
US7111110B1 (en) * | 2002-12-10 | 2006-09-19 | Altera Corporation | Versatile RAM for programmable logic device |
US7961255B2 (en) | 2003-03-04 | 2011-06-14 | Broadcom Corporation | Television functionality on a chip |
US7489362B2 (en) | 2003-03-04 | 2009-02-10 | Broadcom Corporation | Television functionality on a chip |
US20050028220A1 (en) * | 2003-03-04 | 2005-02-03 | Broadcom Corporation | Television functionality on a chip |
US8854545B2 (en) | 2003-03-04 | 2014-10-07 | Broadcom Corporation | Television functionality on a chip |
US20040190555A1 (en) * | 2003-03-31 | 2004-09-30 | Meng David Q. | Multithreaded, multiphase processor utilizing next-phase signals |
US6903574B2 (en) * | 2003-07-29 | 2005-06-07 | Lattice Semiconductor Corporation | Memory access via serial memory interface |
US20050024085A1 (en) * | 2003-07-29 | 2005-02-03 | Zheng (Jeff) Chen | Memory access via serial memory interface |
WO2005013324A2 (en) * | 2003-07-29 | 2005-02-10 | Lattice Semiconductor Corporation | Memory access via serial memory interface |
WO2005013324A3 (en) * | 2003-07-29 | 2005-06-02 | Lattice Semiconductor Corp | Memory access via serial memory interface |
US20050036523A1 (en) * | 2003-08-14 | 2005-02-17 | Sweet James D. | System and method using an I/O multiplexer module |
US7532648B2 (en) * | 2003-08-14 | 2009-05-12 | Broadcom Corporation | System and method using an I/O multiplexer module |
US8812820B2 (en) | 2003-08-28 | 2014-08-19 | Pact Xpp Technologies Ag | Data processing device and method |
US7893724B2 (en) | 2004-03-25 | 2011-02-22 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
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 |
US7358761B1 (en) | 2005-01-21 | 2008-04-15 | Csitch Corporation | Versatile multiplexer-structures in programmable logic using serial chaining and novel selection schemes |
US8085100B2 (en) | 2005-02-04 | 2011-12-27 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
US8120408B1 (en) | 2005-05-05 | 2012-02-21 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
US7301822B1 (en) | 2005-05-18 | 2007-11-27 | Xilinx, Inc. | Multi-boot configuration of programmable devices |
US7358762B1 (en) * | 2005-05-18 | 2008-04-15 | Xilinx, Inc. | Parallel interface for configuring programmable devices |
US8089461B2 (en) | 2005-06-23 | 2012-01-03 | Cypress Semiconductor Corporation | Touch wake for electronic devices |
US7489163B2 (en) | 2005-09-30 | 2009-02-10 | International Business Machines Corporation | FPGA powerup to known functional state |
US20070075736A1 (en) * | 2005-09-30 | 2007-04-05 | Goodnow Kenneth J | FPGA powerup to known functional state |
US20070075733A1 (en) * | 2005-09-30 | 2007-04-05 | International Business Machines Corporation | Fpga powerup to known functional state |
US7282949B2 (en) | 2005-09-30 | 2007-10-16 | International Business Machines Corporation | FPGA powerup to known functional state |
US20080030226A1 (en) * | 2005-09-30 | 2008-02-07 | Goodnow Kenneth J | Fpga powerup to known functional state |
US7304493B2 (en) | 2005-09-30 | 2007-12-04 | International Business Machines Corporation | FPGA powerup to known functional state |
US7558995B1 (en) * | 2005-11-21 | 2009-07-07 | Xilinx, Inc. | Method and apparatus for eliminating noise induced errors during test of a programmable logic device |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
US8717042B1 (en) | 2006-03-27 | 2014-05-06 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US20080175262A1 (en) * | 2007-01-19 | 2008-07-24 | Fujitsu Limited | Data communication apparatus, configuration information update method, and configuration information update program |
US8073988B2 (en) * | 2007-03-22 | 2011-12-06 | Toyota Infotechnology Center., Ltd. | Reconfigurable computing device and method for inspecting configuration data |
US20100036972A1 (en) * | 2007-03-22 | 2010-02-11 | Toyota Infotechnology Center Co., Ltd. | Reconfigurable computing device and method for inspecting configuration data |
US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US8476928B1 (en) | 2007-04-17 | 2013-07-02 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US8909960B1 (en) | 2007-04-25 | 2014-12-09 | Cypress Semiconductor Corporation | Power management architecture, method and configuration system |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US8078894B1 (en) | 2007-04-25 | 2011-12-13 | Cypress Semiconductor Corporation | Power management architecture, method and configuration system |
US8499270B1 (en) | 2007-04-25 | 2013-07-30 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
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 |
US7576561B1 (en) | 2007-11-13 | 2009-08-18 | Xilinx, Inc. | Device and method of configuring a device having programmable logic |
US20100272811A1 (en) * | 2008-07-23 | 2010-10-28 | Alkermes,Inc. | Complex of trospium and pharmaceutical compositions thereof |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US20110119646A1 (en) * | 2009-11-19 | 2011-05-19 | David Murray | Integrated circuits design |
US8386980B2 (en) * | 2009-11-19 | 2013-02-26 | Duolog Research Limited | Integrated circuits design |
US9231865B2 (en) * | 2012-08-10 | 2016-01-05 | Wisconsin Alumni Research Foundation | Lookup engine with reconfigurable low latency computational tiles |
US20140044135A1 (en) * | 2012-08-10 | 2014-02-13 | Karthikeyan Sankaralingam | Lookup Engine with Reconfigurable Low Latency Computational Tiles |
US10411710B1 (en) | 2018-12-05 | 2019-09-10 | Xilinx, Inc. | Adaptive read scheme for configuration SRAMs in a programmable device |
Also Published As
Publication number | Publication date |
---|---|
GB9508931D0 (en) | 1995-06-21 |
GB2300504B (en) | 1999-08-04 |
GB9609014D0 (en) | 1996-07-03 |
GB2300504A (en) | 1996-11-06 |
US5705938A (en) | 1998-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE37195E1 (en) | Programmable switch for FPGA input/output signals | |
US5737235A (en) | FPGA with parallel and serial user interfaces | |
US5298805A (en) | Versatile and efficient cell-to-local bus interface in a configurable logic array | |
US5317209A (en) | Dynamic three-state bussing capability in a configurable logic array | |
US5809281A (en) | Field programmable gate array with high speed SRAM based configurable function block configurable as high performance logic or block of SRAM | |
US6198304B1 (en) | Programmable logic device | |
US6501677B1 (en) | Configuration memory architecture for FPGA | |
JP4785224B2 (en) | Programmable logic integrated circuit | |
US8305110B2 (en) | Non-sequentially configurable IC | |
US5737766A (en) | Programmable gate array configuration memory which allows sharing with user memory | |
US7109752B1 (en) | Configurable circuits, IC's, and systems | |
US5552722A (en) | Mask registor for a configurable cellular array | |
US6066961A (en) | Individually accessible macrocell | |
US6069489A (en) | FPGA having fast configuration memory data readback | |
US5892370A (en) | Clock network for field programmable gate array | |
US7157933B1 (en) | Configurable circuits, IC's, and systems | |
EP0450811A2 (en) | Integrated circuit | |
US5952846A (en) | Method for reducing switching noise in a programmable logic device | |
JPH04271614A (en) | Programmable logic circuit | |
US5563528A (en) | Multiplexer for programmable logic device | |
US9946667B2 (en) | Microcontroller with configurable logic array | |
US6029236A (en) | Field programmable gate array with high speed SRAM based configurable function block configurable as high performance logic or block of SRAM | |
US5452229A (en) | Programmable integrated-circuit switch | |
EP0769223B1 (en) | Programmable switch for fpga input/output signals | |
US7417455B2 (en) | Programmable function generator and method operating as combinational, sequential and routing cells |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Fee payment |
Year of fee payment: 4 |
|
SULP | Surcharge for late payment | ||
FPAY | Fee payment |
Year of fee payment: 8 |
|
REMI | Maintenance fee reminder mailed | ||
FPAY | Fee payment |
Year of fee payment: 12 |
|
SULP | Surcharge for late payment |
Year of fee payment: 11 |
|
AS | Assignment |
Owner name: XILINX, INC.,CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:KEAN, THOMAS A.;REEL/FRAME:024424/0383 Effective date: 19950601 |