US20070241774A1 - Reconfigurable ic that has sections running at different looperness - Google Patents
Reconfigurable ic that has sections running at different looperness Download PDFInfo
- Publication number
- US20070241774A1 US20070241774A1 US11/082,196 US8219605A US2007241774A1 US 20070241774 A1 US20070241774 A1 US 20070241774A1 US 8219605 A US8219605 A US 8219605A US 2007241774 A1 US2007241774 A1 US 2007241774A1
- Authority
- US
- United States
- Prior art keywords
- configurable
- circuit
- interconnect
- circuits
- configuration data
- 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.)
- Granted
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/17724—Structural details of logic blocks
- H03K19/17732—Macroblocks
-
- 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/1774—Structural details of routing resources for global signals, e.g. clock, reset
-
- 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/17752—Structural details of configuration resources for hot 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/17748—Structural details of configuration resources
- H03K19/17756—Structural details of configuration resources for partial configuration or partial reconfiguration
Abstract
Description
- The present invention is directed towards reconfigurable IC that has sections running at different looperness.
- The use of configurable integrated circuits (“IC's”) has dramatically increased in recent years. One example of a configurable IC is a field programmable gate array (“FPGA”). An FPGA is a field programmable IC that often has logic circuits, interconnect circuits, and input/output (i/o) circuits. The logic circuits (also called logic blocks) are typically arranged as an internal array of circuits. These logic circuits are typically connected together through numerous interconnect circuits (also called interconnects). The logic and interconnect circuits are often surrounded by the I/O circuits.
-
FIG. 1 illustrates an example of aconfigurable logic circuit 100. This logic circuit can be configured to perform a number of different functions. As shown inFIG. 1 , thelogic circuit 100 receives a set ofinput data 105 and a set ofconfiguration data 110. The configuration data set is stored in a set ofSRAM cells 115. From the set of functions that thelogic circuit 100 can perform, the configuration data set specifies a particular function that this circuit has to perform on the input data set. Once the logic circuit performs its function on the input data set, it provides the output of this function on a set ofoutput lines 120. Thelogic circuit 100 is said to be configurable, as the configuration data set “configures” the logic circuit to perform a particular function, and this configuration data set can be modified by writing new data in the SRAM cells. Multiplexers and look-up tables are two examples of configurable logic circuits. -
FIG. 2 illustrates an example of aconfigurable interconnect circuit 200. Thisinterconnect circuit 200 connects a set ofinput data 205 to a set ofoutput data 210. This circuit receivesconfiguration data bits 215 that are stored in a set of SRAM cells 220. The configuration bits specify how the interconnect circuit should connect the input data set to the output data set. Theinterconnect circuit 200 is said to be configurable, as the configuration data set “configures” the interconnect circuit to use a particular connection scheme that connects the input data set to the output data set in a desired manner. Moreover, this configuration data set can be modified by writing new data in the SRAM cells. Multiplexers are one example of interconnect circuits. -
FIG. 3A illustrates a portion of a prior art configurable IC 300. As shown in this figure, the IC 300 includes an array ofconfigurable logic circuits 305 and configurable interconnect circuits 310. The IC 300 has two types ofinterconnect circuits Interconnect circuits 310 a connectinterconnect circuits 310 b andlogic circuits 305, while interconnectcircuits 310 b connectinterconnect circuits 310 a toother interconnect circuits 310 a. - In some cases, the IC 300 includes
numerous logic circuits 305 and interconnect circuits 310 (e.g., hundreds, thousands, hundreds of thousands, etc. of such circuits). As shown inFIG. 3A , eachlogic circuit 305 includes additional logic and interconnect circuits. Specifically,FIG. 3A illustrates alogic circuit 305 a that includes twosections 315 a that together are called a slice. Each section includes a look-up table (LUT) 320, auser register 325, amultiplexer 330, and possibly other circuitry (e.g., carry logic) not illustrated inFIG. 3A . - The
multiplexer 330 is responsible for selecting between the output of theLUT 320 or theuser register 325. For instance, when thelogic circuit 305 a has to perform a computation through theLUT 320, themultiplexer 330 selects the output of theLUT 320. Alternatively, this multiplexer selects the output of theuser register 325 when thelogic circuit 305 a or a slice of this circuit needs to store data for a future computation of thelogic circuit 305 a or another logic circuit. -
FIG. 3B illustrates an alternative way of constructing half a slice in alogic circuit 305 a ofFIG. 3A . Like the half-slice 315 a inFIG. 3A , the half-slice 315 b inFIG. 3B includes a look-up table (LUT) 320, auser register 325, amultiplexer 330, and possibly other circuitry (e.g., carry logic) not illustrated inFIG. 3B . However, in the half-slice 315 b, theuser register 325 can also be configured as a latch. In addition, the half-slice 315 b also includes amultiplexer 350. In half-slice 315 b, themultiplexer 350 receives the output of theLUT 320 instead of the register/latch 325, which receives this output in half-slice 315 a. Themultiplexer 350 also receives a signal from outside of the half-slice 315 b. Based on its select signal, themultiplexer 350 then supplies one of the two signals that it receives to the register/latch 325. In this manner, the register/latch 325 can be used to store (1) the output signal of theLUT 320 or (2) a signal from outside the half-slice 315 b. - The use of user registers to store such data is at times undesirable, as it typically requires data to be passed at a clock's rising edge or a clock's fall edge. In other words, registers often do not provide flexible control over the data passing between the various circuits of the configurable IC. In addition, the placement of a register or a latch in the logic circuit increases the signal delay through the logic circuit, as it requires the use of at least one
multiplexer 330 to select between the output of a register/latch 325 and the output of aLUT 320. - Accordingly, there is a need for a configurable IC that has a more flexible approach for storing data and passing the data. More generally, there is a need for more flexible storage mechanisms in configurable IC's.
- Some embodiments provide a reconfigurable IC that includes at least two sections, each with several configurable circuits. Each configurable circuit configurably performs a set of operations. Each section stores multiple configuration data sets for each configurable circuit. Each configuration data set for a particular configurable circuit specifies the operation that the particular configurable circuit has to perform from the circuit's set of operations, where the configurable circuits of different sections iterate through different numbers of configuration data sets.
- For instance, in some embodiments, each configurable circuit of one section iterates through eight configuration data sets, while each configuration circuit of another section iterates through six configuration data sets. Also, in some embodiments, the first and second sections have the ability to store the same number of configuration data sets for each configurable circuit in the two sections, but a configurable circuit in a first section iterates through a smaller sub-set of the configuration data sets than a configurable circuit in a second section.
- In some embodiments, the reconfigurable IC further includes for each particular configurable circuit, configuration data supplying circuitry for supplying configuration data sets to the particular configurable circuit. In some embodiments, a first configurable data supplying circuitry in the first section is controlled differently than a second configurable data supplying circuitry in the second section, in order to allow the first configurable data supplying circuitry to iterate through the smaller sub-set of the configuration data sets for the configurable circuit of the first configurable data supplying circuitry.
- The novel features of the invention are set forth in the appended claims. However, for purpose of explanation, several embodiments of the invention are set forth in the following figures.
-
FIG. 1 illustrates an example of a configurable logic circuit. -
FIG. 2 illustrates an example of a configurable interconnect circuit. -
FIG. 3A illustrates a portion of a prior art configurable IC. -
FIG. 3B illustrates an alternative way of constructing half a slice in a logic circuit ofFIG. 3A . -
FIG. 4 illustrates an example of a D-latch. -
FIG. 5 illustrates an example of a register, which is a D flip flop. -
FIG. 6 illustrates a prior art implementation of a register with a pair of latches. -
FIG. 7 illustrates an example of a configurable logic circuit that can perform a set of functions. -
FIG. 8 illustrates an example of a configurable interconnect circuit. -
FIG. 9 illustrates an example of a reconfigurable logic circuit. -
FIG. 10 illustrates an example of a reconfigurable interconnect circuit. -
FIG. 11 illustrates an example of a primary clock signal and a sub-cycle clock signal. -
FIG. 12 illustrates an example of a configurable node array that includes configurable nodes that are arranged in rows and columns. -
FIG. 13 illustrates an example of a connection between two nodes. -
FIG. 14 illustrates an example of a connection between two circuits in a configurable circuit arrangement. -
FIG. 15 illustrates a configurable node array formed by numerous configurable interconnect circuits arranged in numerous rows and columns. -
FIG. 16 illustrates an interconnect circuit configured as a latch. -
FIG. 17 illustrates an interconnect circuit configured as a latch that includes a multiplexer. -
FIG. 18 illustrates an interconnect circuit that is formed by a seven-to-one multiplexer, a latch and a logic gate. -
FIG. 19 illustrates an interconnect circuit that includes the multiplexer and latch ofFIG. 18 , as well as two reconfiguration multiplexers. -
FIG. 20 illustrates a configurable node arrangement that has interconnect/storage circuits appearing throughout the arrangement according to a particular pattern. -
FIG. 21 illustrates another configuration circuit arrangement. -
FIG. 22 illustrates another alternative implementation of an interconnect/storage circuit. -
FIG. 23 illustrates a traditional complementary pass logic (CPL) implementation of an eight-to-one multiplexer. -
FIG. 24 illustrates an alternative implementation of an output stage of a multiplexer/latch. -
FIG. 25 illustrates yet another implementation of the output stage of the multiplexer/latch. -
FIG. 26 illustrates a CPL implementation of a two tier multiplexer structure that generates a second signal and its complement -
FIG. 27 illustrates an example of the signals CLK, ST0, and ST1. -
FIG. 28 illustrates a circuit that generates the ENABLE andENABLE signals that are used to drive the cross-coupling transistors of the multiplexer ofFIG. 22 . -
FIG. 29 illustrates a CPL implementation of how some embodiments generate the signals that drive the third-set pass transistors inFIG. 22 . -
FIG. 30 illustrates a circuit representation of a storage/interconnect circuit. -
FIGS. 31-36 illustrate a configurable circuit architecture that is formed by numerous configurable tiles that are arranged in an array with multiple rows and columns. -
FIG. 37 provides one possible physical architecture of the configurable IC illustrated inFIG. 31 . -
FIG. 38 illustrates an example of how the differential pairs of clock signals CLK andCLK are distributed by some embodiments -
FIG. 39 illustrates a reconfigurable IC that includes three global clock generators, two for generating the clock signals associate with the two bus interfaces and one for receiving the design clock signal. -
FIG. 40 illustrates a CPL-implementation of a local sub-cycle signal generator of some embodiments. -
FIG. 41 illustrates the timing between the CLK signals and the two sets of four one-hot signals. -
FIG. 42 illustrates an example of a CPL-implementation of eight storage elements and two modified multiplexers, which are driven by two sets of four “one-hot” signals. -
FIG. 43 illustrates an example of a CPL-implementation of a local sub-cycle signal generator that is used by some embodiments to generate the two sets of four one-hot signals. -
FIG. 44 illustrates the timing between the CLK signals and the two sets of three one-hot signals. -
FIG. 45 illustrates an example of a CPL-implementation of six storage elements and two modified multiplexers and, which are driven by two sets of three “one-hot” signals. -
FIG. 46 illustrates an example of a CPL-implementation of a local sub-cycle signal generator that is used by some embodiments to generate the two sets of three one-hot signals. -
FIG. 47 illustrates an example of one such variable local sub-cycle signal generator of some embodiments of the invention. -
FIG. 48 illustrates the configurable IC of some embodiments that takes advantage of the variable local sub-cycle signal generator. -
FIG. 49 illustrates an alternative two-tiered interconnect structure of the invention. -
FIG. 50 illustrates a portion of a configurable IC of some embodiments of the invention. -
FIG. 51 illustrates a more detailed example of data between a configurable node and a configurable circuit arrangement that includes configuration data that configure the nodes to perform particular operations. -
FIG. 52 illustrates a system on chip (“SoC”) implementation of a configurable IC. -
FIG. 53 illustrates an embodiment that employs a system in package (“SiP”) implementation for a configurable IC. -
FIG. 54 conceptually illustrates a more detailed example of a computing system that has an IC, which includes one of the invention's configurable circuit arrangements. - In the following description, numerous details are set forth for purpose of explanation. However, one of ordinary skill in the art will realize that the invention may be practiced without the use of these specific details. For instance, not all embodiments of the invention need to be practiced with the specific number of bits and/or specific devices (e.g., multiplexers) referred to below. In other instances, well-known structures and devices are shown in block diagram form in order not to obscure the description of the invention with unnecessary detail.
- Some embodiments of the invention are configurable IC's that have (1) logic circuits, (2) interconnect circuits, and (3) storage elements for storing data computed by the logic circuits and routed between the logic circuits by the interconnect circuits. Some or all of the storage elements are located at the interconnect circuits in some embodiments. The interconnect circuits are the storage elements in some embodiments, while they contain the storage elements in other embodiments.
- The storage elements in some embodiments are asynchronous storage elements that are responsive to asynchronous control signals. The use of asynchronous circuits allows these embodiments to store and retrieve data flexibly from the storage elements without restrictions that are due to synchronizing clock signals. The storage elements in some embodiments are level-sensitive storage elements, instead of edge-sensitive (i.e., transition sensitive) storage elements. In some embodiments, some or all the asynchronous. Level-sensitive state elements are latches. Some embodiments build these latches in the output stage of some or all of the interconnect circuits. Latches have less overhead for setup and hold than transition-sensitive state elements, like user registers. Before describing several such embodiments, several terms and concepts are described in Section I.
- I. Terms and Concepts
- A. Latches and Registers
- A latch is one type of a storage element.
FIG. 4 illustrates an example of a D-latch 400. As shown in this figure, thelatch 400 has aninput terminal 405, anoutput terminal 410, and an enableterminal 415. Based on the signal on the enable terminal 415, the latch either holds its output constant (i.e., is closed) or passes its input to its output (i.e., is open). For instance, the latch 400 (1) might pass the signal on itsinput terminal 405 to itsoutput terminal 410 when the enable signal is not active (e.g., when the signal on the enable terminal 415 is low), and (2) might store a value and hold its output constant at this value when the enable signal is active (e.g., when the signal is high). Such a latch typically stores the value that it was receiving when the enable signal transitions from its inactive state (e.g., low) to its active state (e.g., high). - A register is a storage element that operates based on a clock.
FIG. 5 illustrates an example of aregister 500, which is a D flip flop. As shown in this figure, theregister 500 includes aninput terminal 505, anoutput terminal 510, and aclock terminal 515. Based on the signal on theclock terminal 515, the register either holds its output constant or passes its input to its output. For instance, when the clock makes a transition (e.g., goes from low to high), theregister 500 samples its input. Next, when the clock is constant or makes the other transition, theregister 500 provides at itsoutput 510 the value that it most recently sampled at its input. In a register, the input data typically must be present a particular time interval before and after the active clock transition. -
FIG. 6 illustrates a prior art implementation of aregister 600 with a pair oflatches first latch 605 is referred to as the master latch, while thesecond latch 610 is referred to as the slave latch. The master and slave receive aclock signal 620 as their enable signals, but they receive the clock signal at opposite polarities because of theinverter 640. - Assuming that the
latches register 600 operates as follows. Initially, when theclock signal 620 is low, themaster latch 605 is open, while theslave latch 610 is closed. When theclock signal 620 then goes high, theslave latch 610 opens and themaster latch 605 closes. This, in turn, causes theslave latch 610 to output the signal that was appearing at theinput line 630 of the master latch right before the master latch closed. Next, when the clock signal 620 transitions low, theslave latch 610 closes before themaster latch 605 opens. This causes theslave latch 610 to hold the value that it was outputting before the clock transitioned low, during the period that the clock remains low. This value (that is being held by the slave latch 610) is the value that themaster latch 605 was receiving before the prior low-to-high transition of theclock signal 620. - B. Configurable and Reconfigurable IC's
- A configurable IC is an IC that has configurable circuits. In some embodiments, a configurable IC includes configurable computational circuit (e.g., configurable logic circuits) and configurable routing circuits for routing the signals to and from the configurable computation units. In addition to configurable circuits, a configurable IC also typically includes non-configurable circuits (e.g., non-configurable logic circuits, interconnect circuits, memories, etc.).
- A configurable circuit is a circuit that can “configurably” perform a set of operations. Specifically, a configurable circuit receives “configuration data” that specifies the operation that the configurable circuit has to perform in the set of operations that it can perform. In some embodiments, configuration data is generated outside of the configurable IC. In these embodiments, a set of software tools typically converts a high-level IC design (e.g., a circuit representation or a hardware description language design) into a set of configuration data that can configure the configurable IC (or more accurately, the configurable IC's configurable circuits) to implement the IC design.
- Examples of configurable circuits include configurable interconnect circuits and configurable logic circuits. A logic circuit is a circuit that can perform a function on a set of input data that it receives. A configurable logic circuit is a logic circuit that can be configured to perform different functions on its input data set.
-
FIG. 7 illustrates an example of aconfigurable logic circuit 700 that can perform a set of functions. As shown in this figure, thelogic circuit 700 has a set ofinput terminals 705, a set ofoutput terminals 710, and a set ofconfiguration terminals 715. Thelogic circuit 700 receives a set of configuration data on itsconfiguration terminals 715. Based on the configuration data, the logic circuit performs a particular function within its set of functions on the input data that it receives on itsinput terminals 705. The logic circuit then outputs the result of this function as a set of output data on its output terminal set 710. Thelogic circuit 700 is said to be configurable as the configuration data set “configures” the logic circuit to perform a particular function. - A configurable interconnect circuit is a circuit that can configurably connect an input set to an output set in a variety of manners.
FIG. 8 illustrates an example of aconfigurable interconnect circuit 800. Thisinterconnect circuit 800 connects a set ofinput terminals 805 to a set ofoutput terminals 810, based on a set ofconfiguration data 815 that the interconnect circuit receives. In other words, the configuration data specify how the interconnect circuit should connect the input terminal set 805 to the output terminal set 810. Theinterconnect circuit 800 is said to be configurable as the configuration data set “configures” the interconnect circuit to use a particular connection scheme that connects the input terminal set to the output terminal set in a desired manner. - An interconnect circuit can connect two terminals or pass a signal from one terminal to another by establishing an electrical path between the terminals. Alternatively, an interconnect circuit can establish a connection or pass a signal between two terminals by having the value of a signal that appears at one terminal appear at the other terminal. In connecting two terminals or passing a signal between two terminals, an interconnect circuit in some embodiments might invert the signal (i.e., might have the signal appearing at one terminal inverted by the time it appears at the other terminal). In other words, the interconnect circuit of some embodiments implements a logic inversion operation in conjunction to its connection operation. Other embodiments, however, do not build such an inversion operation in some or all of their interconnect circuits.
- Reconfigurable IC's are one type of configurable IC's. A reconfigurable IC is a configurable IC that can reconfigure during runtime. A reconfigurable IC typically includes reconfigurable logic circuits and/or reconfigurable interconnect circuits. A reconfigurable logic or interconnect circuit is a configurable logic or interconnect circuit that can reconfigure more than once at runtime. A configurable logic or interconnect circuit is said to reconfigure when it receives a different set of configuration data.
-
FIG. 9 illustrates an example of areconfigurable logic circuit 900. This logic circuit includes acore logic circuit 905 that can perform a variety of functions on a set ofinput data 910 that it receives. Thecore logic circuit 905 also receives a set of fourconfiguration data bits 915 through aswitching circuit 920. The switching circuit receives a larger set of sixteenconfiguration data bits 925 that are stored in a set of storage elements 930 (e.g., a set of memory cells, such as SRAM cells). This switching circuit is controlled by a two-bit reconfiguration signal φ through twoselect lines 940. Whenever the reconfiguration signal changes, the switching circuit supplies a different set of configuration data bits to thecore logic circuit 905. The configuration data bits then determine the function that thelogic circuit 905 performs on its input data. Thecore logic circuit 905 then outputs the result of this function on the output terminal set 945. - Any number of known logic circuits (also called logic blocks) can be used in conjunction with the invention. Examples of such known logic circuits include look-up tables (LUT's), universal logic modules (ULM's), sub-ULM's, multiplexers, and PAL's/PLA's. In addition, logic circuits can be complex logic circuits formed by multiple logic and interconnect circuits. Examples of simple and complex logic circuits can be found Architecture and CAD for Deep-Submicron FPGAs, Betz, et al., ISBN 0792384601, 1999, and Design of Interconnection Networks for
- Programmable Logic, Lemieux, et al., ISBN 1-4020-7700-9, 2003. Other examples of reconfigurable logic circuits are provided in U.S. patent application Ser. No. 10/882,583, entitled “Configurable Circuits, IC's, and Systems,” filed on Jun. 30, 2004. This application is incorporated in the present application by reference.
-
FIG. 10 illustrates an example of areconfigurable interconnect circuit 1000. This interconnect circuit includes acore interconnect circuit 1005 that connects aninput data terminals 1010 to an output data terminal set 1015 based on aconfiguration data set 1020 that it receives from aswitching circuit 1025. Theswitching circuit 1025 receives a larger set ofconfiguration data bits 1030 that are stored in a set of storage elements 1035 (e.g., a set of memory cells, such as SRAM cells). This switching circuit is controlled by a two-bit reconfiguration signal φ through twoselect lines 1040. Whenever the reconfiguration signal changes, the switching circuit supplies a different set of configuration data bits to thecore interconnect circuit 1005. The configuration data bits then determine the connection scheme that theinterconnect circuit 1005 uses to connect the input andoutput terminals - Any number of known interconnect circuits (also called interconnects or programmable interconnects) can be used in conjunction with the invention. Examples of such interconnect circuits include switch boxes, connection boxes, switching or routing matrices, full- or partial-cross bars, etc. Such interconnects can be implemented using a variety of known techniques and structures. Examples of interconnect circuits can be found Architecture and CAD for Deep-Submicron FPGAs, Betz, et al., ISBN 0792384601, 1999, and Design of Interconnection Networks for Programmable Logic, Lemieux, et al., ISBN 1-4020-7700-9, 2003. Other examples of reconfigurable interconnect circuits are provided in the U.S. application Ser. No. 10/882,583.
- As mentioned above, the logic and
interconnect circuits circuits - In some embodiments, a primary clock's cycle is broken into several sub-cycles.
FIG. 11 illustrates an example of aprimary clock signal 1105 and asub-cycle clock signal 1110. As shown in this figure, the primary clock's cycle can be broken into four sub-cycles, which in this case have an equal duration. In some of these embodiments, each sub-cycle that falls within a particular cycle of the primary clock is referred to as a “phase.” InFIG. 11 , the four phases are referred to as φ0, φ1, φ2, φ3, and these four phases can be presented by two bits (i.e., the phases can be represented as 00, 01, 10, and 11). - Even though
FIG. 11 shows the phases as changing sequentially, these phases change in a non-sequential manner in some embodiments. Also, in some embodiments, the order of the phases in each period of the received clock can differ, e.g., in one clock period the phase bits might appear as 00, 10, 11, 01, and in the next clock period the phase bits might appear as 11, 10, 01, 00. Moreover, in some or all primary cycles, not all possible phase bit permutations might be used or one or more phase bit permutations might be used more than once. Furthermore, different encoding schemes (e.g., a Gray code encoding scheme, a one-hot encoding scheme, etc.) might be used to generate the phase bits. - A primary cycle might be divided into more or fewer than four sub-cycles. Also, the rising and/or falling edges of a primary clock might not coincide with the rising and/or falling edges of the sub-cycle signal or signals. Moreover, the primary clock cycle might not correspond to an integer number of sub-cycles. For instance, in some embodiments, the sub-cycle signals have rates that share a common non-even multiple with the rate of the primary clock.
- For some embodiments of the invention, the switching
circuits FIGS. 9-11 presents one way of providing configuration data to configurable logic or interconnect circuits on a sub-cycle basis. Other embodiments, however, use alternative switching circuitry and clock distribution schemes for providing configuration data to configurable logic or interconnect circuits at certain desired rates. Several such embodiments are described further below. - C. Circuit Arrays and Arrangements
- A circuit array is an array with several circuit elements that are arranged in several rows and columns. One example of a circuit array is a configurable node array, which is an array where some or all the circuit elements are configurable circuits (e.g., configurable logic and/or interconnect circuits).
FIG. 12 illustrates an example of aconfigurable node array 1200 that includes 208configurable nodes 1205 that are arranged in 13 rows and 16 columns. Each configurable node in a configurable node array is a configurable circuit that includes one or more configurable sub-circuits. - In some embodiments, some or all configurable nodes in the array have the same or similar circuit structure. For instance, in some embodiments, some or all the nodes have the exact same circuit elements (e.g., have the same set of logic gates and circuit blocks and/or same interconnect circuits), where one or more of these identical elements are configurable elements. One such example would be a set of nodes positioned in an array, where each node is formed by a particular set of logic and interconnects circuits. Having nodes with the same circuit elements simplifies the process for designing and fabricating the IC, as it allows the same circuit designs and mask patterns to be repetitively used to design and fabricate the IC.
- In some embodiments, the similar configurable nodes not only have the same circuit elements but also have the same exact internal wiring between their circuit elements. For instance, in some embodiments, a particular set of logic and interconnects circuits that are wired in a particular manner forms each node in a set of nodes in the array. Having such nodes further simplifies the design and fabrication processes as it further simplifies the design and mask making processes.
- In some embodiments, each configurable node in a configurable node array is a simple or complex configurable logic circuit. In some embodiments, each configurable node in a configurable node array is a configurable interconnect circuit. In such an array, a configurable node (i.e., a configurable interconnect circuit) can connect to one or more logic circuits. In turn, such logic circuits in some embodiments might be arranged in terms of another configurable logic-circuit array that is interspersed among the configurable interconnect-circuit array.
- Also, some embodiments use a circuit array that includes numerous configurable and non-configurable circuits that are placed in multiple rows and columns. In addition, within the above described circuit arrays and/or configurable node arrays, some embodiments disperse other circuits (e.g., memory blocks, processors, macro blocks, IP blocks, SERDES controllers, clock management units, etc.).
- Some embodiments might organize the configurable circuits in an arrangement that does not have all the circuits organized in an array with several aligned rows and columns. Accordingly, instead of referring to configurable circuit arrays, the discussion below refers to configurable circuit arrangements. Some arrangements may have configurable circuits arranged in one or more arrays, while other arrangements may not have the configurable circuits arranged in an array.
- Several figures below illustrate several direct connections between circuits in a configurable circuit arrangement. A direct connection between two circuits in a configurable circuit arrangement is an electrical connection between the two circuits that is achieved by (1) a set of wire segments that traverse through a set of the wiring layers of the IC, and (2) a set of vias when two or more wiring layers are involved.
- In some embodiments, a direct connection between two circuits in a configurable circuit arrangement might also include a set of buffer circuits. In other words, two circuits in a configurable circuit arrangement are connected in some embodiments by a set of wire segments that possibly traverse through a set of buffer circuits and a set of vias. Buffer circuits are not interconnect circuits or configurable logic circuits. In some embodiments, buffer circuits are part of some or all connections. Buffer circuits might be used to achieve one or more objectives (e.g., maintain the signal strength, reduce noise, alter signal delay, etc.) along the wire segments that establish the direct connections. Inverting buffer circuits may also allow an IC design to reconfigure logic circuits less frequently and/or use fewer types of logic circuits. In some embodiments, buffer circuits are formed by one or more inverters (e.g., two or more inverters that are connected in series).
-
FIGS. 13 and 14 illustrate examples of two connections, each between two circuits in a configurable circuit arrangement. Each of these connections has one or more intervening buffer circuits. Specifically,FIG. 13 illustrates an example of aconnection 1315 between twonodes buffer circuit 1320. In some embodiments, thebuffer circuit 1320 is an inverter. Accordingly, in these embodiments, theconnection 1315 inverts a signal supplied by one of thenodes 1305 to theother node 1310. -
FIG. 14 illustrates an example of aconnection 1415 between twocircuits connection 1415 has two interveningbuffer circuits buffer circuits connection 1415 does not invert a signal supplied by one of thecircuits 1405 to theother circuit 1410. - Alternatively, the intermediate buffer circuits between the logic and/or interconnect circuits can be viewed as a part of the devices illustrated in these figures. For instance, the inverters that can be placed between the
circuits - Several figures below “topologically” illustrate several direct connections between circuits in a configurable circuit arrangement. A topological illustration is an illustration that is only meant to show a direct connection between two circuits without specifying a particular geometric layout for the wire segments that establish the direct connection or a particular position of the two circuits.
- II. Storage at the Interconnects
- Some embodiments of the invention are configurable IC's that have (1) logic circuits, (2) interconnect circuits, and (3) storage elements for storing data computed by the logic circuits and routed between the logic circuits by the interconnect circuits. Some or all of the storage elements are located at the interconnect circuits in some embodiments. The interconnect circuits are the storage elements in some embodiments, while they contain the storage elements in other embodiments.
- Having the storage elements at some or all of the interconnect circuits is highly advantageous. For instance, such storage elements obviate the need to route data computed by a first logic circuit to a second logic circuit that stores the computed data before routing the data to a third logic circuit that will use the data. Instead, such computed data can be stored at an interconnect circuit that is at an optimal location along the routing path between the first and third logic circuits. Such flexibility in routing data is highly advantageous in reconfigurable IC's that often need to pass data between logic circuits that operate in different configuration sub-cycles.
- Instead of using registers for all of the storage elements, some embodiments use latches for some or all the storage elements. In some situations, latches have several advantages over registers. For instance, registers are edge triggered, i.e., their operation is driven by the rising or falling edge of a clock. This limitation on their operation imposes an arbitrary temporal restriction on when data can be passed between a register and another circuits. Latches, on the other hand, do not suffer from such arbitrary constraints as they can operate solely in response to an enable signal. Hence, they can typically operate asynchronously in response to asynchronous enable signals. This ability to operate asynchronously allows the operations of the latches to adjust flexibly to receive and output data whenever such data is provided or needed.
-
FIGS. 15-21 illustrate examples of circuit array architectures that include several interconnect circuits with storage elements for storing computation data from logic circuits in route to other logic circuits.FIG. 15 illustrates aconfigurable node array 1500 formed by numerousconfigurable interconnect circuits 1505 arranged in numerous rows and columns. Dispersed within this array arenumerous logic circuits 1510, which may or may not be configurable. Also, dispersed within this array is a non-logic, non-interconnect block 1515 (e.g., a memory array). - As shown in
FIG. 15 , certainconfigurable interconnect circuits 1505 a-1505 f can serve as storage circuits. In other words, each of theseinterconnect circuits 1505 a-1505 f can be configured to operate either as an interconnect circuit that passes data between other circuits, or as a storage circuit that stores data, such as computation data from one logic circuit in route to another logic circuit. - Different embodiments implement interconnect/storage circuits differently. For instance, as shown in
FIG. 16 , the interconnect circuit 1600 (which in this case is an eight-to-one multiplexer) itself can be configured as a latch by feeding back itsoutput 1610 to one of itsinputs 1615. Specifically, theselect bits 1605 that are supplied to thismultiplexer 1600 cause this multiplexer to select one of its inputs foroutput 1610. When these bits select the multiplexer input that is tied to this multiplexer's output, themultiplexer 1600 acts as a latch that holds its output. When the select bits are configuration bits stored in a storage structure, themultiplexer 1600 is a configurable multiplexer that can be configured to act as an interconnect circuit or a storage circuit by changing the value of the configuration bits. - The
multiplexer 1600 can also be employed as a reconfigurable circuit that can be reconfigured multiple times during run time, as illustrated inFIG. 17 . Specifically,FIG. 17 illustrates aninterconnect circuit 1700 that includes theinterconnect circuit 1600 and amultiplexer 1705. Themultiplexer 1705 receives a two-bit reconfiguration signal 1715 that directs this multiplexer to select one of its four inputs for output. Each input of themultiplexer 1705 is three-bits wide and connects to threestorage elements 1710 that store three configuration bits. The output of themultiplexer 1705 is also three-bits wide, and this output drives the three select lines of themultiplexer 1600. Accordingly, the selection of any input of themultiplexer 1705 causes this multiplexer to provide three configuration bits. - When these three configuration bits select the first input of the
multiplexer 1600 for output, themultiplexer 1600 acts as a latch. On the other hand, themultiplexer 1600 serves as an interconnect circuit when the three configuration bits cause it to select any other input than its first input. By changing the reconfiguration signal, the operation of themultiplexer 1600 can be changed from a latching operation to an interconnect operation. - A latch can also be placed at an input or an output of an interconnect circuit. For example,
FIG. 18 illustrates aninterconnect circuit 1800 that is formed by a seven-to-one multiplexer 1805, alatch 1810, and alogic gate 1815. The latch receives theoutput 1830 of themultiplexer 1805 as its input. It also receives the output of the logic gate as its enable signal. Thelogic gate 1815 produces its output (i.e., produces the enable signal) based on theselect bits 1820 that themultiplexer 1805 receives. Hence, for a particular set ofselect bits 1820, the logic circuit enables the latch so that the latch simply stores the output value of the multiplexer immediately before being enabled. On the other hand, for other sets of selectsbits 1820, the logic circuit disables the latch so that it can pass through the output of themultiplexer 1805. - The
interconnect circuit 1800 has slightly longer signal delay that theinterconnect circuit 1600, because thecircuit 1800 uses aseparate latch 1810. However, this slight signal delay is relatively negligible. Moreover, unlike theinterconnect circuit 1600 which might have to address signal glitch issues, theinterconnect circuit 1800 does not have to address signal glitch issues, as theinterconnect 1800 uses aseparate latch 1810 that is not in a feedback path between theinput terminals 1825 and theoutput terminal 1835 of the interconnect. - When the
select bits 1820 are configuration bits stored in a storage structure, themultiplexer 1800 is a configurable circuit that can be configured to act as an interconnect circuit or a storage circuit by changing the value of the configuration bits. The latching structure of theinterconnect circuit 1800 can also be employed in a reconfigurable interconnect circuit that can be reconfigured multiple times during run time, as illustrated inFIG. 19 . - In particular,
FIG. 19 illustrates aninterconnect circuit 1900 that includes themultiplexer 1805 andlatch 1810 ofFIG. 18 , as well as tworeconfiguration multiplexers multiplexers bit reconfiguration signal 1715. This reconfiguration signal directs themultiplexer 1705 to select one of its four inputs for output. Specifically, each input of themultiplexer 1705 is three-bits wide and connects to threestorage elements 1710 that store three configuration bits. Theoutput 1820 of themultiplexer 1705 is also three-bits wide, and this output drives the three select lines of themultiplexer 1805. Accordingly, the selection of any input of themultiplexer 1705 causes this multiplexer to provide three configuration bits to themultiplexer 1805, which, in turn, causes themultiplexer 1805 to output one of its inputs. - The two-
bit reconfiguration signal 1715 also drives the two select lines of themultiplexer 1905, and thereby causes this multiplexer to select one of its four inputs for output. The output of themultiplexer 1905 then drives the enable signal of thelatch 1810. Accordingly, depending on the value of the configuration bit (stored in cells 1910) that themultiplexer 1905 supplies to thelatch 1810's enable signal, thelatch 1810 can either pass through the output of theinterconnect circuit 1805, or store this circuit's output right before its enable signal went active. Hence, by changing the reconfiguration signal, the operation of theinterconnect circuit 1900 can be changed from an interconnect operation that passes through one of the inputs tomultiplexer 1805, to a latching operation that stores one of the inputs to themultiplexer 1805. - Instead of the two-
bit reconfiguration signal 1715 and themultiplexer logic FIGS. 17 and 19 , some embodiments use alternative switching circuitry and clock distribution schemes for providing configuration data to configurable logic or interconnect circuits at certain desired rates. Several such embodiments are described further below. - In the
configurable node array 1500 ofFIG. 15 , the interconnect/storage circuits 1505 a-1505 f do not appear within the array according to any particular pattern.FIG. 20 , on the other hand, illustrates aconfigurable node arrangement 2000 that has interconnect/storage circuits appearing throughout the arrangement according to a particular pattern. In this arrangement, the interconnect circuits that can also be configured to serve as storage circuits are the interconnect circuits that appear horizontally adjacent to one or two logic circuits.FIG. 21 illustrates anotherconfiguration node arrangement 2100 architecture. In this architecture, each interconnect circuit can be configured to be a storage circuit. - As mentioned above, the storage element in the interconnect/
storage circuit 1600 ofFIG. 16 is established by feeding back the output of this circuit as one of its inputs. On the other hand, the storage elements in the interconnect/storage circuits FIGS. 18 and 19 arelatches 1810 separate from theinterconnect circuit 1805. -
FIG. 22 illustrates yet another alternative implementation of an interconnect/storage circuit 2200. As shown in this figure, thecircuit 2200 includes (1) one set ofinput buffers 2205, (2) threesets PMOS transistors output buffers cross-coupling transistors - The
circuit 2200 is an eight-to-one multiplexer that can also serve as a latch. Specifically, with the exception of two differences, the implementation of the eight-to-one multiplexer 2200 is similar to a traditional complementary pass logic (CPL) implementation of an eight-to-one multiplexer 2300, which is illustrated inFIG. 23 . The two differences are (1) the inclusions of the twotransistors output buffers last set 2220 of the pass transistors of the eight-to-one multiplexer. These two inclusions allow the eight-to-one multiplexer 2200 to act as a storage element whenever the enable signal is active (which, in this case, means whenever the enable signal is high). - In a CPL implementation of a circuit, a complementary pair of signals represents each logic signal, where an empty circle at the input or output of a circuit denotes the complementary input or output of the circuit in the figures. In other words, the circuit receives true and complement sets of input signals and provides true and complement sets of output signals. Accordingly, in the
multiplexer 2200 ofFIG. 22 , one subset of the input buffers 2205 receives eight input bits (0-7), while another subset of the input buffers 2205 receives the complement of the eight inputs bits (i.e., receivesENABLE ). These input buffers serve to buffer thefirst set 2210 of pass transistors. - The
first set 2210 of pass transistors receive the third select bit S2 or the complement of this bit, while thesecond set 2215 of pass transistors receive the second select bit S1 or the complement of this bit. Thethird set 2220 of pass transistors receive the first select bit or its complement after this bit has been “AND'ed” by the complement of the enable signal. When the enable bit is not active (i.e., in this case, when the enable bit is low), the three select bits S2, S1, and S0 cause the pass transistors to operate to pass one of the input bits and the complement of this input bit to twointermediate output nodes circuit 2200. For instance, when the enable signal is low, and the select bits are 011, thepass transistors intermediate output nodes - The pull-up
PMOS transistors intermediate output nodes node 2255 high and to pushnode 2260 low. The low voltage onnode 2260, in turn, turns on the pull-uptransistor 2225, which, in turn, accelerates the pull-up ofnode 2255. - The
output buffer inverters circuit 2200 from its load. These buffers are formed by more than one inverters in some embodiments, but the feedback is taken from an inverting node. The outputs of these buffers are thefinal output latch circuit 2200. It should be noted that, in some embodiments, theoutput buffers - The output of each
buffer cross-coupling NMOS transistor buffer buffer output buffers output nodes third set 2220 of pass transistors (i.e., the “AND'ing” of the complement of the enable signal and the first select bit S0) goes low, which, in turn, turns off the third pass-transistor set 2220 and thereby turns off the multiplexing operation of the multiplexer/latch circuit 2200. - Some embodiments do not use the
cross-coupling transistors latch 2200. For instance,FIG. 24 illustrates an alternative implementation of this output stage. In this implementation, thetransistors intermediate output node 2255 andfinal output node 2285 and theintermediate output node 2260 and thefinal output node 2280. In this implementation, theoutput inverters pass transistors PMOS transistors -
FIG. 25 illustrates yet another implementation of the output stage of the multiplexer/latch 2200. Thecross-coupling transistors - Specifically, the
output inverter 2535 is formed byPMOS transistor 2505 andNMOS transistor 2510 that have their outputs and inputs tied (in the traditional manner for forming a CMOS inverter), and by anNMOS transistor 2515 that is being driven by the enable signal. Theoutput inverter 2540 is formed byPMOS transistor 2520 andNMOS transistor 2525 that have their outputs and inputs tied, and by anNMOS transistor 2530 that is being driven by the enable signal. - In addition, the input of each output inverter is tied to the output of the other inverter (i.e., the gates of
transistors PMOS transistor 2520 andNMOS transistor 2525, while the gates oftransistors PMOS transistor 2505 and NMOS transistor 2510). When enabled, this cross coupling establishes the latch. Specifically, when the enable signal is not active (i.e., is low in this case), theoutput inverters output inverters nodes - In some embodiments, these
output inverters other buffer inverters output buffers PMOS transistors nodes NMOS transistors NMOS transistors PMOS transistors transistors inverters - The multiplexer/
storage circuit 2200 ofFIG. 22 needs to receive several select and enable signals in order to operate.FIGS. 26-28 illustrate how some embodiments generate such signals. For instance,FIG. 26 illustrates a CPL implementation of a two tier multiplexer structure that generates the second signal S1 and its complement. The S1 select signal and its complement drive the pass transistor set 2215 inFIG. 22 . An identical circuit can be used to generate the third select signal S2 and the complement of this signal. - As illustrated in
FIG. 26 , the selectsignal generation circuit 2600 can be divided into four sections, which are (1)storage element section 2605, (2) a first two-to-onemultiplexer section 2610, (3) second two-to-onemultiplexer section 2615, and (4) pull-upPMOS transistor sections 2620. Thestorage element section 2605 includes four storage elements 2625 a-2625 d (e.g., four SRAM cells) that store four configuration bits for four sub-cycles. In other words, each storage element provides a configuration bit 2630 and the complement of this bit 2635, where each such pair of bits provides the select bit signal S1 and its complement during a particular sub-cycle. - The second section includes two
multiplexers ST0 andST1 of these signals. The third section is one two-to-one multiplexer 2615 that is driven by a clock signal CLK and its differential complementCLK , which operates at twice the frequency of the signals ST0,ST0 , ST1, andST1 .FIG. 27 illustrates an example of the signals CLK, ST0, and ST1. Some embodiments use the multiplexer/storage circuit 2200 and the select-signal generator 2600 in a configurable IC that implements a design that has a primary clock rate of X MHZ (e.g., 200 MHZ) through a four sub-cycle implementation that effectively operates at 4X MHZ. In some of these embodiments, the two sub-cycle signals ST0 and ST1 would operate at X MHZ, while the clock signal CLK would operate at 2X MHZ. - The
fourth section 2620 includes two pull-upPMOS transistors multiplexer 2615 that is high. The two complementary outputs of themultiplexer 2615 provide the select signal S1 and its complement. -
FIG. 26 illustrates onepossible implementation 2650 of themultiplexer 2645 and the connections of thismultiplexer 2645 and thestorage elements multiplexer 2645 can be implemented by four pass transistors, where twotransistors true configuration bits fourth storage elements transistors complement configuration bits transistors transistors ST1 of clock ST1. A similar implementation can be used formultiplexer 2640. However, the pass transistors 2655-2670 of themultiplexer 2640 would be driven by the signal ST0 and its complementST0 . -
FIG. 26 also illustrates one possible implementation of the two-to-one multiplexer 2615. This implementation is similar to theimplementation 2650 of themultiplexer 2645. However, instead of the signal ST1, the pass transistors 2655-2670 of themultiplexer 2615 are driven by the CLK andCLK signals. Also, these transistors receive a different set of input signals. Specifically, thetransistors multiplexer 2615 receive the true and complement outputs of themultiplexer 2640, while thetransistors multiplexer 2615 receive the true and complement outputs of themultiplexer 2645. - The
transistors storage elements 2625 c when the clock ST1 is high, and (2) output the true and complement configuration bits stored in thestorage elements 2625 d when the signal ST1 is low. Similarly, thetransistors storage elements 2625 a when the clock ST0 is high, and (2) output the true and complement configuration bits stored in thestorage elements 2625 b when the signal ST0 is low. Finally, thetransistors multiplexer 2640 when the clock CLK is high, and (2) output the true and complement output bits of themultiplexer 2645 when the clock signal CLK is low. - Given the above-described operations of
multiplexers FIG. 27 illustrates the value of the select signal S1 and its complement that thecircuit 2600 generates during each half-cycle of the clock signal CLK. This clocking scheme hides all the timing of the selection of the configuration bits from the storage elements 2625 behind the two-to-one multiplexer 2615. For instance, while themultiplexer 2640 is switching between outputting the configuration bits stored incell 2625 a and the bits stored incell 2625 b, the clocking scheme directs themultiplexer 2615 to output the configuration bits previously selected by the multiplexer 2645 (i.e., the configuration bits stored incell 2625 c). Similarly, while themultiplexer 2645 is switching between outputting the configuration bits stored incell 2625 c and the bits stored incell 2625 d, the clocking scheme directs themultiplexer 2615 to output the configuration bits previously selected by the multiplexer 2640 (i.e., the configuration bits stored incell 2625 b). - In some embodiments, the two signals ST0 and ST1 operate at X MHZ, while the clock signal CLK would operate at 2X MHZ, as mentioned above. Hence, when implementing a design that has a primary clock rate of X MHZ through a four sub-cycle implementation that effectively operates at 4X MHZ, this clocking scheme allows the configuration bits to be read from the storage elements at an effective rate of 4X MHZ without the need for a 4X MHZ clock. Some embodiments globally distribute the differential pair of CLK and
CLK signals, while locally generating the differential signals STO,STO , ST1, andST1 . Examples of such distribution and generation are further described in Section IV. -
FIG. 28 illustrates acircuit 2800 that generates the ENABLE andENABLE signals that are used to drive thecross-coupling transistors multiplexer 2200 ofFIG. 22 . Thecircuit 2800 is identical to thecircuit 2600 ofFIG. 26 , with the exception that the storage elements 2625 incircuit 2800 do not store configuration bits for defining a select signal. Instead, these storage elements store configuration bits for defining the value of the ENABLE signal and its complement during different sub-cycles. -
FIG. 29 illustrates a CPL implementation of how some embodiments generate the signals that drive the third-set pass transistors 2220 inFIG. 22 . As mentioned above, these signals are produced by “AND'ing” the first select bit S0 or its complement with the complement of the enable signal. Thecircuit 2900 illustrated inFIG. 29 can be divided into six sections, which are (1)storage element section 2905, (2) first two-to-onemultiplexer stage 2910, (3) a first pull-uptransistor stage 2915, (4) a second two-to-onemultiplexer stage 2920, (5) a third two-to-onemultiplexer section 2925, and (6) a second pull-uptransistor stage 2930. - The
storage element section 2905 is identical to thestorage element section 2605 of thecircuit 2600 ofFIG. 26 , with the exception that the storage elements inFIG. 29 store configuration bits for the first select signal S0, instead of storing configuration bits for the second select signal S1. In other words, each storage element 2625 provides a configuration bit 2630 and the complement of this bit 2635, where each such pair of bits provides the select bit signal S0 and its complement during a particular sub-cycle. - The
second section 2910 includes twomultiplexers multiplexers circuit 2600 ofFIG. 26 . As incircuit 2600, themultiplexers cells third section 2915 includes four pull-up PMOS transistors, which are used to quickly pull-up the outputs of themultiplexers - The
fourth section 2920 include two two-to-one multiplexers multiplexers multiplexers circuit 2800, as shown inFIG. 28 . - The
fifth section 2925 is one two-to-one multiplexer 2615 that is driven by a clock signal CLK, which operates at twice the frequency of the signals ST0 and ST1. The signals ST0, ST1, and CLK are illustrated inFIG. 27 , as described above. Also, as mentioned above, the use the two-to-one multiplexer 2615 and the clocking signals CLK, ST0, and ST1 and their differential complements, hides all the timing of the selection of the configuration bits from the storage elements 2625 behind the two-to-one multiplexer 2615. - The
sixth section 2930 includes two pull-uptransistors other PMOS transistors circuit 2800 ofFIG. 28 . When the ENABLE signal is low, thecross-coupling transistors circuit 2200 are OFF, and hence the multiplexer/storage circuit 2200 is not latching its output but instead is providing the output of themultiplexer 2200. During this period, the low ENABLE signal turns on the pull-up transistors stacks formed bytransistors transistors one multiplexer 2615. - On the other hand, when the ENABLE signal is high, the
cross-coupling transistors circuit 2200 are ON. This, in turn, causes thecircuit 2200 to latch its output. During this period, the high ENABLE signal turns off thetransistors sixth section 2930. -
FIG. 30 illustrates a block diagram representation of the interconnect/storage circuit 2200 ofFIG. 22 . This block diagram represents this circuit in terms of aninterconnect circuit 3010 and alatch 3005 that is built in the output stage of theinterconnect circuit 3010.FIG. 30 illustrates the latch to be driven by a latch enable signal. - III. Alternative Architectures
-
FIGS. 15, 20 , and 21 illustrated several configurable circuit architectures that included the invention's circuits (e.g., the invention's interconnect/storage circuits). Other embodiments, however, use the invention's circuits in other architectures. One such architecture is illustrated inFIGS. 31-36 . - As shown in
FIG. 31 , this architecture is formed by numerousconfigurable tiles 3105 that are arranged in an array with multiple rows and columns. InFIGS. 31-36 , each configurable tile includes a sub-cycle reconfigurable three-input LUT 3110, three sub-cycle reconfigurable input-select multiplexers reconfigurable routing multiplexers - In
FIGS. 31-36 , an input-select multiplexer is an interconnect circuit associated with theLUT 3110 that is in the same tile as the input select multiplexer. One such input select multiplexer receives several input signals for its associated LUT and passes one of these input signals to its associated LUT. - In
FIGS. 31-36 , a routing multiplexer is an interconnect circuit that at a macro level connects other logic and/or interconnect circuits. In other words, unlike an input select multiplexer in these figures that only provides its output to a single logic circuit (i.e., that only has a fan out of 1), a routing multiplexer in some embodiments either provides its output to several logic and/or interconnect circuits (i.e., has a fan out greater than 1), or provides its output to other interconnect circuits. -
FIGS. 32-36 illustrate the connection scheme used to connect the multiplexers of one tile with the LUT's and multiplexers of other tiles. This connection scheme is further described in U.S. Application entitled “Configurable IC with Routing Circuits with Offset Connections”, filed concurrently with this application with attorney docket number TBUL.P0036. This application is incorporated herein by reference. - In the architecture illustrated in
FIGS. 31-36 , each tile includes one three-input LUT, three input-select multiplexers, and two routing multiplexers. Other embodiments, however, might have a different number of LUT's in each tile, different number of inputs for each LUT, different number of input-select multiplexers, and/or different number of routing multiplexers. For instance, some embodiments might employ an architecture that has in each tile: one three-input LUT, three input-select multiplexers, and eight routing multiplexers. Several such architectures are further described in the above-incorporated patent application. - In some embodiments, the examples illustrated in
FIGS. 31-36 represent the actual physical architecture of a configurable IC. However, in other embodiments, the examples illustrated inFIGS. 31-36 topologically illustrate the architecture of a configurable IC (i.e., they show connections between circuits in the configurable IC, without specifying (1) a particular geometric layout for the wire segments that establish the connection, or even (2) a particular position of the circuits). In some embodiments, the position and orientation of the circuits in the actual physical architecture of a configurable IC is different from the position and orientation of the circuits in the topological architecture of the configurable IC. Accordingly, in these embodiments, the IC's physical architecture appears quite different from its topological architecture. For example,FIG. 37 provides one possible physical architecture of theconfigurable IC 3100 illustrated inFIG. 31 . This and other architectures are further described in the above-incorporated patent application. - IV. Clock Distribution and Sub-Cycle Signal Generation Schemes
- Several embodiments were described above by reference to examples of sub-cycle reconfigurable circuits that operate based on four different sets of configuration data. In some of these examples, a reconfigurable circuit receives its four different configuration data sets sequentially in an order that loops from the last configuration data set to the first configuration data set. Such a sequential reconfiguration scheme is referred to as a 4 “loopered” scheme.
- To facilitate this 4 loopered scheme, some embodiments use a tiered multiplexer structure that uses the clocks signals CLK, ST0, and ST1, as described above. Some of these embodiments globally distribute the differential pair of CLK and
CLK signals, while locally generating the differential signals ST0,ST0 , ST1, andST1 .FIG. 38 illustrates an example of how the differential pairs of clock signals CLK andCLK are distributed by some embodiments. As shown in this figure, some embodiments use aglobal clock generator 3805 to generate the differential clock signals CLK andCLK . - In the example illustrated in
FIG. 38 , theglobal clock generator 3805 is outside of the configurable tile arrangement 3810 (e.g., thegenerator 3805 might be on a different circuit than the IC that includes theconfigurable tile arrangement 3810, or it might be partially or completely on the IC that includes thearrangement 3810 but positioned outside of the arrangement). However, in other embodiments, this global clock generator can be placed within theconfigurable tile arrangement 3810. - Through clock distribution tree structure, the differential clock signals generated by the
generator 3805 are routed to the configurable logic and interconnect circuits in the tile arrangement. In some embodiments, this tree structure is a combination of a recursive H tree structure that at its lowest leaf level becomes fishbone tree structures. Other embodiments might use other well known clock distribution architectures. - In some embodiments, the globally distributed differential clock signals CLK and
CLK are received by two localsub-cycle signal generators enlarged view 3815 of a tile inFIG. 38 . Thelocal generator 3825 in each tile provides the differential clock pair ST0 andST0 , and pair ST1 andST1 , for the tiered multiplexer structures that retrieve and provide configuration data sets to the routing multiplexers of the tile. The local generates 3820 in each tile provides the differential signal pair ST0 andST0 , and pair ST1 andST1 , for the tiered multiplexer structures that retrieve and provide configuration data sets to the input select multiplexers and three-input LUT's of the tile. - Having different local sub-cycle signal generators for different tiles allows the embodiments illustrated in
FIG. 38 to have different tiles operate on different clock domains (i.e., on different global clock signals that are based on different clock domains). Specifically, some embodiments include one global clock generator for each clock domain that the reconfigurable IC can handle. For instance, an IC design might require the IC to interface with two bus interfaces that operate at two different rates and to implement a particular design that operates at yet another rate. In such a situation, the reconfigurable IC might include three global clock generators, two for generating the clock signals associate with the two bus interfaces and one for receiving the design clock signal, as illustrated inFIG. 39 . - In some embodiments, the three
global clock generators FIG. 39 are on the configurable IC and generate their three clocks based on three clocks signals that they received from outside of the IC. As shown inFIG. 39 , the local sub-cycle signal generators within a configurable tile are preceded by a set ofmultiplexers 3920 that route one of the globally distributed clocks and its complement to each local sub-cycle signal generator. The local sub-cycle signal generators in the tiles then generate their local clocks ST0 and ST1 based on the received global clocks CLK. For instance, in the example mentioned above, the local sub-cycle signal generators of the set tiles that implement one bus interface receive the global clock signal for that bus interface and generate the local sub-cycle signals that are needed to achieve the operational rate for implementing the particular bus interface. - Having two different local
sub-cycle signal generators FIG. 38 to have the routing multiplexers of a tile operate on different clock domains than the input select multiplexers and the LUT of the tile. This is beneficial for allowing the routing multiplexers of a tile to be used to route signals that belong to different clock domains than the logic circuits of the tile. -
FIG. 40 illustrates a CPL-implementation of a localsub-cycle signal generator 4000 of some embodiments. This local sub-cycle signal generator is formed by twolatches second latch 4010 is fed back in a cross-coupled manner to the input of thefirst latch 4005, either of the latches can be viewed as the master latch, and the other latch can be viewed as the slave latch. - The
latches FIG. 40 , the enable inputs of the latches are driven by the CLK signal and its complement. Given these enable signals and the fact that the latches are either active high or active low, the looped master-slave latch arrangement of thegenerator 4000 can be used to generate two offset clocks signals ST0 and ST1 that operate at half the rate of the clock signal CLK. In other words, as shown inFIG. 40 , the outputs of thelatches - V. Eight and Six “Loopered” Architectures
- Several embodiments were described above by reference to examples of four loopered, sub-cycle reconfigurable circuits. Other embodiments, however, might be implemented as six or eight loopered sub-cycle reconfigurable circuits. In a six or eight loopered reconfigurable circuit, a reconfigurable circuit receives six or eight configuration data sets in an order that loops from the last configuration data set to the first configuration data set. Several examples of six and eight loopered circuits and clock distribution will now be described.
- A. Eight “Loopered” Architecture
- To implement an eight loopered reconfigurable IC, some embodiments use an architecture that is a slightly modified version of the architectures described above. Specifically, in the eight loopered architecture, these embodiments (1) store eight configuration data sets for each sub-cycle configurable circuit, (2) use modified multi-tiered multiplexer structures for supplying configuration data sets to the configurable circuits, and (3) use a different clocking scheme to control the modified multi-tiered multiplexer structure.
- As mentioned above, some embodiments implement a four loopered design by using four
storage elements 2605, twomultiplexers multiplexers FIG. 41 illustrates an example of two sets of one-hot signals. -
FIG. 42 illustrates an example of a CPL-implementation of eightstorage elements 4205 and two modifiedmultiplexers storage elements 4205 and two modifiedmultiplexers storage elements 2605 and twomultiplexers FIGS. 26, 28 , and 29. - As shown in
FIG. 42 , the modifiedmultiplexers multiplexer 4240, each pair of transistors is driven by one of the four ST0 signals. Inmultiplexer 4245, each pair of transistors is driven by one of the four ST1 signals. In eachmultiplexer - Given the timing diagram of the ST0 and ST1 signals that is illustrated in
FIG. 41 , the modifiedmultiplexers FIG. 42 is used in the multi-tiered circuitry ofFIGS. 26, 28 , and 29, the interleaved outputting and switching operations are behind anothermultiplexer 2615 that is driven by signal CLK and its complement. -
FIG. 41 illustrates the timing between the CLK signals and the two sets of four one-hot signals. Given this timing relationship, themultiplexer 2615 hides the switching operations of themultiplexers multiplexer -
FIG. 43 illustrates an example of a CPL-implementation of a localsub-cycle signal generator 4300 that is used by some embodiments to generate the two sets of four one-hot signals ST0 and ST1. This local sub-cycle signal generator is formed by four latches 4305-4320 that are connected as a pair of series connected master-slave latches. Given that the output of thefourth latch 4320 is fed back in a cross-coupled manner to the input of thefirst latch 4305, either latch in the master-slave arrangement can be viewed as the master latch, while the other latch can be viewed as the slave latch. - The latches 4305-4320 are either active high latches or active low latches. Also, as shown in
FIG. 43 , the true enable inputs oflatches latches CLK signal. The complement enable inputs oflatches latches - As shown in
FIG. 43 , the outputs oflatches hot decoder 4330, while the outputs oflatches hot decoder 4335. In the CPL implementation illustrated inFIG. 43 , each two-to-four decoder receives four input signals (representing two logical signals) and produces eight output signals (representing four logical signals). As the two output signals of the two latches sequentially step through thevalues hot decoder 4330 sequentially generates the four ST0 signals. Similarly, as the two output signals of the two latches sequentially step through thevalues hot decoder 4335 sequentially generates the four ST1 signals. The signals ST0 and ST1 are offset by 90° as their inputs are offset by 90°. - B. Six “Loopered” Architecture
- To implement a six loopered reconfigurable IC, some embodiments use an architecture that is a slightly modified version of the architectures described above for the four and eight loopered architectures. Specifically, in the six loopered architecture, these embodiments (1) store six configuration data sets for each sub-cycle configurable circuit, (2) use modified multi-tiered multiplexer structures for supplying configuration data sets to the configurable circuits, and (3) use a different clocking scheme to control the modified multi-tiered multiplexer structure.
- As mentioned above, some embodiments implement a four loopered design by using four
storage elements 2605, twomultiplexers multiplexers FIG. 44 illustrates an example of two sets of one-hot signals. -
FIG. 45 illustrates an example of a CPL-implementation of sixstorage elements 4505 and two modifiedmultiplexers storage elements 4505 and two modifiedmultiplexers storage elements 2605 and twomultiplexers FIGS. 26, 28 , and 29. - The modified
multiplexers FIG. 45 are similar to the modifiedmultiplexers FIG. 42 , except that eachmultiplexer FIG. 44 , the modifiedmultiplexers FIG. 45 is used in the multi-tiered circuitry ofFIGS. 26, 28 , and 29, the interleaved outputting and switching operations are behind anothermultiplexer 2615 that is driven by signal CLK and its complement. -
FIG. 44 illustrates the timing between the CLK signals and the two sets of three one-hot signals. Given this timing relationship, themultiplexer 2615 hides the switching operations of themultiplexers multiplexer -
FIG. 46 illustrates an example of a CPL-implementation of a localsub-cycle signal generator 4600 that is used by some embodiments to generate the two sets of three one-hot signals ST0 and ST1. This localsub-cycle signal generator 4600 is similar to the localsub-cycle signal generator 4300 ofFIG. 43 , except that it includes an ANDgate 4605 and aNAND gate 4610. - The AND and
NAND gates latches FIG. 46 , these output are regenerated from CPL-levels to full CMOS-levels before being supplied to these gates. The output of the AND andNAND gates first latch 4305 in an inverted manner. In particular, the ANDgate 4605 output is fed to theD input of thefirst latch 4305, while theNAND gate 4610 output is fed to the D input of thefirst latch 4305. - The “AND'ing” and “NAND'ing” operation of
gates latches decoder 4330, to only cycle through the bit pair values 11, 01, and 10. It also causes the output of thelatches decoder 4335, to only cycle through these three sets of values. These more restricted set of inputs to thedecoders FIG. 44 . - C. Eight “Loopered” Architecture that can Run in Eight or Six Loopered Mode
- Some embodiments provide an eight loopered architecture that can run in either an eight loopered mode or a six loopered mode. For instance, some embodiments employ an eight loopered architecture that uses the eight
storage cells 4205 and the twomultiplexers FIG. 42 to deliver each configuration bit to a configurable circuit. However, to provide the ability to run either in an eight loopered mode or a six loopered mode, these embodiments use variably configurable local sub-cycle signal generators that can generate either the four one-hot signals necessary for the eight loopered mode, or the three one-hot signals necessary for the six loopered mode. -
FIG. 47 illustrates an example of one such variable localsub-cycle signal generator 4700 of some embodiments of the invention. The variablelocal signal generator 4700 is similar to the localsub-cycle signal generator 4600 ofFIG. 46 , except that it also includes a configurable two-to-one multiplexer 4705 in the feedback paths between the outputs of thelatches first latch 4305. This two-to-one multiplexer 4705 allows the localsub-cycle signal generator 4700 to act either as the localsub-cycle signal generator 4300 for an eight loopered operation, or as the localsub-cycle signal generator 4600 for a six loopered operation. - Specifically, the
select line 4715 of themultiplexer 4705 is tied to the output of thestorage cells 4710, which stores the configuration of the multiplexer. When the configuration value is 0, themultiplexer 4705 connects the output of thefourth latch 4320 to the input of thefirst latch 4305 in a cross coupled manner. This results in theclock generator 4700 operating like theclock generator 4300, and producing two sets of four one-hot signals that allow themultiplexers - On the other hand, when the configuration value is 0, the
multiplexer 4705 connects the output of the AND/NAND gates first latch 4305. This results in theclock generator 4700 operating like theclock generator 4600, and producing two sets of three one-hot signals that allow themultiplexers multiplexers storage elements 4205. When these multiplexers are operating in the six loopered mode, some embodiments set the signals that drive the fourth pairs of transistors in these multiplexers to values that turn off these transistors (i.e., set the ST0[3] and ST1[3] to low). - A slight modification to the local
sub-cycle signal generator 4700 would also allow this generator to generate sub-cycle signals ST0 and ST1 ofFIG. 27 , which, in turn, would allow themultiplexers one multiplexer 4705 with a three-to-one multiplexer that also receives the inverted output oflatch 4310, and (2) adding a circuit (e.g., an AND gate or a multiplexer) that can selectively feed a constant low signal into thelatches 4315, to power down this latch and thelatch 4320 during a four-loopered operation. -
FIG. 48 illustrates theconfigurable IC 4800 of some embodiments that takes advantage of the variable localsub-cycle signal generator 4700. As shown inFIG. 48 , theconfigurable IC 4800 has foursections - In some embodiments, each section of the configurable IC 4800 (1) includes eight
storage elements 4205 for storing up to eight configuration values for each configuration bit supplied to a configurable circuit, and (2) twomultiplexers clock generator 4700. Hence, by configuring the configurable local sub-cycle signal generators in each tile, each tile can be configured to operate in either a six loopered mode or an eight loopered mode. - As mentioned above by reference to
FIG. 39 , each local sub-cycle signal generator can base its operation on a different global clock signal. Accordingly, each tile can be configured to operate in different modes and different clock rates. For instance,FIG. 48 illustrates that (1) the tiles insection 4805 operate in an eight loopered mode that operates at a 2*CLK1 rate; (2) the tiles insection 4810 operate in a six loopered mode that operates at a 2*CLK1 rate; (3) the tiles insection 4815 operate in an eight loopered mode that operates at a 2*CLK2 rate; and (4) the tiles insection 4810 operate in a six loopered mode that operates at a 2*CLK2 rate. In this example, CLK1 has a frequency that is twice CLK2. - It is highly advantageous to have different sections of a reconfigurable IC operate at different reconfiguration rates through and/or through different reconfiguration sets. For instance, this ability allows the resources of the reconfigurable IC that implement a core user design to operate at a first rate and/or a first looperness mode, while the resources of the reconfigurable IC that implement the input/output interface of the design to operate at a second rate and/or a second looperness mode.
- In some embodiments, the configurable IC that can operate in different loopered modes, has different number of storage elements for configurable circuits that are to operate in different loopered modes. For instance, when the configurable IC in these embodiments can operate in six and eight loopered modes, the configurable IC will have (1) a first set of tiles that have six storage elements for storing the configuration values for each configuration bit of the configurable circuits in the first set of tiles, and (2) a second set of tiles that have eight storage elements for storing the configuration values for each configuration bit of the configurable circuits in the second set of tiles.
- VI. Alternative Two Tiered Structure for Retrieving Data
- Several circuits described above utilize a two-tiered structure for retrieving data (e.g., configuration data, enable data, etc.) on a sub-cycle basis. Examples of such circuits are the circuits illustrated in
FIGS. 26, 28 , 29, 42, and 45. These circuits employ multiple storage elements 2625 that store multiple sets of data for multiple sub-cycles. They also include two tiers of multiplexers, where two two-to-one multiplexers (e.g., 2640 and 2645) form the first tier and one two-to-one multiplexer (e.g., 2615) forms the second tier. In different circuits, the two tiers of multiplexers might have intervening circuits between them, such as pull-up transistors, AND'ing transistors or gates, or even buffer circuits. The second-tier multiplexer runs at the clock rate CLK, while the first-tier multiplexers runs at half that rate. From the storage elements, these multiplexers together output data at a sub-cycle rate that is twice the clock rate CLK. - Some embodiments that use this two-tiered structure, build the first tier of multiplexers into the sensing circuitry of the storage elements 2625.
FIG. 49 illustrates an example of such an approach. Specifically, this figure illustrates four storage elements 2625 a-2625 d that are arranged in twocolumns - Each of the two complementary outputs of each storage element 2625 connects to a pair of stacked NMOS transistors 4920 and 4925. One transistor 4925 in each stacked pair of NMOS transistors is part of a first tier multiplexer structure. Specifically, in the two-tiered circuit structure 4900 illustrated in
FIG. 49 , the first tier multiplexer structure is formed by the eight transistors 4925, which receive the sub-cycle signals ST0, ST1, or the complements of these signals. - Through the sub-cycle signals ST0, ST1,
ST0 , andST1 , the multiplexer transistors 4925 selectively connect the NMOS transistors 4920 to thecross-coupled PMOS transistors PMOS transistors - Specifically, when the NMOS transistors 4920 associated with one storage element 2625 connect to the
PMOS transistors - The bit lines 4935 and 4940 connect to the two-to-
one multiplexer 2615. As described above, this multiplexer is controlled through the clock signal CLK and its complement. Accordingly, when the clock signals CLK andCLK , and the sub-cycle signals ST0, ST1,ST0 , andST1 , have the timing relationship illustrated inFIG. 27 , the first tier multiplexer (formed by the transistors 4925) and thesecond tier multiplexer 2615 operate to output data from the storage elements 2625 at a rate that is twice the rate of the clock signal CLK. This outputting is analogous to how thecircuit 2600 outputs the S1 select signal on the sub-cycle basis that is illustrated inFIG. 27 . - As mentioned above, the circuit 4900 of
FIG. 49 can be used to provide any data on a sub-cycle basis, or any other reconfiguration cycle basis. By building the first multiplexer stage into the sense amplifier section of the storage elements, this circuit reduces signal path delay from the storage elements. Also, it operates with storage elements that have less power consumption. Furthermore, it reduces power consumption by using NMOS transistors 4920 that are not driven by full voltage levels, and sharing thePMOS transistors - The two-tiered structure of the circuit 4900 of
FIG. 49 can be easily extended to six and eight loopered structures. For a six loopered structure, all that needs to be done is to stack another pair of storage elements aboveelements FIG. 44 . Similarly, for an eight loopered structure, all that needs to be done is to stack two pairs of storage elements on top ofelements FIG. 41 . - One of ordinary skill will realize that other embodiments might implement the two tiered circuit 4900 differently. For instance, some embodiments might have one or more circuits between the
multiplexer 2615 and the storage element section (i.e., the section with the storage elements 2625 and their sense amplifiers). - VII. Configurable IC and System
- Some embodiments described above are implemented in configurable IC's that can compute configurable combinational digital logic functions on signals that are presented on the inputs of the configurable IC's. In some embodiments, such computations are state-less computations (i.e., do not depend on a previous state of a value). Some embodiments described above are implemented in configurable IC's that can perform a continuous function. In these embodiments, the configurable IC can receive a continuous function at its input, and in response, provide a continuous output at one of its outputs.
-
FIG. 50 illustrates a portion of aconfigurable IC 5000 of some embodiments of the invention. As shown in this figure, this IC has aconfigurable circuit arrangement 5005 and I/O circuitry 5010. Theconfigurable circuit arrangement 5005 can be any of the invention's configurable circuit arrangements that were described above. The I/O circuitry 5010 is responsible for routing data between theconfigurable nodes 5015 of theconfigurable circuit arrangement 5005 and circuits outside of this arrangement (i.e., circuits outside of the IC, or within the IC but outside of the configurable circuit arrangement 5005). As further described below, such data includes data that needs to be processed or passed along by the configurable nodes. - The data also includes in some embodiments configuration data that configure the nodes to perform particular operations.
FIG. 51 illustrates a more detailed example of this. Specifically, this figure illustrates aconfiguration data pool 5105 for theconfigurable IC 5000. This pool includes N configuration data sets (CDS). As shown inFIG. 51 , the input/output circuitry 5010 of theconfigurable IC 5000 routes different configuration data sets to different configurable nodes of theIC 5000. For instance,FIG. 51 illustratesconfigurable node 5145 receivingconfiguration data sets configurable node 5150 receivesconfiguration data sets 3, K, and N−1 through the I/O circuitry. In some embodiments, the configuration data sets are stored within each configurable node. Also, in some embodiments, a configurable node can store multiple configuration data sets so that it can reconfigure quickly by changing to another configuration data set. In some embodiments, some configurable nodes store only one configuration data set, while other configurable nodes store multiple such data sets. - A configurable IC of the invention can also include circuits other than a configurable circuit arrangement and I/O circuitry. For instance,
FIG. 52 illustrates a system on chip (“SoC”) implementation of aconfigurable IC 5200. This IC has aconfigurable block 5250, which includes aconfigurable circuit arrangement 5105 and I/O circuitry 5110 for this arrangement. It also includes aprocessor 5215 outside of the configurable circuit arrangement, amemory 5220, and abus 5210, which conceptually represents all conductive paths between theprocessor 5215,memory 5220, and theconfigurable block 5250. As shown inFIGS. 52 , theIC 5200 couples to abus 5230, which communicatively couples the IC to other circuits, such as an off-chip memory 5225.Bus 5230 conceptually represents all conductive paths between the components of theIC 5200. - This
processor 5215 can read and write instructions and/or data from an on-chip memory 5220 or anoffchip memory 5225. Theprocessor 5215 can also communicate with theconfigurable block 5250 throughmemory 5220 and/or 5225 throughbuses 5210 and/or 5230. Similarly, the configurable block can retrieve data from and supply data tomemories buses - Instead of, or in conjunction with, the system on chip (“SoC”) implementation for a configurable IC, some embodiments might employ a system in package (“SiP”) implementation for a configurable IC.
FIG. 53 illustrates onesuch SiP 5300. As shown in this figure,SiP 5300 includes four IC's 5320, 5325, 5330, and 5335 that are stacked on top of each other on asubstrate 5305. At least one of these IC's is a configurable IC that includes a configurable block, such as theconfigurable block 5250 ofFIG. 52 . Other IC's might be other circuits, such as processors, memory, etc. - As shown in
FIG. 53 , the IC communicatively connects to the substrate 5305 (e.g., through wire bondings 5360). These wire bondings allow the IC's 5320-5335 to communicate with each other without having to go outside of theSiP 5300. In some embodiments, the IC's 5320-5335 might be directly wire-bonded to each other in order to facilitate communication between these IC's. Instead of, or in conjunction with the wire bondings, some embodiments might use other mechanisms to communicatively couple the IC's 5320-5335 to each other. - As further shown in
FIG. 53 , the SiP includes a ball grid array (“BGA”) 5310 and a set ofvias 5315. TheBGA 5310 is a set of solder balls that allows theSiP 5300 to be attached to a printed circuit board (“PCB”). Each via connects a solder ball in theBGA 5310 on the bottom of thesubstrate 5305, to a conductor on the top of thesubstrate 5305. - The conductors on the top of the
substrate 5305 are electrically coupled to the IC's 5320-5335 through the wire bondings. Accordingly, the IC's 5320-5335 can send and receive signals to and from circuits outside of theSiP 5300 through the wire bondings, the conductors on the top of thesubstrate 5305, the set ofvias 5315, and theBGA 5310. Instead of a BGA, other embodiments might employ other structures (e.g., a pin grid array) to connect a SiP to circuits outside of the SiP. As shown inFIG. 53 , ahousing 5380 encapsulates thesubstrate 5305, theBGA 5310, the set ofvias 5315, the IC's 5320-5335, the wire bondings to form theSiP 5300. This and other SiP structures are further described in United States patent application entitled “Programmable System In Package”, filed concurrently herewith attorney docket number TBUL.P0030. -
FIG. 54 conceptually illustrates a more detailed example of acomputing system 5400 that has anIC 5405, which includes one of the invention's configurable circuit arrangements that were described above. Thesystem 5400 can be a stand-alone computing or communication device, or it can be part of another electronic device. As shown inFIG. 54 , thesystem 5400 not only includes theIC 5405, but also includes abus 5410, asystem memory 5415, a read-only memory 5420, astorage device 5425,input devices 5430,output devices 5435, andcommunication interface 5440. - The
bus 5410 collectively represents all system, peripheral, and chipset interconnects (including bus and non-bus interconnect structures) that communicatively connect the numerous internal devices of thesystem 5400. For instance, thebus 5410 communicatively connects theIC 5410 with the read-only memory 5420, thesystem memory 5415, and thepermanent storage device 5425. - From these various memory units, the
IC 5405 receives data for processing and configuration data for configuring the IC's configurable logic and/or interconnect circuits. When theIC 5405 has a processor, the IC also retrieves from the various memory units instructions to execute. The read-only-memory (ROM) 5420 stores static data and instructions that are needed by theIC 5410 and other modules of thesystem 5400. Thestorage device 5425, on the other hand, is read-and-write memory device. This device is a non-volatile memory unit that stores instruction and/or data even when thesystem 5400 is off. Like thestorage device 5425, thesystem memory 5415 is a read-and-write memory device. However, unlikestorage device 5425, the system memory is a volatile read-and-write memory, such as a random access memory. The system memory stores some of the instructions and/or data that the IC needs at runtime. - The
bus 5410 also connects to the input andoutput devices system 5400. Theinput devices 5430 can include touch-sensitive screens, keys, buttons, keyboards, cursor-controllers, microphone, etc. Theoutput devices 5435 display the output of thesystem 5400. - Finally, as shown in
FIG. 54 ,bus 5410 also couplessystem 5400 to other devices through acommunication interface 5440. Examples of the communication interface include network adapters that connect to a network of computers, or wired or wireless transceivers for communicating with other devices. One of ordinary skill in the art would appreciate that any other system configuration may also be used in conjunction with the invention, and these system configurations might have fewer or additional components. - While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.
Claims (24)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/082,196 US7276933B1 (en) | 2004-11-08 | 2005-03-15 | Reconfigurable IC that has sections running at different looperness |
US11/840,963 US7525342B2 (en) | 2004-11-08 | 2007-08-18 | Reconfigurable IC that has sections running at different looperness |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62632204P | 2004-11-08 | 2004-11-08 | |
US11/082,196 US7276933B1 (en) | 2004-11-08 | 2005-03-15 | Reconfigurable IC that has sections running at different looperness |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/840,963 Continuation US7525342B2 (en) | 2004-11-08 | 2007-08-18 | Reconfigurable IC that has sections running at different looperness |
Publications (2)
Publication Number | Publication Date |
---|---|
US7276933B1 US7276933B1 (en) | 2007-10-02 |
US20070241774A1 true US20070241774A1 (en) | 2007-10-18 |
Family
ID=38535793
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/082,196 Expired - Fee Related US7276933B1 (en) | 2004-11-08 | 2005-03-15 | Reconfigurable IC that has sections running at different looperness |
US11/840,963 Expired - Fee Related US7525342B2 (en) | 2004-11-08 | 2007-08-18 | Reconfigurable IC that has sections running at different looperness |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/840,963 Expired - Fee Related US7525342B2 (en) | 2004-11-08 | 2007-08-18 | Reconfigurable IC that has sections running at different looperness |
Country Status (1)
Country | Link |
---|---|
US (2) | US7276933B1 (en) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7167025B1 (en) | 2004-02-14 | 2007-01-23 | Herman Schmit | Non-sequentially configurable IC |
US7425841B2 (en) | 2004-02-14 | 2008-09-16 | Tabula Inc. | Configurable circuits, IC's, and systems |
US7224181B1 (en) * | 2004-11-08 | 2007-05-29 | Herman Schmit | Clock distribution in a configurable IC |
US7330050B2 (en) | 2004-11-08 | 2008-02-12 | Tabula, Inc. | Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements |
US7317331B2 (en) | 2004-11-08 | 2008-01-08 | Tabula, Inc. | Reconfigurable IC that has sections running at different reconfiguration rates |
CA2648896A1 (en) * | 2006-04-19 | 2007-11-01 | Queen's University At Kingston | A hybrid nanotube/cmos dynamically reconfigurable architecture and an integrated design optimization method and system therefor |
US8112468B1 (en) | 2007-03-22 | 2012-02-07 | Tabula, Inc. | Method and apparatus for performing an operation with a plurality of sub-operations in a configurable IC |
US8344755B2 (en) | 2007-09-06 | 2013-01-01 | Tabula, Inc. | Configuration context switcher |
US20090289363A1 (en) * | 2008-05-23 | 2009-11-26 | Texas Instruments Incorporated | Fine-Pitch Ball Grid Array Package Design |
US8912820B2 (en) * | 2010-04-02 | 2014-12-16 | Tabula, Inc. | System and method for reducing reconfiguration power |
US8650514B2 (en) * | 2010-06-23 | 2014-02-11 | Tabula, Inc. | Rescaling |
US9148151B2 (en) | 2011-07-13 | 2015-09-29 | Altera Corporation | Configurable storage elements |
US9203397B1 (en) | 2011-12-16 | 2015-12-01 | Altera Corporation | Delaying start of user design execution |
JP5639612B2 (en) * | 2012-03-27 | 2014-12-10 | 株式会社東芝 | Semiconductor integrated circuit |
GB2526018B (en) | 2013-10-31 | 2018-11-14 | Silicon Tailor Ltd | Multistage switch |
Citations (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4873459A (en) * | 1986-09-19 | 1989-10-10 | Actel Corporation | Programmable interconnect architecture |
US5021690A (en) * | 1989-11-13 | 1991-06-04 | Advanced Micro Devices, Inc. | Programmable logic array apparatus |
US5349250A (en) * | 1993-09-02 | 1994-09-20 | Xilinx, Inc. | Logic structure and circuit for fast carry |
US5357153A (en) * | 1993-01-28 | 1994-10-18 | Xilinx, Inc. | Macrocell with product-term cascade and improved flip flop utilization |
US5426378A (en) * | 1994-04-20 | 1995-06-20 | Xilinx, Inc. | Programmable logic device which stores more than one configuration and means for switching configurations |
US5521835A (en) * | 1992-03-27 | 1996-05-28 | Xilinx, Inc. | Method for programming an FPLD using a library-based technology mapping algorithm |
US5532958A (en) * | 1990-06-25 | 1996-07-02 | Dallas Semiconductor Corp. | Dual storage cell memory |
US5545575A (en) * | 1994-10-24 | 1996-08-13 | Motorola, Inc. | Method for manufacturing an insulated gate semiconductor device |
US5552721A (en) * | 1995-06-05 | 1996-09-03 | International Business Machines Corporation | Method and system for enhanced drive in programmmable gate arrays |
US5631578A (en) * | 1995-06-02 | 1997-05-20 | International Business Machines Corporation | Programmable array interconnect network |
US5646544A (en) * | 1995-06-05 | 1997-07-08 | International Business Machines Corporation | System and method for dynamically reconfiguring a programmable gate array |
US5659484A (en) * | 1993-03-29 | 1997-08-19 | Xilinx, Inc. | Frequency driven layout and method for field programmable gate arrays |
US5682107A (en) * | 1994-04-01 | 1997-10-28 | Xilinx, Inc. | FPGA architecture with repeatable tiles including routing matrices and logic matrices |
US5719889A (en) * | 1995-12-20 | 1998-02-17 | International Business Machines Corporation | Programmable parity checking and comparison circuit |
US5732246A (en) * | 1995-06-07 | 1998-03-24 | International Business Machines Corporation | Programmable array interconnect latch |
US5737235A (en) * | 1995-05-02 | 1998-04-07 | Xilinx Inc | FPGA with parallel and serial user interfaces |
US5745734A (en) * | 1995-09-29 | 1998-04-28 | International Business Machines Corporation | Method and system for programming a gate array using a compressed configuration bit stream |
US5745422A (en) * | 1996-11-12 | 1998-04-28 | International Business Machines Corporation | Cross-coupled bitline segments for generalized data propagation |
US5764954A (en) * | 1995-08-23 | 1998-06-09 | International Business Machines Corporation | Method and system for optimizing a critical path in a field programmable gate array configuration |
US5768178A (en) * | 1995-06-30 | 1998-06-16 | Micron Technology, Inc. | Data transfer circuit in a memory device |
US5777360A (en) * | 1994-11-02 | 1998-07-07 | Lsi Logic Corporation | Hexagonal field programmable gate array architecture |
US5802003A (en) * | 1995-12-20 | 1998-09-01 | International Business Machines Corporation | System for implementing write, initialization, and reset in a memory array using a single cell write port |
US5815726A (en) * | 1994-11-04 | 1998-09-29 | Altera Corporation | Coarse-grained look-up table architecture |
US5889411A (en) * | 1997-02-26 | 1999-03-30 | Xilinx, Inc. | FPGA having logic element carry chains capable of generating wide XOR functions |
US5914616A (en) * | 1997-02-26 | 1999-06-22 | Xilinx, Inc. | FPGA repeatable interconnect structure with hierarchical interconnect lines |
US5914906A (en) * | 1995-12-20 | 1999-06-22 | International Business Machines Corporation | Field programmable memory array |
US6054873A (en) * | 1996-12-05 | 2000-04-25 | International Business Machines Corporation | Interconnect structure between heterogeneous core regions in a programmable array |
US6069490A (en) * | 1997-12-02 | 2000-05-30 | Xilinx, Inc. | Routing architecture using a direct connect routing mesh |
US6086631A (en) * | 1998-04-08 | 2000-07-11 | Xilinx, Inc. | Post-placement residual overlap removal method for core-based PLD programming process |
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 |
US6107821A (en) * | 1999-02-08 | 2000-08-22 | Xilinx, Inc. | On-chip logic analysis and method for using the same |
US6110223A (en) * | 1996-10-28 | 2000-08-29 | Altera Corporation | Graphic editor for block diagram level design of circuits |
US6134154A (en) * | 1998-04-03 | 2000-10-17 | Nec Corporation | Semiconductor memory device with several access enabled using single port memory cell |
US6140839A (en) * | 1998-05-13 | 2000-10-31 | Kaviani; Alireza S. | Computational field programmable architecture |
US6173379B1 (en) * | 1996-05-14 | 2001-01-09 | Intel Corporation | Memory device for a microprocessor register file having a power management scheme and method for copying information between memory sub-cells in a single clock cycle |
US6172521B1 (en) * | 1997-04-11 | 2001-01-09 | Nec Corporation | Programmable logic IC having memories for previously storing a plurality of configuration data and a method of reconfigurating same |
US6175247B1 (en) * | 1998-04-14 | 2001-01-16 | Lockheed Martin Corporation | Context switchable field programmable gate array with public-private addressable sharing of intermediate data |
US6184709B1 (en) * | 1996-04-09 | 2001-02-06 | Xilinx, Inc. | Programmable logic device having a composable memory array overlaying a CLB array |
US6184707B1 (en) * | 1998-10-07 | 2001-02-06 | Altera Corporation | Look-up table based logic element with complete permutability of the inputs to the secondary signals |
US6205076B1 (en) * | 1998-03-27 | 2001-03-20 | Fujitsu Limited | Destructive read type memory circuit, restoring circuit for the same and sense amplifier |
US20010007428A1 (en) * | 1997-02-26 | 2001-07-12 | Young Steven P. | Interconnect structure for a programmable logic device |
US6275064B1 (en) * | 1997-12-22 | 2001-08-14 | Vantis Corporation | Symmetrical, extended and fast direct connections between variable grain blocks in FPGA integrated circuits |
US6292019B1 (en) * | 1999-05-07 | 2001-09-18 | Xilinx Inc. | Programmable logic device having configurable logic blocks with user-accessible input multiplexers |
US6346824B1 (en) * | 1996-04-09 | 2002-02-12 | Xilinx, Inc. | Dedicated function fabric for use in field programmable gate arrays |
US6348813B1 (en) * | 1999-06-06 | 2002-02-19 | Lattice Semiconductor Corporation | Scalable architecture for high density CPLD's having two-level hierarchy of routing resources |
US6381732B1 (en) * | 1999-01-14 | 2002-04-30 | Xilinx, Inc. | FPGA customizable to accept selected macros |
US6411128B2 (en) * | 1999-12-10 | 2002-06-25 | Nec Corporation | Logical circuit for serializing and outputting a plurality of signal bits simultaneously read from a memory cell array or the like |
US6430736B1 (en) * | 1999-02-26 | 2002-08-06 | Xilinx, Inc. | Method and apparatus for evolving configuration bitstreams |
US20020113619A1 (en) * | 2000-08-04 | 2002-08-22 | Leopard Logic, Inc. | Interconnection network for a Field Progammable Gate Array |
US20020125914A1 (en) * | 2001-03-08 | 2002-09-12 | Lg Electronics Inc. | Glitch free clock multiplexer circuit and method thereof |
US20020125910A1 (en) * | 1999-02-25 | 2002-09-12 | Xilinx, Inc. | Configurable logic element with expander structures |
US6469553B1 (en) * | 1999-01-08 | 2002-10-22 | Altera Corporation | Phase-locked loop circuitry for programmable logic devices |
US6469540B2 (en) * | 2000-06-15 | 2002-10-22 | Nec Corporation | Reconfigurable device having programmable interconnect network suitable for implementing data paths |
US20020161568A1 (en) * | 1997-05-30 | 2002-10-31 | Quickturn Design Systems, Inc. | Memory circuit for use in hardware emulation system |
US6515509B1 (en) * | 2000-07-13 | 2003-02-04 | Xilinx, Inc. | Programmable logic device structures in standard cell devices |
US6526559B2 (en) * | 2001-04-13 | 2003-02-25 | Interface & Control Systems, Inc. | Method for creating circuit redundancy in programmable logic devices |
US6529040B1 (en) * | 2000-05-05 | 2003-03-04 | Xilinx, Inc. | FPGA lookup table with speed read decoder |
US20030042931A1 (en) * | 1993-08-03 | 2003-03-06 | Ting Benjamin S. | Architecture and interconnect scheme for programmable logic circuits |
US6545501B1 (en) * | 2001-12-10 | 2003-04-08 | International Business Machines Corporation | Method and system for use of a field programmable function within a standard cell chip for repair of logic circuits |
US20030110430A1 (en) * | 2001-12-10 | 2003-06-12 | International Business Machines Corporation | Method and system for use of a field programmable gate array (FPGA) function within an application specific integrated circuit (ASIC) to enable creation of a debugger client within the ASIC |
US6593771B2 (en) * | 2001-12-10 | 2003-07-15 | International Business Machines Corporation | Method and system for use of a field programmable interconnect within an ASIC for configuring the ASIC |
US6601227B1 (en) * | 2001-06-27 | 2003-07-29 | Xilinx, Inc. | Method for making large-scale ASIC using pre-engineered long distance routing structure |
US6603330B1 (en) * | 2000-10-26 | 2003-08-05 | Cypress Semiconductor Corporation | Configuring digital functions in a digital configurable macro architecture |
US6629308B1 (en) * | 2000-07-13 | 2003-09-30 | Xilinx, Inc. | Method for managing database models for reduced programmable logic device components |
US6636070B1 (en) * | 1997-10-16 | 2003-10-21 | Altera Corp | Driver circuitry for programmable logic devices with hierarchical interconnection resources |
US6675309B1 (en) * | 2000-07-13 | 2004-01-06 | Xilinx, Inc. | Method for controlling timing in reduced programmable logic devices |
US20040010767A1 (en) * | 2002-07-12 | 2004-01-15 | Lattice Semiconductor Corporation | Hierarchical general interconnect architecture for high density fpga's |
US6714041B1 (en) * | 2002-08-30 | 2004-03-30 | Xilinx, Inc. | Programming on-the-fly (OTF) |
US20040103265A1 (en) * | 2002-10-16 | 2004-05-27 | Akya Limited | Reconfigurable integrated circuit |
US20040196066A1 (en) * | 1993-08-03 | 2004-10-07 | Ting Benjamin S. | Architecture and interconnect scheme for programmable logic circuits |
US6806730B2 (en) * | 2001-12-10 | 2004-10-19 | International Business Machines Corporation | Method and system for use of an embedded field programmable gate array interconnect for flexible I/O connectivity |
US6809979B1 (en) * | 2003-03-04 | 2004-10-26 | Fernandez & Associates, Llp | Complete refresh scheme for 3T dynamic random access memory cells |
US6838902B1 (en) * | 2003-05-28 | 2005-01-04 | Actel Corporation | Synchronous first-in/first-out block memory for a field programmable gate array |
US6894527B1 (en) * | 2003-05-12 | 2005-05-17 | Xilinx, Inc. | Evolved circuits for bitstream protection |
US20050134308A1 (en) * | 2003-12-22 | 2005-06-23 | Sanyo Electric Co., Ltd. | Reconfigurable circuit, processor having reconfigurable circuit, method of determining functions of logic circuits in reconfigurable circuit, method of generating circuit, and circuit |
US6920627B2 (en) * | 2002-12-13 | 2005-07-19 | Xilinx, Inc. | Reconfiguration of a programmable logic device using internal control |
US6924663B2 (en) * | 2001-12-28 | 2005-08-02 | Fujitsu Limited | Programmable logic device with ferroelectric configuration memories |
US6937535B2 (en) * | 2002-10-29 | 2005-08-30 | Hynix Semiconductor Inc. | Semiconductor memory device with reduced data access time |
US6956399B1 (en) * | 2004-02-05 | 2005-10-18 | Xilinx, Inc. | High-speed lookup table circuits and methods for programmable logic devices |
US6992505B1 (en) * | 2004-03-09 | 2006-01-31 | Xilinx, Inc. | Structures and methods of implementing a pass gate multiplexer with pseudo-differential input signals |
US6998872B1 (en) * | 2004-06-02 | 2006-02-14 | Xilinx, Inc. | Lookup table circuit optionally configurable as two or more smaller lookup tables with independent inputs |
US7010667B2 (en) * | 1997-02-11 | 2006-03-07 | Pact Xpp Technologies Ag | Internal bus system for DFPS and units with two- or multi-dimensional programmable cell architectures, for managing large volumes of data with a high interconnection complexity |
US7075333B1 (en) * | 2004-08-24 | 2006-07-11 | Xilinx, Inc. | Programmable circuit optionally configurable as a lookup table or a wide multiplexer |
US7126372B2 (en) * | 2004-04-30 | 2006-10-24 | Xilinx, Inc. | Reconfiguration port for dynamic reconfiguration—sub-frame access for reconfiguration |
US7126856B2 (en) * | 2000-09-02 | 2006-10-24 | Actel Corporation | Method and apparatus of memory clearing with monitoring RAM memory cells in a field programmable gated array |
US7129746B1 (en) * | 2003-07-31 | 2006-10-31 | Actel Corporation | System-on-a-chip integrated circuit including dual-function analog and digital inputs |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0474253B1 (en) | 1990-09-07 | 1998-12-02 | Nec Corporation | Register circuit for copying contents of one register into another register |
JP2724932B2 (en) * | 1991-12-03 | 1998-03-09 | 三菱電機株式会社 | Dual port memory |
US5365125A (en) | 1992-07-23 | 1994-11-15 | Xilinx, Inc. | Logic cell for field programmable gate array having optional internal feedback and optional cascade |
US5369622A (en) | 1993-04-20 | 1994-11-29 | Micron Semiconductor, Inc. | Memory with isolated digit lines |
EP0665998A4 (en) * | 1993-08-03 | 1996-06-12 | Xilinx Inc | Microprocessor-based fpga. |
US5692147A (en) | 1995-06-07 | 1997-11-25 | International Business Machines Corporation | Memory mapping method and apparatus to fold sparsely populated structures into densely populated memory columns or rows by selectively transposing X and Y address portions, and programmable gate array applications thereof |
US5701441A (en) | 1995-08-18 | 1997-12-23 | Xilinx, Inc. | Computer-implemented method of optimizing a design in a time multiplexed programmable logic device |
US5784313A (en) * | 1995-08-18 | 1998-07-21 | Xilinx, Inc. | Programmable logic device including configuration data or user data memory slices |
US5629637A (en) * | 1995-08-18 | 1997-05-13 | Xilinx, Inc. | Method of time multiplexing a programmable logic device |
US5646545A (en) * | 1995-08-18 | 1997-07-08 | Xilinx, Inc. | Time multiplexed programmable logic device |
US5600263A (en) * | 1995-08-18 | 1997-02-04 | Xilinx, Inc. | Configuration modes for a time multiplexed programmable logic device |
US5761483A (en) * | 1995-08-18 | 1998-06-02 | Xilinx, Inc. | Optimizing and operating a time multiplexed programmable logic device |
JPH09231788A (en) * | 1995-12-19 | 1997-09-05 | Fujitsu Ltd | Shift register and programmable logic circuit and programmable logic circuit system |
US5760602A (en) * | 1996-01-17 | 1998-06-02 | Hewlett-Packard Company | Time multiplexing a plurality of configuration settings of a programmable switch element in a FPGA |
US5956518A (en) | 1996-04-11 | 1999-09-21 | Massachusetts Institute Of Technology | Intermediate-grain reconfigurable processing device |
US5795068A (en) | 1996-08-30 | 1998-08-18 | Xilinx, Inc. | Method and apparatus for measuring localized temperatures and voltages on integrated circuits |
US6160419A (en) | 1997-11-03 | 2000-12-12 | Altera Corporation | Programmable logic architecture incorporating a content addressable embedded array block |
US6084429A (en) * | 1998-04-24 | 2000-07-04 | Xilinx, Inc. | PLD having a window pane architecture with segmented and staggered interconnect wiring between logic block arrays |
US5982655A (en) | 1998-09-29 | 1999-11-09 | Cisco Technology, Inc. | Method and apparatus for support of multiple memory types in a single memory socket architecture |
US6163168A (en) | 1998-12-09 | 2000-12-19 | Vantis Corporation | Efficient interconnect network for use in FPGA device having variable grain architecture |
US6150838A (en) | 1999-02-25 | 2000-11-21 | Xilinx, Inc. | FPGA configurable logic block with multi-purpose logic/memory circuit |
US6229337B1 (en) * | 1999-06-15 | 2001-05-08 | Ict Acquisition, Inc. | High-density programmable logic device with flexible local connections and multiplexer based global interconnections |
DE19946752A1 (en) * | 1999-09-29 | 2001-04-12 | Infineon Technologies Ag | Reconfigurable gate array |
US6255849B1 (en) * | 2000-02-04 | 2001-07-03 | Xilinx, Inc. | On-chip self-modification for PLDs |
US6487709B1 (en) | 2000-02-09 | 2002-11-26 | Xilinx, Inc. | Run-time routing for programmable logic devices |
US6331790B1 (en) | 2000-03-10 | 2001-12-18 | Easic Corporation | Customizable and programmable cell array |
US6515506B1 (en) | 2000-05-03 | 2003-02-04 | Marvell International, Ltd. | Circuit for reducing pin count of a semiconductor chip and method for configuring the chip |
US6490707B1 (en) | 2000-07-13 | 2002-12-03 | Xilinx, Inc. | Method for converting programmable logic devices into standard cell devices |
US6476636B1 (en) * | 2000-09-02 | 2002-11-05 | Actel Corporation | Tileable field-programmable gate array architecture |
US6531889B1 (en) * | 2000-10-10 | 2003-03-11 | Altera Corporation | Data processing system with improved latency and associated methods |
US6668361B2 (en) | 2001-12-10 | 2003-12-23 | International Business Machines Corporation | Method and system for use of a field programmable function within a chip to enable configurable I/O signal timing characteristics |
US6686769B1 (en) * | 2001-12-14 | 2004-02-03 | Altera Corporation | Programmable I/O element circuit for high speed logic devices |
AU2003256901A1 (en) * | 2002-08-09 | 2004-02-25 | Leopard Logic, Inc. | Via programmable gate array interconnect architecture |
US6650142B1 (en) | 2002-08-13 | 2003-11-18 | Lattice Semiconductor Corporation | Enhanced CPLD macrocell module having selectable bypass of steering-based resource allocation and methods of use |
US6667635B1 (en) | 2002-09-10 | 2003-12-23 | Xilinx, Inc. | FPGA lookup table with transmission gate structure for reliable low-voltage operation |
US7571303B2 (en) * | 2002-10-16 | 2009-08-04 | Akya (Holdings) Limited | Reconfigurable integrated circuit |
US6903575B1 (en) * | 2003-04-28 | 2005-06-07 | Lattice Semiconductor Corporation | Scalable device architecture for high-speed interfaces |
US7064577B1 (en) * | 2003-05-02 | 2006-06-20 | Altera Corporation | Method and apparatus for supporting variable speed configuration hardware |
US6867617B2 (en) * | 2003-07-18 | 2005-03-15 | Agere Systems Inc. | Half-rate clock logic block and method for forming same |
US7030651B2 (en) * | 2003-12-04 | 2006-04-18 | Viciciv Technology | Programmable structured arrays |
US7109752B1 (en) * | 2004-02-14 | 2006-09-19 | Herman Schmit | Configurable circuits, IC's, and systems |
US7157933B1 (en) * | 2004-02-14 | 2007-01-02 | Herman Schmit | Configurable circuits, IC's, and systems |
US7342415B2 (en) * | 2004-11-08 | 2008-03-11 | Tabula, Inc. | Configurable IC with interconnect circuits that also perform storage operations |
US7317331B2 (en) * | 2004-11-08 | 2008-01-08 | Tabula, Inc. | Reconfigurable IC that has sections running at different reconfiguration rates |
US7224181B1 (en) * | 2004-11-08 | 2007-05-29 | Herman Schmit | Clock distribution in a configurable IC |
US7330050B2 (en) * | 2004-11-08 | 2008-02-12 | Tabula, Inc. | Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements |
US7212448B1 (en) * | 2005-07-19 | 2007-05-01 | Xilinx, Inc. | Method and apparatus for multiple context and high reliability operation of programmable logic devices |
US7328384B1 (en) * | 2005-09-29 | 2008-02-05 | Xilinx, Inc. | Method and apparatus using device defects as an identifier |
-
2005
- 2005-03-15 US US11/082,196 patent/US7276933B1/en not_active Expired - Fee Related
-
2007
- 2007-08-18 US US11/840,963 patent/US7525342B2/en not_active Expired - Fee Related
Patent Citations (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4873459B1 (en) * | 1986-09-19 | 1995-01-10 | Actel Corp | Programmable interconnect architecture |
US4873459A (en) * | 1986-09-19 | 1989-10-10 | Actel Corporation | Programmable interconnect architecture |
US5021690A (en) * | 1989-11-13 | 1991-06-04 | Advanced Micro Devices, Inc. | Programmable logic array apparatus |
US5532958A (en) * | 1990-06-25 | 1996-07-02 | Dallas Semiconductor Corp. | Dual storage cell memory |
US5610829A (en) * | 1992-03-27 | 1997-03-11 | Xilinx, Inc. | Method for programming an FPLD using a library-based technology mapping algorithm |
US5521835A (en) * | 1992-03-27 | 1996-05-28 | Xilinx, Inc. | Method for programming an FPLD using a library-based technology mapping algorithm |
US5357153A (en) * | 1993-01-28 | 1994-10-18 | Xilinx, Inc. | Macrocell with product-term cascade and improved flip flop utilization |
US5659484A (en) * | 1993-03-29 | 1997-08-19 | Xilinx, Inc. | Frequency driven layout and method for field programmable gate arrays |
US20040196066A1 (en) * | 1993-08-03 | 2004-10-07 | Ting Benjamin S. | Architecture and interconnect scheme for programmable logic circuits |
US20030042931A1 (en) * | 1993-08-03 | 2003-03-06 | Ting Benjamin S. | Architecture and interconnect scheme for programmable logic circuits |
US5349250A (en) * | 1993-09-02 | 1994-09-20 | Xilinx, Inc. | Logic structure and circuit for fast carry |
US5682107A (en) * | 1994-04-01 | 1997-10-28 | Xilinx, Inc. | FPGA architecture with repeatable tiles including routing matrices and logic matrices |
US5426378A (en) * | 1994-04-20 | 1995-06-20 | Xilinx, Inc. | Programmable logic device which stores more than one configuration and means for switching configurations |
US5545575A (en) * | 1994-10-24 | 1996-08-13 | Motorola, Inc. | Method for manufacturing an insulated gate semiconductor device |
US5777360A (en) * | 1994-11-02 | 1998-07-07 | Lsi Logic Corporation | Hexagonal field programmable gate array architecture |
US5815726A (en) * | 1994-11-04 | 1998-09-29 | Altera Corporation | Coarse-grained look-up table architecture |
US5737235A (en) * | 1995-05-02 | 1998-04-07 | Xilinx Inc | FPGA with parallel and serial user interfaces |
US5631578A (en) * | 1995-06-02 | 1997-05-20 | International Business Machines Corporation | Programmable array interconnect network |
US5646544A (en) * | 1995-06-05 | 1997-07-08 | International Business Machines Corporation | System and method for dynamically reconfiguring a programmable gate array |
US5552721A (en) * | 1995-06-05 | 1996-09-03 | International Business Machines Corporation | Method and system for enhanced drive in programmmable gate arrays |
US5732246A (en) * | 1995-06-07 | 1998-03-24 | International Business Machines Corporation | Programmable array interconnect latch |
US5768178A (en) * | 1995-06-30 | 1998-06-16 | Micron Technology, Inc. | Data transfer circuit in a memory device |
US5764954A (en) * | 1995-08-23 | 1998-06-09 | International Business Machines Corporation | Method and system for optimizing a critical path in a field programmable gate array configuration |
US5745734A (en) * | 1995-09-29 | 1998-04-28 | International Business Machines Corporation | Method and system for programming a gate array using a compressed configuration bit stream |
US5719889A (en) * | 1995-12-20 | 1998-02-17 | International Business Machines Corporation | Programmable parity checking and comparison circuit |
US6233191B1 (en) * | 1995-12-20 | 2001-05-15 | International Business Machines Corporation | Field programmable memory array |
US6075745A (en) * | 1995-12-20 | 2000-06-13 | International Business Machines Corporation | Field programmable memory array |
US6130854A (en) * | 1995-12-20 | 2000-10-10 | International Business Machines Corporation | Programmable address decoder for field programmable memory array |
US6023421A (en) * | 1995-12-20 | 2000-02-08 | International Business Machines Corporation | Selective connectivity between memory sub-arrays and a hierarchical bit line structure in a memory array |
US6038192A (en) * | 1995-12-20 | 2000-03-14 | International Business Machines Corporation | Memory cells for field programmable memory array |
US6044031A (en) * | 1995-12-20 | 2000-03-28 | International Business Machines Corporation | Programmable bit line drive modes for memory arrays |
US6118707A (en) * | 1995-12-20 | 2000-09-12 | International Business Machines Corporation | Method of operating a field programmable memory array with a field programmable gate array |
US6091645A (en) * | 1995-12-20 | 2000-07-18 | International Business Machines Corporation | Programmable read ports and write ports for I/O buses in a field programmable memory array |
US5802003A (en) * | 1995-12-20 | 1998-09-01 | International Business Machines Corporation | System for implementing write, initialization, and reset in a memory array using a single cell write port |
US5914906A (en) * | 1995-12-20 | 1999-06-22 | International Business Machines Corporation | Field programmable memory array |
US6184709B1 (en) * | 1996-04-09 | 2001-02-06 | Xilinx, Inc. | Programmable logic device having a composable memory array overlaying a CLB array |
US6346824B1 (en) * | 1996-04-09 | 2002-02-12 | Xilinx, Inc. | Dedicated function fabric for use in field programmable gate arrays |
US6173379B1 (en) * | 1996-05-14 | 2001-01-09 | Intel Corporation | Memory device for a microprocessor register file having a power management scheme and method for copying information between memory sub-cells in a single clock cycle |
US6110223A (en) * | 1996-10-28 | 2000-08-29 | Altera Corporation | Graphic editor for block diagram level design of circuits |
US5745422A (en) * | 1996-11-12 | 1998-04-28 | International Business Machines Corporation | Cross-coupled bitline segments for generalized data propagation |
US6054873A (en) * | 1996-12-05 | 2000-04-25 | International Business Machines Corporation | Interconnect structure between heterogeneous core regions in a programmable array |
US7010667B2 (en) * | 1997-02-11 | 2006-03-07 | Pact Xpp Technologies Ag | Internal bus system for DFPS and units with two- or multi-dimensional programmable cell architectures, for managing large volumes of data with a high interconnection complexity |
US20010007428A1 (en) * | 1997-02-26 | 2001-07-12 | Young Steven P. | Interconnect structure for a programmable logic device |
US20020008541A1 (en) * | 1997-02-26 | 2002-01-24 | Xilinx, Inc. | Interconnect structure for a programmable logic device |
US5889411A (en) * | 1997-02-26 | 1999-03-30 | Xilinx, Inc. | FPGA having logic element carry chains capable of generating wide XOR functions |
US5914616A (en) * | 1997-02-26 | 1999-06-22 | Xilinx, Inc. | FPGA repeatable interconnect structure with hierarchical interconnect lines |
US6172521B1 (en) * | 1997-04-11 | 2001-01-09 | Nec Corporation | Programmable logic IC having memories for previously storing a plurality of configuration data and a method of reconfigurating same |
US20020161568A1 (en) * | 1997-05-30 | 2002-10-31 | Quickturn Design Systems, Inc. | Memory circuit for use in hardware emulation system |
US6732068B2 (en) * | 1997-05-30 | 2004-05-04 | Quickturn Design Systems Inc. | Memory circuit for use in hardware emulation system |
US6636070B1 (en) * | 1997-10-16 | 2003-10-21 | Altera Corp | Driver circuitry for programmable logic devices with hierarchical interconnection resources |
US6069490A (en) * | 1997-12-02 | 2000-05-30 | Xilinx, Inc. | Routing architecture using a direct connect routing mesh |
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 |
US6275064B1 (en) * | 1997-12-22 | 2001-08-14 | Vantis Corporation | Symmetrical, extended and fast direct connections between variable grain blocks in FPGA integrated circuits |
US6205076B1 (en) * | 1998-03-27 | 2001-03-20 | Fujitsu Limited | Destructive read type memory circuit, restoring circuit for the same and sense amplifier |
US6134154A (en) * | 1998-04-03 | 2000-10-17 | Nec Corporation | Semiconductor memory device with several access enabled using single port memory cell |
US6086631A (en) * | 1998-04-08 | 2000-07-11 | Xilinx, Inc. | Post-placement residual overlap removal method for core-based PLD programming process |
US6175247B1 (en) * | 1998-04-14 | 2001-01-16 | Lockheed Martin Corporation | Context switchable field programmable gate array with public-private addressable sharing of intermediate data |
US6140839A (en) * | 1998-05-13 | 2000-10-31 | Kaviani; Alireza S. | Computational field programmable architecture |
US6184707B1 (en) * | 1998-10-07 | 2001-02-06 | Altera Corporation | Look-up table based logic element with complete permutability of the inputs to the secondary signals |
US6469553B1 (en) * | 1999-01-08 | 2002-10-22 | Altera Corporation | Phase-locked loop circuitry for programmable logic devices |
US6381732B1 (en) * | 1999-01-14 | 2002-04-30 | Xilinx, Inc. | FPGA customizable to accept selected macros |
US6107821A (en) * | 1999-02-08 | 2000-08-22 | Xilinx, Inc. | On-chip logic analysis and method for using the same |
US20020125910A1 (en) * | 1999-02-25 | 2002-09-12 | Xilinx, Inc. | Configurable logic element with expander structures |
US6430736B1 (en) * | 1999-02-26 | 2002-08-06 | Xilinx, Inc. | Method and apparatus for evolving configuration bitstreams |
US6292019B1 (en) * | 1999-05-07 | 2001-09-18 | Xilinx Inc. | Programmable logic device having configurable logic blocks with user-accessible input multiplexers |
US6348813B1 (en) * | 1999-06-06 | 2002-02-19 | Lattice Semiconductor Corporation | Scalable architecture for high density CPLD's having two-level hierarchy of routing resources |
US6411128B2 (en) * | 1999-12-10 | 2002-06-25 | Nec Corporation | Logical circuit for serializing and outputting a plurality of signal bits simultaneously read from a memory cell array or the like |
US6529040B1 (en) * | 2000-05-05 | 2003-03-04 | Xilinx, Inc. | FPGA lookup table with speed read decoder |
US6469540B2 (en) * | 2000-06-15 | 2002-10-22 | Nec Corporation | Reconfigurable device having programmable interconnect network suitable for implementing data paths |
US6629308B1 (en) * | 2000-07-13 | 2003-09-30 | Xilinx, Inc. | Method for managing database models for reduced programmable logic device components |
US20030080777A1 (en) * | 2000-07-13 | 2003-05-01 | Xilinx, Inc. | Programmable logic device structures in standard cell devices |
US6675309B1 (en) * | 2000-07-13 | 2004-01-06 | Xilinx, Inc. | Method for controlling timing in reduced programmable logic devices |
US6515509B1 (en) * | 2000-07-13 | 2003-02-04 | Xilinx, Inc. | Programmable logic device structures in standard cell devices |
US20020113619A1 (en) * | 2000-08-04 | 2002-08-22 | Leopard Logic, Inc. | Interconnection network for a Field Progammable Gate Array |
US7126856B2 (en) * | 2000-09-02 | 2006-10-24 | Actel Corporation | Method and apparatus of memory clearing with monitoring RAM memory cells in a field programmable gated array |
US6603330B1 (en) * | 2000-10-26 | 2003-08-05 | Cypress Semiconductor Corporation | Configuring digital functions in a digital configurable macro architecture |
US20020125914A1 (en) * | 2001-03-08 | 2002-09-12 | Lg Electronics Inc. | Glitch free clock multiplexer circuit and method thereof |
US6526559B2 (en) * | 2001-04-13 | 2003-02-25 | Interface & Control Systems, Inc. | Method for creating circuit redundancy in programmable logic devices |
US6601227B1 (en) * | 2001-06-27 | 2003-07-29 | Xilinx, Inc. | Method for making large-scale ASIC using pre-engineered long distance routing structure |
US20030110430A1 (en) * | 2001-12-10 | 2003-06-12 | International Business Machines Corporation | Method and system for use of a field programmable gate array (FPGA) function within an application specific integrated circuit (ASIC) to enable creation of a debugger client within the ASIC |
US6806730B2 (en) * | 2001-12-10 | 2004-10-19 | International Business Machines Corporation | Method and system for use of an embedded field programmable gate array interconnect for flexible I/O connectivity |
US6545501B1 (en) * | 2001-12-10 | 2003-04-08 | International Business Machines Corporation | Method and system for use of a field programmable function within a standard cell chip for repair of logic circuits |
US6593771B2 (en) * | 2001-12-10 | 2003-07-15 | International Business Machines Corporation | Method and system for use of a field programmable interconnect within an ASIC for configuring the ASIC |
US6924663B2 (en) * | 2001-12-28 | 2005-08-02 | Fujitsu Limited | Programmable logic device with ferroelectric configuration memories |
US20040010767A1 (en) * | 2002-07-12 | 2004-01-15 | Lattice Semiconductor Corporation | Hierarchical general interconnect architecture for high density fpga's |
US7028281B1 (en) * | 2002-07-12 | 2006-04-11 | Lattice Semiconductor Corporation | FPGA with register-intensive architecture |
US6714041B1 (en) * | 2002-08-30 | 2004-03-30 | Xilinx, Inc. | Programming on-the-fly (OTF) |
US20040103265A1 (en) * | 2002-10-16 | 2004-05-27 | Akya Limited | Reconfigurable integrated circuit |
US6937535B2 (en) * | 2002-10-29 | 2005-08-30 | Hynix Semiconductor Inc. | Semiconductor memory device with reduced data access time |
US6920627B2 (en) * | 2002-12-13 | 2005-07-19 | Xilinx, Inc. | Reconfiguration of a programmable logic device using internal control |
US6809979B1 (en) * | 2003-03-04 | 2004-10-26 | Fernandez & Associates, Llp | Complete refresh scheme for 3T dynamic random access memory cells |
US6894527B1 (en) * | 2003-05-12 | 2005-05-17 | Xilinx, Inc. | Evolved circuits for bitstream protection |
US6838902B1 (en) * | 2003-05-28 | 2005-01-04 | Actel Corporation | Synchronous first-in/first-out block memory for a field programmable gate array |
US7129746B1 (en) * | 2003-07-31 | 2006-10-31 | Actel Corporation | System-on-a-chip integrated circuit including dual-function analog and digital inputs |
US20050134308A1 (en) * | 2003-12-22 | 2005-06-23 | Sanyo Electric Co., Ltd. | Reconfigurable circuit, processor having reconfigurable circuit, method of determining functions of logic circuits in reconfigurable circuit, method of generating circuit, and circuit |
US6956399B1 (en) * | 2004-02-05 | 2005-10-18 | Xilinx, Inc. | High-speed lookup table circuits and methods for programmable logic devices |
US6992505B1 (en) * | 2004-03-09 | 2006-01-31 | Xilinx, Inc. | Structures and methods of implementing a pass gate multiplexer with pseudo-differential input signals |
US7126372B2 (en) * | 2004-04-30 | 2006-10-24 | Xilinx, Inc. | Reconfiguration port for dynamic reconfiguration—sub-frame access for reconfiguration |
US6998872B1 (en) * | 2004-06-02 | 2006-02-14 | Xilinx, Inc. | Lookup table circuit optionally configurable as two or more smaller lookup tables with independent inputs |
US7075333B1 (en) * | 2004-08-24 | 2006-07-11 | Xilinx, Inc. | Programmable circuit optionally configurable as a lookup table or a wide multiplexer |
Also Published As
Publication number | Publication date |
---|---|
US20080036494A1 (en) | 2008-02-14 |
US7525342B2 (en) | 2009-04-28 |
US7276933B1 (en) | 2007-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7342415B2 (en) | Configurable IC with interconnect circuits that also perform storage operations | |
US9048833B2 (en) | Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements | |
US7317331B2 (en) | Reconfigurable IC that has sections running at different reconfiguration rates | |
US7532030B2 (en) | Method and apparatus for accessing stored data in a reconfigurable IC | |
US7420389B2 (en) | Clock distribution in a configurable IC | |
US7276933B1 (en) | Reconfigurable IC that has sections running at different looperness | |
US7224182B1 (en) | Hybrid configurable circuit for a configurable IC | |
US8726213B2 (en) | Method and apparatus for decomposing functions in a configurable IC | |
US7816944B2 (en) | Variable width writing to a memory of an IC | |
US7825684B2 (en) | Variable width management for a memory of a configurable IC | |
US7310003B2 (en) | Configurable IC with interconnect circuits that have select lines driven by user signals | |
US20110221471A1 (en) | Controllable storage elements for an ic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: TABULA, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TEIG, STEVEN;SCHMIT, HERMAN;REDGRAVE, JASON;REEL/FRAME:018167/0044;SIGNING DATES FROM 20060630 TO 20060707 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: TABULA (ASSIGNMENT FOR THE BENEFIT OF CREDITORS), Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TABULA, INC.;REEL/FRAME:035783/0055 Effective date: 20150427 |
|
AS | Assignment |
Owner name: ALTERA CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TABULA (ASSIGNMENT FOR THE BENEFIT OF CREDITORS), LLC;REEL/FRAME:036050/0792 Effective date: 20150622 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20191002 |