WO1995022205A1 - Tile based architecture for fpga - Google Patents

Tile based architecture for fpga Download PDF

Info

Publication number
WO1995022205A1
WO1995022205A1 PCT/US1995/001554 US9501554W WO9522205A1 WO 1995022205 A1 WO1995022205 A1 WO 1995022205A1 US 9501554 W US9501554 W US 9501554W WO 9522205 A1 WO9522205 A1 WO 9522205A1
Authority
WO
WIPO (PCT)
Prior art keywords
tile
line
εaid
architecture
fpga
Prior art date
Application number
PCT/US1995/001554
Other languages
French (fr)
Inventor
Danesh Tavana
Wilson K. Yee
Victor A. Holen
Original Assignee
Xilinx, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx, Inc. filed Critical Xilinx, Inc.
Priority to EP95909504A priority Critical patent/EP0698312A1/en
Priority to JP52129595A priority patent/JP3547446B2/en
Publication of WO1995022205A1 publication Critical patent/WO1995022205A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/1778Structural details for adapting physical parameters
    • H03K19/17796Structural details for adapting physical parameters for physical disposition of blocks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17704Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns

Definitions

  • the invention relates to programmable logic devices formed in integrated circuits and more particularly to an architecture of a programmable logic device in which logic blocks are provided in a repeating pattern.
  • FPGAs Field programmable gate arrays
  • An FPGA comprises an array of configurable logic blocks (CLBs) which are programmably interconnected to each other to provide a logic function desired by a user.
  • CLBs configurable logic blocks
  • An FPGA is considered to be a general purpose device, i.e. being capable of performing any one of a plurality of functions, and is programmed by an end user to perform a selected function. Because of this design flexibility, a general purpose FPGA includes a significant number of wiring lines and transistors which remain unused in most applications. Moreover, FPGAs include overhead devices which facilitate programing of the FPGA to do the specified function. These overhead devices undesirably add area to the FPGA chip.
  • a field programmable gate array (FPGA) architecture includes repeatable tiles.
  • Each tile comprises a programmable routing matrix and a configurable logic block matrix.
  • the configurable logic block matrix is programmably connectable to the programmable routing matrix, as well as to the configurable logic block matrices in adjacent tiles.
  • the programmable routing matrix is programmably connectable to the programmable routing matrices adjacent to the tile, as well as to long lines which extend across the tile.
  • each tile provides a combination of logic, connection to nearby tiles, and connection to a general routing structure. A plurality of these tiles are joined together to form an array of tiles which make up the functional portion of an FPGA chip.
  • the programmable routing matrix and configurable logic block matrix minimize the number of programmable interconnection points (PIPs), thereby reducing expensive chip area and maximizing density of the entire chip.
  • PIPs programmable interconnection points
  • proper positioning of the PIPs ensures the necessary routing flexibility, thereby maximizing functionality of the FPGA.
  • a tile architecture has a set of signal lines exiting the tile at the boundaries. Thus, for example, signal lines exiting at the right of one tile connect with signal lines exiting at the left of another tile. In one embodiment, adjacent tiles are identical, forming a repeating pattern.
  • adjacent tiles are not identical but have signal lines at least most of which match at the tile boundaries.
  • a chip can be formed as an array of modular units which match at their boundaries, and additional flexibility of designing tiles for use in a plurality of chip designs i ⁇ easily available.
  • Fig. 1 shows an FPGA chip which includes components' according to the present invention.
  • Fig. 2A shows a single core tile which populate ⁇ a majority of the FPGA chip illustrated in Fig. 1.
  • Fig. 2B shows four adjacent core tiles of the type illustrated in Fig. 2A.
  • Fig. 3A illustrates a configurable logic block matrix which is part of the tile of Fig. 2A.
  • Fig. 3B illustrates a multiplexer structure which implements all PIPs which connect the output lines of a configurable logic block to one output line.
  • Fig. 3C shows one embodiment of a multiplexer structure which drives a configurable logic block input line.
  • Fig. 4C illustrates the configurable logic block in the matrix of Fig.
  • Fig. 4B illustrates tri-state buffer block 302 of Fig. 3A.
  • Fig. 4C illustrates the output enable block 309 of Fig. 3A.
  • Fig. 4D show ⁇ a look up table embodiment of the F, G, H and J function generator ⁇ of Fig. 4A.
  • Fig. 4E ⁇ how ⁇ another look up table embodiment of the F, G, H and J function generator ⁇ of Fig. 4A.
  • Fig. 4F shows one Karnaugh map for the look up table function generator of Fig. 4D or 4E.
  • Fig. 4G show ⁇ one of the 2 16 logic function ⁇ which can be implemented by the look up table function generator of Fig. 4D or 4E.
  • FIG. 5A-5C illustrate application of the configurable logic block of Fig. 4A to form a carry chain, a cascadable decode circuit, and two 5-input combinational functions, respectively.
  • Fig. 6 illustrate ⁇ the programmable routing matrix of Fig. 2A.
  • Fig. 7A illustrate ⁇ an example of the connectivity achieved by a programmable routing matrix of the invention such as shown in Fig. 6.
  • Fig. 7B illustrates an example of the connectivity achieved by the combination of the programmable routing matrix of Fig. 6 and the tile structure of Fig. 2A or 2B.
  • Fig. 8 illustrate ⁇ connection ⁇ from global signal pads near corners of a chip to global signal lines which extend near four edges of the chip and connect to global lines which drive core tiles.
  • Fig. 6 illustrate ⁇ the programmable routing matrix of Fig. 2A.
  • Fig. 7A illustrate ⁇ an example of the connectivity achieved by a programmable routing matrix of the invention such as shown in Fig. 6.
  • Fig. 7B illustrates an
  • FIG. 9 illustrates long line splitters which are provided on long lines in one embodiment of the invention.
  • Figs. 10A-10D illustrate, respectively, left, top, right, and bottom edge tiles according to one embodiment of the invention.
  • Fig ⁇ . 11A-11D illustrate upper left, upper right, lower right, and lower left corner tiles for the same embodiment.
  • Fig. 12 illustrated a logic diagram for one embodiment of the oscillator structure used in Fig. 11B.
  • a ⁇ mall solid black dot at the intersection ⁇ of two lines indicates a permanent electrical connection between the cros ⁇ ing lines.
  • An open circle enclosing an intersection between two lines indicates a programmable connection between the lines (for example, a pass transistor which is turned on to make the connection) .
  • Open circles represent bidirectional signal flow between the two lines.
  • An open triangle at an intersection of two lines indicates a programmable connection with signal flow going onto the line pointed to by the apex of the triangle. (The signal is of course then present on the full length of the line.
  • programmable connections are provided by using programmable interconnection points (PIPs), wherein each PIP includes at lea ⁇ t one transistor.
  • PIPs programmable interconnection points
  • a triangle on a line which is not intersected by another line indicates a buffer which produces signal flow in the direction indicated by the apex of the triangle.
  • ENOUT and ENLL illustrated in Fig. 3A
  • a line which ends within the tile or matrix structure i.e. does not extend to the border of a tile or matrix
  • FIG. 1 shows an FPGA chip 100 according to the present invention. ' In the center portion of chip 100 are a plurality of identical core tiles 101, which are interconnected by conductive lines (described in detail below) . Along the four edges of chip 100 are west, north, east, and south edge tiles 103, 104, 105, 106, respectively.
  • Chip 100 includes pads, i.e. pads P1-P56, for connecting edge tiles 103, 104, 105, 106, and corner tiles 113-116 to external pins of a package (which holds chip 100) .
  • pads P1-P56 for connecting edge tiles 103, 104, 105, 106, and corner tiles 113-116 to external pins of a package (which holds chip 100) .
  • each edge tile is further connected to a core tile 101.
  • edge tiles are connected to different numbers of pads P, typically from zero to four pads (explained in detail in reference to Fig ⁇ . lOa-lOd) .
  • Fig. 1 al ⁇ o illu ⁇ trate ⁇ high voltage source pads VCC and low voltage source pads GND.
  • FIG. 2A shows a core tile 101.
  • Core tile 101 includes a programmable routing matrix 201 and a configurable logic block matrix 202.
  • Extending to the west from programmable routing matrix 201 are twelve lines with suffixes 0 through 11. These include single length west lines W1-W5, W7-W11, and double length west lines DW0 and DW6 (described in detail below) .
  • Extending to the north from programmable routing matrix 201 are single length north lines N1-N5, N7-N11 and double length north lines DN0 and DN6. Extending to the east are single length east lines E1-E5 and E7-E11 and double length east lines DEO and DE6. Extending to the south are single length south lines S1-S5 and S7-S11 and double length south lines DSO and DS6. Extending east to west acros ⁇ tile 101 are double length horizontal line ⁇ DH0 and DH6. Extending north to ⁇ outh across tile 101 are double length vertical lines DV0 and DV6. Fig.
  • FIG. 2B shows four adjacent core tiles 101a, 101b, 101c and lOld having a configuration identical to tile 101 illustrated in Fig. 2A. For clarity in Fig. 2B, most lines are not labeled. As mentioned previously, lines extending to the edges of tile 101 connect to lines in adjacent tiles. For example, single length west line Wlb in tile 101b extending to the west from programmable routing matrix 201b connects to single length east line Ela in adjacent tile 101a. Double length horizontal line DH6a of tile 101a is coupled to double length west line DW6b of tile 101b, and is further coupled to a double length ea ⁇ t line DE6 of a tile not ⁇ hown in Fig.
  • Fig. 2B also illustrates that horizontal global lines GH0 and GH1 and vertical global line ⁇ GVO and GVl extend continuou ⁇ ly from one tile 101 to the next.
  • the ⁇ e global lines may be connected to a common line at the edge of the tile ⁇ o that a signal on a global line such a ⁇ GHO extends through all tiles.
  • configurable logic block (CLB) matrix 202 is connected to the CLB matrix in the west tile (not shown) by output lines Q0-Q3 and input lines QW0-QW3, to the CLB matrix in the north tile (not shown) by output lines Q0-Q3 and input lines QN0-QN3, to the CLB matrix in the east by output lines Q0-Q3 and input lines QE0-QE3, and to the CLB matrix in the south tile (not shown) by output lines Q0-Q3 and input lines QS0-QS3.
  • output lines Q0-Q3 carry the ⁇ ame signal ⁇ from CLB matrix 202 to adjacent tiles in four directions and thus have the same name ⁇ .
  • Carry-in line CIN and carry-out line COUT which extend vertically in tile 101, connect to carry-out and carry-in lines, respectively, in adjacent tiles to form a fast carry path for arithmetic functions, as di ⁇ cu ⁇ sed in detail in U.S. Patent No. 5,349,250, "LOGIC STRUCTURE AND CIRCUIT FOR FAST CARRY", which is incorporated herein by reference.
  • Configurable Lo ⁇ ic Block Matrix 202 Fig. 3A illustrate ⁇ configurable logic block (CLB) matrix 202 of Fig. 2a.
  • CLB matrix 202 includes a CLB 301, a tristate buffer block 302, an input interconnect ⁇ tructure 303, a CLB output interconnect ⁇ tructure 304, a feedback interconnect ⁇ tructure 305, a general input interconnect ⁇ tructure 306, a register control interconnect structure 307, an output interconnect structure 308, and an output enable block 309.
  • Sparse Pioulation Programmable connections are provided by using programmable interconnection points (PIPs) , wherein each PIP includes at least one transistor. As is well known in the art, each transistor occupie ⁇ valuable space on the chip substrate. Thus, in accordance with the present invention and referring to Fig. 3A, a majority of the horizontal and vertical lines in input interconnect structure 303, feedback interconnect structure 305, general input interconnect structure 306, and register control interconnect structure 307 are not programmably connectable. In other words, these structure ⁇ are ⁇ parsely populated with PIPs, or are spar ⁇ ely "pipulated” . Spar ⁇ e pipulation minimize ⁇ chip area u ⁇ ed by PIPs, thereby maximizing density of the entire chip.
  • PIPs programmable interconnection points
  • PIPs are positioned to allow connection from each output line Q0-Q3 from CLB output interconnect structure 304 to one of the function generators F, G, H, or J of an adjacent tile in each of the four compas ⁇ direction ⁇ .
  • general input interconnect structure 306 provides four to six PIPs for each CLB input line (J0-J3, JB, H0-H3, HB, G0-G3, GB, F0-F3 and FB) to CLB 301.
  • Feedback interconnect structure 305 provides direct connections from two of output lines Q0-Q3 to one of the function generator input terminals in CLB 301.
  • 24 PIPs in output interconnect structure 308 connect output lines Q0-Q7 to tile interconnect lines M0-M23.
  • signals on tile interconnect lines M0-M23 are selectively transferred between CLB 301 and programmable routing matrix 201 (via CLB output interconnect structure 304, general input interconnect structure 306, and output interconnect structure 308) .
  • less than one intersection in eight is provided with a PIP, thereby minimizing silicon area. Yet, connectivity from any output line to any input line is ensured by the PIPs provided.
  • CLB 301 A configurable logic block (CLB) 301 is illustrated in Fig. 4A.
  • CLB 301 includes four function generators F, G, H, and J, wherein each function generator comprises a 16-bit look up table that generates an output signal determined by the four input signal ⁇ provided to the function generator and the value ⁇ stored in the look up table.
  • function generator F generates an output signal determined by the input signal ⁇ provided on line ⁇ F0-F3
  • function generator G generate ⁇ an output ⁇ ignal determined by the signals provided on CLB input lines G0-G3
  • function generator H generates an output signal determined by the signals provided on CLB input lines H0-H3
  • function generator J generates an output signal determined by the signals provided on CLB input lines J0-J3.
  • Fig. 4D illu ⁇ trate ⁇ a look up table, in this embodiment a 16-bit RAM, which provides an output signal in response to any one of sixteen possible combinations of four input signals.
  • input signals A and B control the X decoder to select any one of the four columns in the 16-bit RAM.
  • input signals C and D control the Y decoder to select any one of the four rows in the 16-bit RAM.
  • a particular bit stored in a particular one of the ⁇ ixteen locations in the 16 Select Bits register is transmitted to the output lead OUT.
  • the signal A, B, C, D is applied to the leads so labeled.
  • this regi ⁇ ter configuration also provides any one of 216 logic functions.
  • the memory bits in look up tables F, G, H and J are typically loaded during configuration of the chip, for example through a shift register, or alternatively by an addres ⁇ ing means.
  • the memory bit ⁇ are also loaded during operation of the chip, thereby reconfiguring the chip on the fly.
  • a reconfigurable memory structure is discu ⁇ ed in commonly a ⁇ igned, U. S. Patent No. 5,343,406 invented by Freeman et al.
  • Function generators F, G, H, and J provide output signals on CLB output lines X, Y, Z, and V, respectively. These output ⁇ ignal ⁇ from function generator ⁇ F, G, H, and J control multiplexer ⁇ Cl, C2, C3, and C4, thereby providing a cumulative carry-out function COUT.
  • Multiplexer Cl receive ⁇ a carry-in ⁇ ignal on line CIN and an input ⁇ ignal on line FB, and generate ⁇ an output ⁇ ignal on line CF.
  • Multiplexer C2 receive ⁇ the ⁇ ignal on line CF and an input ⁇ ignal on line GB, and generate ⁇ an output ⁇ ignal on line CG.
  • Multiplexers C3 and C4 are connected in the same manner a ⁇ Multiplexer ⁇ Cl and C2.
  • Multiplexer C4 provide ⁇ an output signal on line COUT from CLB 301.
  • each CLB 301 includes four storage devices RX, RY, RZ, and RV.
  • These storage devices RX, RY, RZ, and RV each comprise flip flops with master and slave stages and an output multiplexer which takes outputs from the master and slave stages as inputs.
  • devices RX, RY, RZ, and RV can be configured by the multiplexer to serve a ⁇ either flip flop ⁇ or as latches.
  • periodic repowering of the carry signal is nece ⁇ ary.
  • a repowering buffer comprising inverters 1121 and 1122 is positioned every four multiplexers in the carry path, or once every CLB 301.
  • a repowering buffer is provided every two multiplexer ⁇ in the carry path, thus two repowering buffers are provided in every CLB 301.
  • CLB 301 includes five input lines per function generator. For example, referring to function generator F, CLB input line ⁇ F0-F3 provide input ⁇ ignal ⁇ to function generator F, and a fifth CLB input line FB provides a multiplexer control input signal.
  • Function generators G, H, and J are configured in a similar manner.
  • Three input lines CLK, CE, and RST provide clock, clock enable, and re ⁇ et ⁇ ignal ⁇ , re ⁇ pectively, to regi ⁇ ter ⁇ RX, RY, RZ, and RV. A ⁇ shown in Fig.
  • the three output signals include: «a direct, unregistered output signal from the function generator (provided on CLB output lines X, Y, Z, or V) , »an alternative, unregi ⁇ tered output ⁇ ignal which may be derived from one of the CLB input ⁇ ignals, a signal from the carry chain, or in two ca ⁇ e ⁇ a ⁇ ignal from a multiplexer which provide ⁇ an output ⁇ ignal of a five- input function (provided on CLB output line ⁇ XB, YB, ZB, or VB) , and »a registered, output signal which may be loaded by the function generator or by one of the sources of the alternative output signal (provided on CLB output lines XQ, YQ, ZQ, or VQ) .
  • CLB output line X receives a direct unregi ⁇ tered output signal from function generator F.
  • CLB output line XB receives either the signal on CLB input line FB or the output signal of multiplexer SI (as determined by multiplexer Bl) , which in turn i ⁇ derived from either the carry-out ⁇ ignal CF or the five-input function-generator output signal from multiplexer FG (see discussion of Fig. 5C below) .
  • CLB output line XQ receives the regi ⁇ tered output signal from register RX, which derives its D input signal either directly from function generator F (the signal on output line X) or the alternative output signal on line XB as determined by multiplexer DI.
  • output line K provide ⁇ a constant signal, which may be high or low, as selected by multiplexer PG.
  • multiplexers D1-D4 selectively provide either the output signals from function generators F, G, H, and J (the same signals on CLB output lines X-V) or the output ⁇ ignal ⁇ from multiplexer ⁇ B1-B4 to registers RX-RV, re ⁇ pectively.
  • multiplexer ⁇ SI and S3 are set to forward the carry signal ⁇ of multiplexer ⁇ Cl and C3 , re ⁇ pectively, then multiplexer ⁇ B1-B4 ⁇ elect between the input signals on CLB input lines FB-JB, respectively, and the output signals of multiplexers C1-C4.
  • Multiplexers C1-C4 in addition to being used for the carry function in an arithmetic operation, al ⁇ o generate wide AND and OR functions.
  • a logic 0 is placed on line FB to program multiplexer Cl to generate an AND function of the F function generator output signal on CLB output line X and the carry-in signal on line CIN.
  • a logic 1 is placed on CLB input line FB to program- multiplexer Cl to generate an OR function of the complement of the output signal on CLB output line X and the carry-in signal on line CIN.
  • the OR function is achieved by loading the inverse values into the truth table. The function of multiplexers C1-C4 and their interaction with the logic block are further discussed in application serial no. 08/116,659 [M-2565] incorporated by reference.
  • Example Applications of CLB 301 Figs. 5A-5C illustrate applications using CLB 301 (described in detail in reference to Fig. 4A) to form a carry chain, a cascadable decode circuit and 2 five-input functions, respectively.
  • the ⁇ e figures use heavy lines to illustrate lines of CLB 301 which are used for the particular selected function and thin dashed lines to indicate lines and elements not used for the particular function.
  • CLB 301 is configured to compute a half sum H3H2H1H0 (where H3, H2, Hi, and HO are the four bits of a four-bit half-sum) and the carry bit ⁇ C3C2C1C0 of two numbers A3A2A1A0 and B3B2B1B0.
  • CLB (not shown), preferably po ⁇ itioned in the tile to the right or left of the one shown, will be used to complete the sum.
  • Operands A3 and B3 are placed on any two of CLB input lines J0-J3.
  • Operands A2 and B2 are placed on any two of CLB input lines H0-H3.
  • Al and BI are placed on any two of CLB input lines G0-G3.
  • A0 and B0 are placed on any two of CLB input lines F0-F3.
  • Unused line ⁇ are either held high or held low.
  • Each of function generator ⁇ F, G, H, and J is loaded with the truth table of the XOR function (which is the half sum of its input signals) .
  • the truth table takes into account the values applied to unused input line ⁇ .
  • Multiplexers Cl, C2, C3, and C4 are controlled by the output signals of function generators F, G, H and J, respectively. Specifically, if the function generator output signal is a logic 1 ( ⁇ ignal ⁇ A and B are not equal) , the carry-in value i ⁇ forwarded to the carry-out of that bit, and if the function generator output signal is a logic 0 (signals A and B are equal), the value of signal A or signal B is forwarded to the carry-out of that bit.
  • Multiplexers B1-B4, SI and S3 are controlled to forward the carry-out of each bit to the "B" CLB output line (i.e.
  • CLB output lines XB, YB, ZB, and VB CLB output lines XB, YB, ZB, and VB) of that bit.
  • the function generator output signal for each bit (on CLB output lines X, Y, Z, and V) is provided as the half sum output for that bit.
  • CLB 301 is configured to operate as a cascadable decoder. A 16-bit addres ⁇ repre ⁇ ented by ⁇ ignals A0-A15, i ⁇ placed on CLB input lines F0-F3, G0-G3, and J0-J3. CLB input lines FB, GB, HB, and JB are grounded.
  • each of function generator ⁇ F, G, H, and J include a ⁇ ingle logic 1 to reflect a portion of a predetermined addre ⁇ .
  • CLB 301 is configured to generate two functions of five input signal ⁇ each.
  • Function generator ⁇ F and G generate a fir ⁇ t function of five input ⁇ ignals on CLB output line XB and function generators H and J generate a second function of five input signals on CLB output line ZB.
  • For the first function four input signal ⁇ A0-A3 are provided on the CLB input lines to both function generators F and G and the fifth input signal A4 is provided to line FB.
  • Input signal A4 causes multiplexer FG to select the output signal of function generator F or function generator G.
  • multiplexer SI is programmed by its memory cell to select the output signal of multiplexer FG, and multiplexer Bl i ⁇ programmed by its memory cell to select the output signal of multiplexer SI.
  • the five-input function output ⁇ ignal from function generators F and G is provided on CLB output line XB.
  • the function of the five input signals- B0-B4 provided to function generators H and J is generated on CLB output line ZB.
  • Loading the appropriate truth tables into the two as ⁇ ociated function generators F and G produces the desired function of five input signals.
  • a 32-bit look up table is stored in function generators F and G (i.e. two 16-bit look up table ⁇ ) .
  • Tri ⁇ tate Buffer 302 Fig 4B illustrates a schematic drawing of tri-state buffer block 302 (Fig. 3A) which includes tristate buffers B4- B7. Note that the line names are identical to those referenced in Fig. 3A.
  • Output ⁇ ignals from AND gates A4-A7 control tristate buffers B4-B7, respectively. If AND gate A5, for example, provides a logic 0 output signal, buffer B5 is enabled and provide ⁇ a buffered output signal on line TQ5 which matches its corre ⁇ ponding input signal on line Q5. On the other hand, if AND gate A5 provides a logic 1 output signal, buffer B5 is disabled and provides a high impedance at the output terminal.
  • the output signal ⁇ provided by AND gates A4-A7 are determined either globally by the output signal from OR gate ORl or individually by memory cells MM4-MM7, respectively. If memory cells MM4-MM7 store logic O' ⁇ , then the output signals of AND gates A4-A7 will also be logic O's regardles ⁇ of the ⁇ ignal from OR gate ORl.
  • OR gate ORl provide ⁇ a high output ⁇ ignal if' the ENLL ⁇ ignal i ⁇ low or if the signal on line TS is high. Referring back to Fig. 3A, the signal on tristate line TS is programmably selected from any of tile interconnect lines M16-M23.
  • the ENLL signal is a global ⁇ ignal provided to all buffer ⁇ 302 in all tile ⁇ 101.
  • Output Enable Block 309 The buffer ⁇ in output enable block 309 are disabled during configuration of the device so that lines driven by these buffers will not experience contention.
  • Fig. 4C illustrates the structure of block 309.
  • Each buffer in output enable block 309 comprise ⁇ a two-input AND gate. One input of each AND gate is driven by a global enable ⁇ ignal ENOUT. The other input i ⁇ provided by a line Q0'-Q7' which i ⁇ in turn provided by output ⁇ ignal ⁇ from CLB 301 (Fig. 3A) .
  • unexpected line ⁇ may be connected to the ⁇ e lines Q0-Q7. Therefore, to prevent contention, the ENOUT signal is held low during configuration so that all output ⁇ ignal ⁇ on line ⁇ Q0-Q7 are low and unexpected connection of other lines does not produce contention because all signal ⁇ have a low value.
  • each input line QS0-QS3 is connectable to one of the CLB input lines of one function generator.
  • line QS0 is connectable to CLB input line Fl of function generator F
  • line QSl is connectable to CLB input line Gl of function generator G
  • line QS2 is connectable to CLB input line HI of function generator H
  • line QS3 is connectable to CLB input line Jl of function generator J.
  • each function generator F, G, H or J is configurable to provide any function based on its input signals, a particular signal can be provided to any input terminal of a function generator and the look up table of that function generator loaded accordingly. Thus, it is not important which input signal is available to which function generator input terminal.
  • a signal on input line QW0 drives both CLB input line ⁇ F0 and FB.
  • a signal on input line QWl drive ⁇ CLB input lines GO and, GB
  • a signal on input line QW2 drives CLB input lines HO and HB
  • a signal on input line QW3 drives CLB input lines JO and JB.
  • Each signal on input lines QE0, QE1, QE2, and QE3 also drives two CLB input lines.
  • a signal on input line QE0 drives CLB input lines Fl and FB
  • a signal on input line QE1 drives lines Gl and GB
  • a signal on input line QE2 drives lines HI and HB
  • a signal on input line QE3 drive ⁇ line ⁇ Jl and JB.
  • Signals on input lines QN0-QN3 and QS0-QS3 each drive only one CLB input line.
  • a signal on input line QN0 drives CLB input line F0
  • a signal on input line QN1 drive ⁇ CLB input line GO
  • a ⁇ ignal on line QN2 drives CLB input line HO
  • a signal on line QN3 drives CLB input line JO.
  • a signal on input line QSO drives CLB input line Fl
  • a signal on input line QSl drives CLB input line Gl
  • a signal on input line QS2 drives CLB input line HI
  • a signal on input line QS3 drives CLB input line Jl.
  • This embodiment is particularly desirable for horizontal flow of many signal ⁇ becau ⁇ e each input line QE0-QE3 and QW0-QW3 i ⁇ programmably connected to two CLB input line ⁇ .
  • Other embodiments of the present invention, having a different number and positioning of programmable connections, are optimized for a different signal flows.
  • Output Matrix 304 CLB 301 provide ⁇ output ⁇ ignal ⁇ on CLB output line ⁇ X, XQ ' , XB, Y, YQ, YB, Z, ZQ, ZB, V, VQ, and VB.
  • CLB 301 al ⁇ o deter ine ⁇ whether it provide ⁇ the signal on carry out line COUT or whether the signal on carry in line CIN is transferred to the next CLB in the tile above.
  • PIPs on CLB output lines X, XQ, XB, Y, YQ, YB, Z, ZQ, ZB, V, VQ, VB, and K are selectively programmed to drive any number of output lines Q0-Q7 through a CLB interconnect structure 304.
  • CLB interconnect structure 304 is fully pipulated (i.e., any of the 13 output ⁇ ignal ⁇ of CLB 301, excluding the ⁇ ignal on carry out line COUT, can drive any of output line ⁇ Q0-Q7) .
  • interconnect structure 304 also buffer ⁇ it ⁇ output ⁇ ignals for driving further lines.
  • Full pipulation of interconnect ⁇ tructure 304 requires 108 (13 x 8) PIPs.
  • structures 303, 305, 306, and 307 in combination use 200 PIPs, even though they are spar ⁇ ely pipulated.
  • PIP ⁇ are provided (a ⁇ di ⁇ cu ⁇ ed above) for connecting input line QWO to CLB input line ⁇ F0 and FB of CLB 301. Thu ⁇ , in this manner, a path is establi ⁇ hed from the output line ⁇ of CLB 301 in CLB matrix 202c to the input lines of CLB 301 in CLB matrix 202d using only two PIPs, which in one embodiment includes two transistors.
  • a PIP in CLB output interconnect structure 304 requires a signal on a CLB output line to propagate through two transi ⁇ tor ⁇ (note that signal K, a constant power or ground ⁇ ignal, propagates through four tran ⁇ i ⁇ tors) .
  • FIG. 3B illustrates a multiplexer structure 400 which implements all PIPs which connect the twelve CLB output lines (X, XQ, XB, Y, YQ, YB, Z, ZQ, ZB, V, VQ, VB) of CLB 301 and one power/ground output signal line K to output line Q0.
  • Multiplexer structure 400 includes memory cells 31, 32, and 33 which control a first bank of twelve transi ⁇ tors 351 and select signal K if no transi ⁇ tor in bank 351 i ⁇ selected.
  • a logic 1 stored in one of memory cells 31, 32, and 33 selects one signal from each group of three signal ⁇ in bank 351. If all memory cell ⁇ 31, 32, and 33 store a logic 0, then signal K is provided to node 30.
  • memory cell ⁇ 34 and 35 control AND gate ⁇ AND1-AND4 to select the output signal from one of output lines VQ, ZQ, YQ, and XQ and to provide the selected signal on output line Q0. If ' memory cells 31, 32, and 33 store a logic 0, thereby selecting signal K, then memory cells 34 and 35 must be programmed to provide the signal at node 30.
  • thirteen PIPs are implemented using only 5 memory cell ⁇ and sixteen transistors, each path requiring only two transistors for all signals except the con ⁇ tant value K, which travel ⁇ a longer path. The signal on line K i ⁇ not harmed by having a longer ⁇ ignal path since it is not a switching signal.
  • a multiplexer structure 400 which ⁇ elect ⁇ one of thirteen output ⁇ ignals of CLB 301 to drive a predetermined output line, is provided for each of output lines Q0-Q7. Note that although it is po ⁇ ible for none of the thirteen output signals to drive an output line Q0-Q7, multiplexer structure 400 cannot select more than one of the thirteen output signals. In this manner, contention on output lines Q0-Q7 is avoided.
  • thirteen memory cell ⁇ are provided, each memory cell controlling a single transi ⁇ tor. In thi ⁇ manner, each path require ⁇ only one tran ⁇ i ⁇ tor, thereby increa ⁇ ing signal speed. However, note that this embodiment increa ⁇ e ⁇ silicon area.
  • Feedback Interconnect Structure 305 selectively connects output lines Q0-Q3 to CLB input lines F2, G2, H2, and J2 within configurable logic block matrix 202.
  • any output signal from CLB 301 can be fed back to selected CLB input lines of any function generator F, G, H and J in CLB 301.
  • Feedback interconnect structure 305 provides a PIP pattern that supports a counter (a counter feeds back its own signal) or a shift register (a shift register requires its neighbor' ⁇ ⁇ ignal) .
  • the above-de ⁇ cribed PIP pattern prevents contention between ⁇ ignal ⁇ on CLB input line ⁇ F2, G2, H2 and J2 and ⁇ ignals on CLB input line ⁇ F0, GO, HO, JO, Fl, Gl, Hi, and Jl which are provided on other input lines to CLB matrix 202, such a ⁇ input line ⁇ QWO and QN3.
  • Other embodiments of the present invention provide different combinations of PIPs in feedback interconnect structure 305. •
  • General input matrix 306 receive ⁇ input ⁇ ignal ⁇ on tile interconnect lines M0-M23 and includes PIPs for placing these input signals onto CLB input lines F0-F3, FB, G0-G3, GB, HO- H3, HB, J0-J3, and JB.
  • PIPs for placing these input signals onto CLB input lines F0-F3, FB, G0-G3, GB, HO- H3, HB, J0-J3, and JB.
  • a PIP pattern allows a signal on any tile interconnect line M0-M23 in general input interconnect structure 306 to drive one input line of each function generator F, G, H, and J. Because function generator input signals are interchangeable, (Lookup table inputs are interchangeable.) no tile interconnect line M0-M23 need be coupled to more that one input line of a function generator.
  • a multiplexer structure 401 using only three memory cells 36, 37 and 38, selects one of eight pos ⁇ ible ⁇ ignal ⁇ to control a first bank of transi ⁇ tor ⁇ 361. Specifically, memory cell 38 ⁇ elect ⁇ one each of the paired ⁇ ignal ⁇ on input line ⁇ QWO or QN0, M15 or M14, M9 or M8, and M7 or M6.
  • Memory cell ⁇ 36 and 37 provide ⁇ ignals to the input terminals of AND gates AND5-AND8, which in turn control a second bank of transi ⁇ tors 362 to select a single ⁇ ignal to place on CLB input line F0.
  • the pattern of PIPs also provides a function of five inputs (discussed above in connection with Fig. 5C) .
  • five-input function ⁇ are easily implemented with the PIP pattern provided.
  • PIPs allow connection from long horizontal lines LH0-LH7 and long vertical lines LV0-LV7, as well as global (horizontal and vertical) lines GHO, GH1, GVO, and GVl to register ⁇ RV, RZ, RY, and RX without going through function generators J, H, G, and F.
  • long horizontal lines LH0-LH7 and long vertical lines LVO and LV7 as well as global horizontal lines GHO, GHl and global vertical lines GVO, GVl are selectively coupled to tile interconnect lines M0-M23 (Fig. 6) .
  • tile interconnect lines if coupled to CLB input lines FB, GB, HB and JB, bypass function generators F, G, H and J, respectively, and provide signals (via intermediate multiplexers) to register ⁇ RX, RY, RZ, RV, re ⁇ pectively (Fig. 3A) .
  • global lines GHO, GHl, GVO, and GVl are also selectively coupled to registers RX, RY, RZ and RV via register control interconnect structure 307. Allowing all tile interconnect line ⁇ M0-M23 to connect to one CLB input line FB, GB, HB or JB and providing connection ⁇ from every long line to one tile interconnect line M0-M23 (di ⁇ cu ⁇ sed below in connection with Fig.
  • output lines Q4-Q7 also provide output signals to programmable interconnect matrix 201 (Fig. 2A) via tile interconnect lines M0-M11 or via lines TQ4-TQ7.
  • Output lines Q0-Q3 also provide output signals to selected ones of tile interconnect lines M12-M23.
  • output interconnect structure 308 allows signals on each output line Q0-Q7 to drive up to three tile interconnect lines M0-M23.
  • the full pipulation of CLB output interconnect structure 304 allows any utput line of CLB 301 to be connected to any tile interconnect line M0-M23.
  • general input interconnect structure 306 also provides selected feedback signals on output lines Q0-Q3 to CLB 301.
  • Clock line CLK, clock enable line CE, reset line RST and tristate line TS may be driven by signal ⁇ provided on ⁇ elected tile interconnect line ⁇ M0-M23 (from programmable routing matrix 201) .
  • clock line CLK is driven directly by signal ⁇ on global horizontal line ⁇ GHO and GHl or from global vertical line ⁇ GVO and GVl.
  • contention is avoided either by using a convenient decode method for selecting which PIP on a single input line is turned on or by u ⁇ ing rule ⁇ provided in the ⁇ oftware which program ⁇ the memory cell ⁇ to avoid turning on more than one PIP on an input line.
  • alternative input selection means are possible. For example, in one embodiment one memory cell is loaded to specify whether each PIP is turned on or not.
  • Fig. 6 illustrate ⁇ the programmable routing matrix 201 of Fig. 2a. Note that wherea ⁇ all PIP ⁇ in CLB matrix 202 are shown as triangles to indicate signal flow onto one line, in Fig. 6, most PIPs in programmable routing matrix 201 are shown a ⁇ open circle ⁇ to indicate ⁇ ignal flow on both line ⁇ . The exception ⁇ are PIP ⁇ which connect line ⁇ TQ4 through TQ7 (output line ⁇ from tri ⁇ tate buffer block 302 of Fig.
  • programmable routing matrix 201 extends into programmable routing matrix 201 to long horizontal line ⁇ LH0-LH7 and long vertical line ⁇ LV0-LV7, and PIP ⁇ which place ⁇ ignal ⁇ from global signal lines GHO, GHl, GVO, and GVl onto tile interconnect lines M0 through M3.
  • Extending into programmable routing matrix 201 are global lines, long lines, double length lines, and ⁇ ingle length line ⁇ . Each of the ⁇ e line ⁇ i ⁇ connectable to ⁇ elected tile interconnect line ⁇ M0-M23.
  • Programmable routing matrix 201 provide ⁇ connection to programmable routing matrices in adjacent tiles through single length lines extending in the four compas ⁇ directions, i.e.
  • programmable routing matrix 201 which in thi ⁇ embodiment include ⁇ only 124 PIPs, is sparse relative to the approximately 4200 PIP ⁇ which could be provided to connect every line in Fig. 6 to every other line.
  • the PIP pattern en ⁇ ure ⁇ that any line i ⁇ connectable to any other line if enough intermediate PIPs are used.
  • west line Wl is connectable to east line El by turning on two PIPs which connect tile interconnect line Ml to these two lines.
  • to make a connection between west line Wl and ea ⁇ t line E2 require ⁇ 8 PIP ⁇ and 9 lines, i.e.
  • tile interconnect line M6 connects to double length lines DN6, DS6, DE6, and DW6.
  • Tile interconnect lines M7 through Mil connect to correspondingly numbered single length lines extending north, south, ea ⁇ t and we ⁇ t.
  • PIPs on tile interconnect line ⁇ M12-M23 implement a pattern of cross connecting that facilitates signal transfer flexibility with minimal sacrifice of speed, and the spar ⁇ e pipulation achieve ⁇ valuable reduction of chip area.
  • tile interconnect line M12 connect ⁇ to double length north line DNO, to south line S3, to east line E5, and to west line Wl
  • tile interconnect line M15 connects to north line N3, east line E8, double south line DS6, and west line W4.
  • the present invention provides a predetermined pattern to minimize the number of PIPs, thereby allowing any line to be connected to any other line.
  • the present invention ensure ⁇ that a path is always provided, while minimizing silicon area.
  • each tile interconnect line M0-M23 is connectable to five or six other lines.
  • each tile interconnect line M0-M23 is represented as a ⁇ tar with five or ⁇ ix points.
  • eight tile interconnect lines MO through M7 are programmably connectable to selected one ⁇ of north lines N0-N3, ea ⁇ t line ⁇ E0-E3, ⁇ outh line ⁇ S0-S3 and we ⁇ t line ⁇ W0-W3.
  • Tile interconnect line ⁇ MO through M3 are connectable to north, south, east and west lines of the same numerical suffix.
  • Tile interconnect line ⁇ M4 through M7 are connectable to ⁇ taggered ones of the north, south, ea ⁇ t and west lines.
  • tile interconnect lines M0-M3 provide a means for interconnecting north, east,- south and we ⁇ t lines of the same suffix, while tile interconnect lines M4-M7 provide an opportunity for cross-connecting lines from four compass directions.
  • tile interconnect line ⁇ M0-M7 provide means for connecting programmable routing matrix 201 to configurable logic block matrix structure 202 (Fig. 3A) .
  • each CLB 301 is as ⁇ ociated with a particular ⁇ tar 201 (i.e the programmable routing matrix 201) from which radiate line ⁇ connecting to other ⁇ tar ⁇ 201 and from there to other CLB ⁇ 301.
  • ⁇ tar 201 i.e the programmable routing matrix 201
  • Fig. 7B double length and ⁇ ingle length line ⁇ are illustrated.
  • lines of other lengths are provided in the ⁇ tar structure.
  • Global Interconnect Structure Fig. 8 illu ⁇ trate ⁇ hard connections from global signal pad ⁇ P113, P114, P115, and P116, which are po ⁇ itioned near the corner ⁇ of chip 100 (Fig. 1) , to global signal lines GTL, GTR, GBR, and GBL, respectively, which are typically located near the four edges of chip 100.
  • Each global ⁇ ignal line is programmably connectable to a plurality of lines extending vertically or horizontally through each row or column of core tiles 101.
  • top left global signal line GTL is connectable to global vertical lines GVl-a through GVl-n, via PIPs PVl-a through PVl-n, respectively, i.e. one PIP for each column of core tiles 101.
  • Top right global signal line GTR is connectable via PIPs PHO-a through PHO-m, respectively, i.e. one PIP for each row of core tile ⁇ 101 to global horizontal lines GHO-a.
  • Bottom right global signal line GBR i ⁇ connectable to global vertical line ⁇ GVO-a through GVO-n.
  • bottom left global signal line GBL is connectable to global horizontal lines GHl-a through GHl-m.
  • the global vertical and horizontal lines with reference labels beginning with GV or GH are connectable to programmable routing matrices 201 and CLB matrices 202 in core tiles 101 through which the global lines pass, as discussed above in connection with Figs. 2A, 3, and 7. As also shown in Fig.
  • long lines LV0L, LV7L, LH0T, LH7T, LVOR, LV7R, LHOB, and LH7B which extend through the edge tiles (not shown in Fig. 8 for simplicity but shown in Figs. 10A through 10D) of chip 100 (Fig. 1) are also connectable to the global lines.
  • bottom right global ⁇ ignal line GBR can be driven by ⁇ ignal ⁇ on bottom horizontal long line ⁇ LHOB and LH7B via PIPs PGBR0 and PGBR7, respectively.
  • Bottom left global signal line GBL can be driven by signals on left vertical long lines LV0L and LV7L via bottom left buffer BBL via PIP ⁇ PGBL0 and PGBL7, re ⁇ pectively.
  • Equivalent connection ⁇ are provided for the top and right edge ⁇ of the chip.
  • Left, top, right, and bottom long line ⁇ are connectable to each other through PIP ⁇ , such as PIP PBR7.
  • PIP ⁇ such as PIP PBR7.
  • long line ⁇ LVOL, LV7L, etc. are driven by signals provided by any of the pads at the perimeter of the chip (through edge tiles 103-106 discussed below in connection with Figs. 10A-10D) , any pad can provide a global signal.
  • any of core tiles 101 can also provide a global signal through edge tiles 103- 106.
  • Figs. 1 and 9 illustrate one embodiment of the pre ⁇ ent invention which includes long line splitters LLS which may be po ⁇ itioned partly through a line.
  • Two columns of tiles are illustrated in Fig. 9, each column comprising a top edge tile 104, six core tiles 101, and a bottom edge tile 106.
  • Long vertical lines LV0-LV7 traverse all core tiles 101, and in each of the two columns terminate in edge tile ⁇ 104 and 106.
  • Long vertical line ⁇ LV0-LV7 are al ⁇ o connectable to ⁇ elected one ⁇ of tile interconnect line ⁇ M0-M15 and line ⁇ TQ0-TQ3 in edge tile ⁇ 104 and 106, a ⁇ will be discussed below in connection with Figs. 10A-10D.
  • long line ⁇ LV0-LV7 are connectable to ⁇ elected line ⁇ in programmable routing matrice ⁇ 201.
  • horizontal long line ⁇ LH0-LH7 are not illu ⁇ trated in Fig. 9, but are illu ⁇ trated in Figs. 2A and 6.
  • vertical long lines LV0-LV7 in the three upper core tiles 101 are separated from the portions in the three lower core tiles 101 by long line splitter ⁇ LLS.
  • a long ⁇ plitter LLS in one embodiment comprises an n-type tran ⁇ i ⁇ tor which i ⁇ turned off by providing a low voltage to a control gate CG, thereby separating the vertical long line into top and bottom segments.
  • Long line splitter ⁇ LLS are typically u ⁇ ed in large chip embodiment ⁇ to allow top and bottom long line ⁇ to be separately driven in different portions of the chip.
  • horizontal long lines LH0-LH7 are also separated in the middle of chip 100 by long line ⁇ plitter ⁇ LLS.
  • ⁇ everal long line ⁇ plitters such as long line splitter ⁇ LLS and LLSA are provided along the ⁇ ame long line, or long line splitters LLSB are provided between an end of a long lines in one edge tile and an end of a long line in an adjacent edge tile, thereby programmably connecting the ⁇ e long line ⁇ .
  • FIG. 10A-10D illu ⁇ trate in greater detail the edge tiles shown in Fig. 2A.
  • Figs. 10A-10D show left edge tile 103, top edge tile 104, right edge tile 105, and bottom edge tile 106, respectively.
  • Each edge tile in these embodiment ⁇ i ⁇ typically but not always connected to at least one of pads PV, PZ, PY or PX. In other embodiments described in detail below in reference to Fig. 1, at least one edge tile is not connected to any pad.
  • Fig. 10A-10D show left edge tile 103, top edge tile 104, right edge tile 105, and bottom edge tile 106, respectively.
  • Each edge tile in these embodiment ⁇ i ⁇ typically but not always connected to at least one of pads PV, PZ, PY or PX. In other embodiments described in detail below in reference to Fig. 1, at least one edge tile is not connected to any pad.
  • Fig. 10A-10D show left edge tile 103, top edge tile 104, right edge tile 105, and bottom edge
  • I/O devices IOBV, IOBZ, IOBY and IOBX are connected to edge tile 103 via input/output (I/O) devices IOBV, IOBZ, IOBY and IOBX, respectively.
  • I/O devices IOBV, IOBZ, IOBY and IOBX are connected to edge tile 103 by three line .
  • I/O device IOBV i ⁇ connected to edge tile 106 by an I/O input line IV, an I/O output line OV, and a tri- ⁇ tate line TSV.
  • the output signal provided to pad P42 by output line OV is controlled by a signal on I/O tri-state line TSV. Similar lines are provided for I/O devices IOBZ, IOBY and IOBX.
  • a fully pipulated I/O input interconnect structure 1001 allows signal ⁇ on I/O input lines IV, IZ, IY, and IX to drive edge tile input lines QIN0-QIN3.
  • Neighbor output interconnect structure 1004 allows signal ⁇ on output lines QE0-QE3 from a core tile 101 to be provided to pads PV, PZ, PY and PX.
  • I/O output interconnect structure 1002 allows signals from the neighboring core tile ⁇ (in edge tile 103, provided by north lines 100-N7, south lines S0-S7, and east line ⁇ E1-E5 and E7- Ell) a ⁇ well a ⁇ signals on long lines LH0-LH7 and LV0-LV7 and double length lines DHO, DH6, to be provided to the pad ⁇ .
  • I/O output interconnect ⁇ tructure 1002 ha ⁇ a ⁇ ub ⁇ tantially complete pipulation, thereby allowing any ⁇ ignal coming into left edge tile 103 from el ⁇ ewhere in the chip interior to be placed on any of pads PV, PX, PY or PZ in spite of a sparse general interconnect structure 1006 between lines coming from other parts of the chip interior into or out of left edge tile 103 and a set of edge tile interconnect lines M0-M15.
  • Intermediate interconnect structure 1003 allows signal ⁇ which come from one of tile interconnect line ⁇ M0-M15 to be placed on one of edge tile input lines QIN0-QIN3, buffered onto a corresponding output line Q0 through Q3, and provided through tristate buffer block 302 to a corresponding line TQ0- TQ3.
  • a signal can thence be provided to horizontal long line ⁇ LH0-LH7 and vertical long line ⁇ LV0-LV7.
  • Feedback interconnect ⁇ tructure 1005 allow ⁇ signals on output lines Q0-Q3 to drive tile interconnect lines M0-Mi5 which are in turn selectively connected to north lines N0-N7, south lines S0-S7, east lines El-Ell, -double length lines DEO, DE6, DH0, and DH6 and to long lines LV0-LV7.
  • edge tile 103 allow ⁇ connection to pad ⁇ which in turn have external connection ⁇ to chip 100, as well a ⁇ on an adjacent core tile 101 chip and to adjacent edge tile ⁇ (or an adjacent corner tile, explained in detail below) .
  • Fig ⁇ . 10B, 10C, and 10D ⁇ how embodiment ⁇ of edge tile ⁇ 104, 105, and 106, respectively. Because these tiles are similar in structure, except for orientation, and have identical numerical references to that shown in Fig. 10A, the detail of the interface structure ⁇ in Fig ⁇ . 10B, 10C, and 10D will not be di ⁇ cu ⁇ sed herein.
  • Optional Pad Fig. 10C illustrate ⁇ a combination of connected and unconnected pad ⁇ , thereby illu ⁇ trating the flexibility available at the ma ⁇ k level.
  • one unconnected pad PZ and connected pads PV, PY, PX implement a configuration which i ⁇ repre ⁇ ented in Fig. 1 by pads P6, P7 and P8 (connected to edge tile 105) .
  • each edge tile has a predetermined number of pads connected to it.
  • pad P17 is the only pad connected to its edge tile 106. Therefore, as shown in Fig. 10D, only one of pad ⁇ PV, PZ, PY and PX (in thi ⁇ embodiment, pad PV) is connected to edge tile 106.
  • Fig. IOC pad PZ and its input/output buffer structure IOBZ are eliminated, thereby reducing total chip size by reducing the total number of pads on the chip.
  • Input line IZ and output line OZ are shorted together in a region which in one embodiment is outside tile 105. In this manner, all tiles 105 are identically laid out, regardless of how many pads PV, PZ, PY, or PX are provided.
  • pads P6, P7 and P8 are connected to a single edge tile 105.
  • pad PY and related structure ⁇ IOBY and ESDY are not provided. Thu ⁇ , the embodiment of Fig. 10D represents pads P26 through P28 of Fig. 1.
  • Fig. 1 includes certain edge tiles to which no pads have been connected (two of edge tiles 103, one of edge tiles 104, and one of edge tiles 105 have no pads at all connected to them) .
  • Figs. 11A through 11D illustrate the four corner tiles 113, 114, 115, and 116, re ⁇ pectively, of chip 100 (Fig. 1) .
  • Fig. 11A include ⁇ a conventional boundary ⁇ can block BSCAN compatible with IEEE 1149.1 de ⁇ cribed in detail in a Xilinx Application Note by Lui ⁇ Morale ⁇ entitled, "Boundary Scan in XC4000 Device ⁇ " and available from Xilinx, Inc., 2100 Logic Drive, San Jose, CA 95124, which i ⁇ herein incorporated by reference in it ⁇ entirety.
  • Fig. 11A include ⁇ a conventional boundary ⁇ can block BSCAN compatible with IEEE 1149.1 de ⁇ cribed in detail in a Xilinx Application Note by Lui ⁇ Morale ⁇ entitled, "Boundary Scan in XC4000 Device ⁇ " and available from Xilinx, Inc., 2100 Logic Drive, San Jose, CA 95124, which i ⁇ herein incorporated by
  • top left corner tile 113 includes hard connections from ⁇ ingle length ea ⁇ t line ⁇ E0-E7 to ⁇ ingle length ⁇ outh line ⁇ S0-S7, re ⁇ pectively, and programmable connection ⁇ from long horizontal line ⁇ LH0-LH7 to long vertical lines LV0-LV7, respectively.
  • Fig. 11A further ⁇ how ⁇ one embodiment of an interconnect ⁇ tructure 1101 which provides the programmable connection of boundary scan block BSCAN to the above-described single length and long lines.
  • Corner tile 113 also includes a programmable connection to an external pin P43 that provide ⁇ a global clock ⁇ ignal SGCK1. Corner tile 114, illu ⁇ trated in Fig.
  • tile 114 (Fig. 11B) includes hard connections for connecting single length west line ⁇ W0-W7 to ⁇ ingle length ⁇ outh lines S0-S7, respectively, and programmable connections for connecting long horizontal lines LH0-LH7 to long vertical lines LV0-LV7, re ⁇ pectively.
  • long vertical line LVO connect ⁇ to long horizontal line LHO, but becau ⁇ e of the layout of tile ⁇ 113 and 114, the line ⁇ are drawn in a different po ⁇ ition on the page, and therefore corner tile ⁇ 113 and 114 have a different appearance in Fig ⁇ . 11A and 11B.
  • Corner tile 114 includes- a clock input pin Pl that provide ⁇ clock signal SGCK4.
  • Corner tile 114 includes an interconnect structure 1102 which provides a programmable connection between a conventional oscillator/counter circuit DIV u ⁇ ed for counting bit ⁇ during configuration of chip 100 and the above-described single length and long line ⁇ .
  • circuit DIV i ⁇ used during chip operation to provide an on-chip oscillator or a counter-divider.
  • Circuit DIV is typically configured to divide an internal oscillator signal or a user-provided signal.
  • Corner tile 114 further includes a boundary scan update signal BSUPD, which is part of the standard boundary scan circuitry (most of the circuitry being located in tile 113) .
  • signal BSUPD is programmably placed on west lines W2 and W3 (and thus south lines S2 and S3) as well a ⁇ long horizontal line ⁇ LH2 and LH3 (and thus long vertical lines LV2 and LV3) .
  • Fig. 12 illustrate ⁇ one embodiment of a circuit which implement ⁇ o ⁇ cillator/counter circuit DIV of Fig. 11B.
  • Two output tap ⁇ , OSCl and OSC2 are provided, which together can be configured to provide twelve frequencie ⁇ which are divi ⁇ ion ⁇ of the original input frequency.
  • An internal oscillator OSC provides an oscillator signal to NAND gate 1231.
  • NAND gate 1231 i ⁇ enabled by a memory cell OSCRUN.
  • the output ⁇ ignal from oscillator OSC is provided to multiplexer 1201.
  • Memory cell 1202 determines whether multiplexer 1201 provides the output signal from internal o ⁇ cillator OSC or a ⁇ ignal on one of ⁇ ingle length west lines W0-W3 (equal to a signal on single length south lines S0-S3, respectively, see Fig. 11B) , or a signal on one of long horizontal lines LH0-LH3 (equal to a signal on long vertical line ⁇ LV0-LV3) .
  • Multiplexer 1201 provide ⁇ an output ⁇ ignal which i ⁇ then available to be divided by flip flop ⁇ 1214 through 1220.
  • Multiplexer ⁇ 1225 and 1226 provide a choice of divide factors on the data input terminals of flip flops 1227 and 1228 respectively.
  • the outputs of the ⁇ e flip flops are provided as signal ⁇ on taps OSCl and OSC2.
  • Flip flops 1227 and 1228 are clocked from the original input signal and serve to reduce the skew of the output signal ⁇ from multiplexers 1225 and 1226.
  • Multiplexer 1225 under control of memory cells OSC1A and OSC1B, provides a switching signal which can be the input signal from multiplexer 1201 divided by 4, 16, 64, or 256.
  • multiplexer 1204 can forward the original clock ⁇ ignal output from multiplexer 1201 or can provide a divided ⁇ ignal (the original frequency divided by 512) which i ⁇ output from flip flop 1213. If multiplexer 1204 is set to provide the output signal of multiplexer 1201, then the original clock signal is alternatively provided by multiplexer 1226 as divided by 2, 8, 32, or 128. If multiplexer 1204 is ⁇ et to provide a divided ⁇ ignal from flip flop 1213, multiplexer 1226 will provide an output ⁇ ignal which ha ⁇ the frequency of the original input ⁇ ignal on multiplexer 1201 divided by 1024, 4096, 16,384, or 65,536.
  • Fig. 11C shows lower right corner tile 115.
  • Corner tile 115 programmably connects long horizontal lines LH0-LH7 and long vertical lines LV0-LV7, respectively, and connects north lines N0-N7 to west lines W0-W7.
  • Corner tile 115 further includes a programmable interconnect structure 1103 which programmably connects a start-up block STARTUP to north lines N0-N7 (and thu ⁇ west lines W0-W7) and long vertical lines LV0- LV7 (and thus long horizontal lines LH0-LH7) .
  • Start-up block STARTUP includes circuitry to sequence the signals and control timing of the start-up function as chip 100 (Fig. 1) is activated.
  • three events are necessary to move from configuration mode to operating mode: release of the signal on a global tri-state signal terminal GTS, release of the signal on a global reset signal terminal GSR, and release of a signal on a load complete terminal DONE (indicating that all configuration bits have been loaded into their appropriate locations in the FPGA) .
  • the start-up block STARTUP allows the user to program the- order in which these signals are released, a ⁇ well a ⁇ the timing of these signals (for example separating each signal from another ⁇ ignal by one, two, or three clock cycle ⁇ ) .
  • lower left corner tile 116 includes a read-back unit RDBK.
  • Read-back unit RDBK allow ⁇ the user to read the content of the configuration memory onto any data line and out onto any external pin through the data line terminal DATA of readback unit RDBK.
  • the trigger terminal TRIG in read-back unit RDBK carries a signal that trigger ⁇ copying of one row of configuration data from the configuration memory into the ⁇ ame shift register which loaded the configuration memory.
  • the signal on a clock terminal CLK controls shifting out of that data onto line DATA.
  • the ⁇ ignal on a read-in-progres ⁇ terminal RIP prevent ⁇ the chip from ⁇ ending another ⁇ ignal from trigger terminal TRIG while data are ⁇ till being ⁇ hifted out.
  • many other embodiment ⁇ of the pre ⁇ ent invention will be apparent to tho ⁇ e ⁇ killed in the art.
  • the above de ⁇ cription relates to an embodiment in which core tiles are rectangular or square, another embodiment of the present invention includes tiles having six sides.
  • core tiles need not be identical.
  • a set of tile designs may be provided which have different logic content from each other. If all tile de ⁇ ign ⁇ follow common boundary con ⁇ traint ⁇ , chip ⁇ can be formed by combining the tile designs in a variety of patterns. To be succe ⁇ ful, each tile design must have a good distribution of signals within the tile. The routing matrix of the tile must efficiently distribute the incoming signals to th logic block input terminal ⁇ and take the logic block output ⁇ ignals to the tile edges. Indeed a chip may be composed in which some tiles include RAM memory and no logic, or a combination of tiles having logic, tiles having memory only, and tiles having routing with no logic or memory.
  • a tile may be designed which includes an input/output pad physically within its structure, and tile designs including a pad may be combined with other tile design ⁇ to achieve di ⁇ tributed acce ⁇ to logic.
  • Such other embodiment ⁇ are intended to fall within the ⁇ cope of the pre ⁇ ent invention.
  • the pre ⁇ ent invention i ⁇ ⁇ et forth in the claim ⁇ .

Abstract

An FPGA architecture offers logic elements with direct connection to neighboring logic elements and indirect connection through a routing matrix. A logic element and a portion of the routing matrix are formed as part of a tile, and tiles are joined to form arrays of selectable size. The routing matrix includes routing lines which connect just from one tile to the next and routing lines which extend longer distances through several tiles or through the entire chip. This combination is achieved by the formation of individual tiles, all of which are identical.

Description

TILE BASED ARCHITECTURE FOR FPGA
FIELD OF THE INVENTION _^ The invention relates to programmable logic devices formed in integrated circuits and more particularly to an architecture of a programmable logic device in which logic blocks are provided in a repeating pattern.
BACKGROUND OF THE INVENTION Field programmable gate arrays (FPGAs) are well known in the art. An FPGA comprises an array of configurable logic blocks (CLBs) which are programmably interconnected to each other to provide a logic function desired by a user. U.S. Patent 4,870,302, reissued aε U.S. Patent Re.34,363, and incorporated herein by reference, describes a well known FPGA architecture. Other publications, such as U.S. Patent 4,758,745, U.S. Patent 5,243,238, and published application WO 93/05577, also incorporated herein by reference, describe other FPGA architectures. The Xilinx 1993 Data Book entitled "The Programmable Logic Data Book", available from Xilinx, Inc., 2100 Logic Drive, San Jose, California 95124, also incorporated herein by reference, describes several products which implement a number of FPGA architectures. An FPGA is considered to be a general purpose device, i.e. being capable of performing any one of a plurality of functions, and is programmed by an end user to perform a selected function. Because of this design flexibility, a general purpose FPGA includes a significant number of wiring lines and transistors which remain unused in most applications. Moreover, FPGAs include overhead devices which facilitate programing of the FPGA to do the specified function. These overhead devices undesirably add area to the FPGA chip. To compensate for this overhead, it is commercially important to reduce the cost of the FPGA. One way to reduce the cost is to make the FPGA less general purpose, that is, to eliminate some configuration options which are less commonly used. However, this reduction in configuration options reduces the value of the FPGA to customers, who may not be able to predict which options will be needed. Therefore, a need arises to eliminate area while maximizing configuration options.
SUMMARY OF THE INVENTION In accordance with the present invention, a field programmable gate array (FPGA) architecture includes repeatable tiles. Each tile comprises a programmable routing matrix and a configurable logic block matrix. The configurable logic block matrix is programmably connectable to the programmable routing matrix, as well as to the configurable logic block matrices in adjacent tiles. The programmable routing matrix is programmably connectable to the programmable routing matrices adjacent to the tile, as well as to long lines which extend across the tile. Thus, each tile provides a combination of logic, connection to nearby tiles, and connection to a general routing structure. A plurality of these tiles are joined together to form an array of tiles which make up the functional portion of an FPGA chip. With this architecture, devices of different sizes are produced by simply joining together different numbers of tiles, thereby eliminating an expensive and time consuming design effort. Moreover, in accordance with the present invention, the programmable routing matrix and configurable logic block matrix minimize the number of programmable interconnection points (PIPs), thereby reducing expensive chip area and maximizing density of the entire chip. In further accordance with the present invention, proper positioning of the PIPs ensures the necessary routing flexibility, thereby maximizing functionality of the FPGA. A tile architecture has a set of signal lines exiting the tile at the boundaries. Thus, for example, signal lines exiting at the right of one tile connect with signal lines exiting at the left of another tile. In one embodiment, adjacent tiles are identical, forming a repeating pattern. In another embodiment, adjacent tiles are not identical but have signal lines at least most of which match at the tile boundaries. Thus, a chip can be formed as an array of modular units which match at their boundaries, and additional flexibility of designing tiles for use in a plurality of chip designs iε easily available.
BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 shows an FPGA chip which includes components' according to the present invention. Fig. 2A shows a single core tile which populateε a majority of the FPGA chip illustrated in Fig. 1. Fig. 2B shows four adjacent core tiles of the type illustrated in Fig. 2A. Fig. 3A illustrates a configurable logic block matrix which is part of the tile of Fig. 2A. Fig. 3B illustrates a multiplexer structure which implements all PIPs which connect the output lines of a configurable logic block to one output line. Fig. 3C shows one embodiment of a multiplexer structure which drives a configurable logic block input line. Fig. 4C illustrates the configurable logic block in the matrix of Fig. 3A. Fig. 4B illustrates tri-state buffer block 302 of Fig. 3A. Fig. 4C illustrates the output enable block 309 of Fig. 3A. Fig. 4D showε a look up table embodiment of the F, G, H and J function generatorε of Fig. 4A. Fig. 4E εhowε another look up table embodiment of the F, G, H and J function generatorε of Fig. 4A. Fig. 4F shows one Karnaugh map for the look up table function generator of Fig. 4D or 4E. Fig. 4G showε one of the 216 logic functionε which can be implemented by the look up table function generator of Fig. 4D or 4E. Figs. 5A-5C illustrate application of the configurable logic block of Fig. 4A to form a carry chain, a cascadable decode circuit, and two 5-input combinational functions, respectively. Fig. 6 illustrateε the programmable routing matrix of Fig. 2A. Fig. 7A illustrateε an example of the connectivity achieved by a programmable routing matrix of the invention such as shown in Fig. 6. Fig. 7B illustrates an example of the connectivity achieved by the combination of the programmable routing matrix of Fig. 6 and the tile structure of Fig. 2A or 2B. Fig. 8 illustrateε connectionε from global signal pads near corners of a chip to global signal lines which extend near four edges of the chip and connect to global lines which drive core tiles. Fig. 9 illustrates long line splitters which are provided on long lines in one embodiment of the invention. Figs. 10A-10D illustrate, respectively, left, top, right, and bottom edge tiles according to one embodiment of the invention. Figε. 11A-11D illustrate upper left, upper right, lower right, and lower left corner tiles for the same embodiment. Fig. 12 illustrated a logic diagram for one embodiment of the oscillator structure used in Fig. 11B.
DETAILED DESCRIPTION OF THE DRAWINGS The following drawing conventionε are used throughout the figures. A εmall solid black dot at the intersectionε of two lines indicates a permanent electrical connection between the crosεing lines. An open circle enclosing an intersection between two lines indicates a programmable connection between the lines (for example, a pass transistor which is turned on to make the connection) . Open circles represent bidirectional signal flow between the two lines. An open triangle at an intersection of two lines indicates a programmable connection with signal flow going onto the line pointed to by the apex of the triangle. (The signal is of course then present on the full length of the line. Thus, a triangle pointing in the opposite direction would have the same signal flow because the triangle points to the same wire.) In accordance with one embodiment of the present invention, programmable connections are provided by using programmable interconnection points (PIPs), wherein each PIP includes at leaεt one transistor. A triangle on a line which is not intersected by another line indicates a buffer which produces signal flow in the direction indicated by the apex of the triangle. Except for global lines ENOUT and ENLL (illustrated in Fig. 3A) , a line which ends within the tile or matrix structure (i.e. does not extend to the border of a tile or matrix) is physically terminated within the tile. A line which extends to the border of the tile or matrix connects to a line on the next tile, which it contacts when two tiles are abutted together. Note that some lines which extend to an edge of a tile and thus into an adjacent tile change names at the tile boundary. Lines in the configurable logic block matrix and the programmable routing matrix are given the εame reference numeral to indicate theεe lineε are phyεically connected to each other. Fig. 1 shows an FPGA chip 100 according to the present invention.' In the center portion of chip 100 are a plurality of identical core tiles 101, which are interconnected by conductive lines (described in detail below) . Along the four edges of chip 100 are west, north, east, and south edge tiles 103, 104, 105, 106, respectively. In the four corners of the chip are four corner tiles 113, 114, 115, and 116. Chip 100 includes pads, i.e. pads P1-P56, for connecting edge tiles 103, 104, 105, 106, and corner tiles 113-116 to external pins of a package (which holds chip 100) . Note that each edge tile is further connected to a core tile 101. As shown in Fig. 1, edge tiles are connected to different numbers of pads P, typically from zero to four pads (explained in detail in reference to Figε. lOa-lOd) . Fig. 1 alεo illuεtrateε high voltage source pads VCC and low voltage source pads GND. Power and ground connections (not εhown) are provided in a conventional manner throughout chip 100. Fig. 2A shows a core tile 101. Core tile 101 includes a programmable routing matrix 201 and a configurable logic block matrix 202. Programmable routing matrix 201 iε described in detail in reference to Fig. 6, whereas configurable logic block matrix 201 iε described in detail in reference to Fig. 3A. Extending to the west from programmable routing matrix 201 are twelve lines with suffixes 0 through 11. These include single length west lines W1-W5, W7-W11, and double length west lines DW0 and DW6 (described in detail below) . Extending to the north from programmable routing matrix 201 are single length north lines N1-N5, N7-N11 and double length north lines DN0 and DN6. Extending to the east are single length east lines E1-E5 and E7-E11 and double length east lines DEO and DE6. Extending to the south are single length south lines S1-S5 and S7-S11 and double length south lines DSO and DS6. Extending east to west acrosε tile 101 are double length horizontal lineε DH0 and DH6. Extending north to εouth across tile 101 are double length vertical lines DV0 and DV6. Fig. 2B shows four adjacent core tiles 101a, 101b, 101c and lOld having a configuration identical to tile 101 illustrated in Fig. 2A. For clarity in Fig. 2B, most lines are not labeled. As mentioned previously, lines extending to the edges of tile 101 connect to lines in adjacent tiles. For example, single length west line Wlb in tile 101b extending to the west from programmable routing matrix 201b connects to single length east line Ela in adjacent tile 101a. Double length horizontal line DH6a of tile 101a is coupled to double length west line DW6b of tile 101b, and is further coupled to a double length eaεt line DE6 of a tile not εhown in Fig. 2B but which iε located directly west of tile 101a (hence the terminology "double length"). Line QOc extending east from CLB matrix 202c in tile 101c connectε to line QWOd extending weεt from CLB matrix 202d in tile lOld. Fig. 2B also illustrates that horizontal global lines GH0 and GH1 and vertical global lineε GVO and GVl extend continuouεly from one tile 101 to the next. Theεe global lines may be connected to a common line at the edge of the tile εo that a signal on a global line such aε GHO extends through all tiles. As εhown in Fig. 2B, vertical global lines GVO and GVl and horizontal global lines GHO and GH1 are coupled to both programmable routing matrix 201 and configurable logic block matrix 202. Returning to Fig. 2A, configurable logic block (CLB) matrix 202 is connected to the CLB matrix in the west tile (not shown) by output lines Q0-Q3 and input lines QW0-QW3, to the CLB matrix in the north tile (not shown) by output lines Q0-Q3 and input lines QN0-QN3, to the CLB matrix in the east by output lines Q0-Q3 and input lines QE0-QE3, and to the CLB matrix in the south tile (not shown) by output lines Q0-Q3 and input lines QS0-QS3. Note that output lines Q0-Q3 carry the εame signalε from CLB matrix 202 to adjacent tiles in four directions and thus have the same nameε. Carry-in line CIN and carry-out line COUT, which extend vertically in tile 101, connect to carry-out and carry-in lines, respectively, in adjacent tiles to form a fast carry path for arithmetic functions, as diεcuεsed in detail in U.S. Patent No. 5,349,250, "LOGIC STRUCTURE AND CIRCUIT FOR FAST CARRY", which is incorporated herein by reference.
Configurable Loσic Block Matrix 202 Fig. 3A illustrateε configurable logic block (CLB) matrix 202 of Fig. 2a. CLB matrix 202 includes a CLB 301, a tristate buffer block 302, an input interconnect εtructure 303, a CLB output interconnect εtructure 304, a feedback interconnect εtructure 305, a general input interconnect εtructure 306, a register control interconnect structure 307, an output interconnect structure 308, and an output enable block 309.
Sparse Pioulation Programmable connections are provided by using programmable interconnection points (PIPs) , wherein each PIP includes at least one transistor. As is well known in the art, each transistor occupieε valuable space on the chip substrate. Thus, in accordance with the present invention and referring to Fig. 3A, a majority of the horizontal and vertical lines in input interconnect structure 303, feedback interconnect structure 305, general input interconnect structure 306, and register control interconnect structure 307 are not programmably connectable. In other words, these structureε are εparsely populated with PIPs, or are sparεely "pipulated" . Sparεe pipulation minimizeε chip area uεed by PIPs, thereby maximizing density of the entire chip. In further accordance with the present invention, proper positioning of the PIPs significantly increases routing flexibility, thereby effectively compensating for the reduced number of PIPs in the interconnect structures. For example, referring to input interconnect structure 303, PIPs are positioned to allow connection from each output line Q0-Q3 from CLB output interconnect structure 304 to one of the function generators F, G, H, or J of an adjacent tile in each of the four compasε directionε. In this embodiment, general input interconnect structure 306 provides four to six PIPs for each CLB input line (J0-J3, JB, H0-H3, HB, G0-G3, GB, F0-F3 and FB) to CLB 301. Feedback interconnect structure 305 provides direct connections from two of output lines Q0-Q3 to one of the function generator input terminals in CLB 301. As shown in Fig. 3A, 24 PIPs in output interconnect structure 308 connect output lines Q0-Q7 to tile interconnect lines M0-M23. In thiε manner, signals on tile interconnect lines M0-M23 are selectively transferred between CLB 301 and programmable routing matrix 201 (via CLB output interconnect structure 304, general input interconnect structure 306, and output interconnect structure 308) . In this embodiment, less than one intersection in eight is provided with a PIP, thereby minimizing silicon area. Yet, connectivity from any output line to any input line is ensured by the PIPs provided.
Configurable Loσic Block 301 A configurable logic block (CLB) 301 is illustrated in Fig. 4A. In this embodiment, CLB 301 includes four function generators F, G, H, and J, wherein each function generator comprises a 16-bit look up table that generates an output signal determined by the four input signalε provided to the function generator and the valueε stored in the look up table. Thus, function generator F generates an output signal determined by the input signalε provided on lineε F0-F3, function generator G generateε an output εignal determined by the signals provided on CLB input lines G0-G3, function generator H generates an output signal determined by the signals provided on CLB input lines H0-H3, and function generator J generates an output signal determined by the signals provided on CLB input lines J0-J3.
Look UP Table Operation of the look up table function generators will be described in connection with Figε. 4D-4G. These figures were firεt diεcussed by Freeman in U.S. Patent 4,870,302 now reisεued as U.S. Patent Re 34,363, incorporated herein by reference. Fig. 4D illuεtrateε a look up table, in this embodiment a 16-bit RAM, which provides an output signal in response to any one of sixteen possible combinations of four input signals. Specifically, input signals A and B control the X decoder to select any one of the four columns in the 16-bit RAM. In a similar manner, input signals C and D control the Y decoder to select any one of the four rows in the 16-bit RAM. The 16-bit RAM provides an output signal representative of the bit at the intersection of the selected row and the selected column. There are 16 such intersections and thus sixteen such bits. It logically follows that 16 bits provide 216 posεible combinationε. Thus, if a 4-input NOR gate is to be simulated by the 16 bit RAM, the Karnaugh map for the look up table would be as shown in Fig. 4F. In Fig. 4F, all bits are "0" except the bit at the intersection of the first row (representing A=0, B=0) and the first column (representing C=0, D=0) . If a logic "1" output signal iε deεired for A=l, B=0, C=0, D=0, then a logic "1" is stored at the intersection of the second row and the firεt column. If a logic "1" iε desired for A=0, B=0, C=0, and D=0 and also for A=l, B=0, C=0 and D=0, then a logic "1" is stored at each of the intersections of the firεt column with the first row and the second row. The logic circuit represented by this loading of the look up table is shown in Fig. 4G. Thus, the look up table of Fig. 4D represents an elegant and simple implementation of any one of 2i6 logic functions. Fig. 4E showε a regiεter configuration for yielding any one of εixteen select bits. Each of regiεterε 0-15 in the vertical column to the left labeled "16 Select Bitε", contains a selected signal, either a logic 1 or 0. By selecting the appropriate combination of signals A, B, C, and D and their complements, a particular bit stored in a particular one of the εixteen locations in the 16 Select Bits register is transmitted to the output lead OUT. Thus, for example, to tranεmit the bit in the "1" regiεter to the output lead, the signal A, B, C, D is applied to the leads so labeled. To transmit the εignal labeled "15" in the εixteenth location in the 16 Select Bits register to the output lead, the signal A, B, C, D is applied to the appropriate columns. Thus, this regiεter configuration also provides any one of 216 logic functions. Referring back to Fig. 4A, the memory bits in look up tables F, G, H and J are typically loaded during configuration of the chip, for example through a shift register, or alternatively by an addresεing means. In some embodiments, the memory bitε are also loaded during operation of the chip, thereby reconfiguring the chip on the fly. A reconfigurable memory structure is discuεεed in commonly aεεigned, U. S. Patent No. 5,343,406 invented by Freeman et al. and entitled "Diεtributed Memory Architecture for a Configurable Logic Array and Method for Using Distributed Memory", which is incorporated herein by reference. Function generators F, G, H, and J provide output signals on CLB output lines X, Y, Z, and V, respectively. These output εignalε from function generatorε F, G, H, and J control multiplexerε Cl, C2, C3, and C4, thereby providing a cumulative carry-out function COUT. Multiplexer Cl receiveε a carry-in εignal on line CIN and an input εignal on line FB, and generateε an output εignal on line CF. Multiplexer C2 receiveε the εignal on line CF and an input εignal on line GB, and generateε an output εignal on line CG. Multiplexers C3 and C4 are connected in the same manner aε Multiplexerε Cl and C2. Multiplexer C4 provideε an output signal on line COUT from CLB 301. For a detailed discuεεion of the implementation of arithmetic functionε, see commonly asεigned U.S. Patent No. 5,349,250 invented by Bernard E. New, entitled "LOGIC STRUCTURE AND CIRCUIT FOR FAST CARRY", which iε incorporated herein by reference. In addition to function generatorε F, G, H, and J, each CLB 301 includes four storage devices RX, RY, RZ, and RV. These storage devices RX, RY, RZ, and RV each comprise flip flops with master and slave stages and an output multiplexer which takes outputs from the master and slave stages as inputs. Thus devices RX, RY, RZ, and RV can be configured by the multiplexer to serve aε either flip flopε or as latches. Typically, periodic repowering of the carry signal is neceεεary. In this embodiment, to provide this repowering, a repowering buffer comprising inverters 1121 and 1122 is positioned every four multiplexers in the carry path, or once every CLB 301. In another embodiment, a repowering buffer is provided every two multiplexerε in the carry path, thus two repowering buffers are provided in every CLB 301. In this embodiment, CLB 301 includes five input lines per function generator. For example, referring to function generator F, CLB input lineε F0-F3 provide input εignalε to function generator F, and a fifth CLB input line FB provides a multiplexer control input signal. Function generators G, H, and J are configured in a similar manner. Three input lines CLK, CE, and RST provide clock, clock enable, and reεet εignalε, reεpectively, to regiεterε RX, RY, RZ, and RV. Aε shown in Fig. 4A, four groups of three output εignalε are provided from CLB 301, one group associated with each function generator. The three output signals include: «a direct, unregistered output signal from the function generator (provided on CLB output lines X, Y, Z, or V) , »an alternative, unregiεtered output εignal which may be derived from one of the CLB input εignals, a signal from the carry chain, or in two caεeε a εignal from a multiplexer which provideε an output εignal of a five- input function (provided on CLB output lineε XB, YB, ZB, or VB) , and »a registered, output signal which may be loaded by the function generator or by one of the sources of the alternative output signal (provided on CLB output lines XQ, YQ, ZQ, or VQ) . For example, CLB output line X receives a direct unregiεtered output signal from function generator F. CLB output line XB receives either the signal on CLB input line FB or the output signal of multiplexer SI (as determined by multiplexer Bl) , which in turn iε derived from either the carry-out εignal CF or the five-input function-generator output signal from multiplexer FG (see discussion of Fig. 5C below) . CLB output line XQ receives the regiεtered output signal from register RX, which derives its D input signal either directly from function generator F (the signal on output line X) or the alternative output signal on line XB as determined by multiplexer DI. Finally, output line K provideε a constant signal, which may be high or low, as selected by multiplexer PG. In the embodiment of Fig. 4A, multiplexers D1-D4 selectively provide either the output signals from function generators F, G, H, and J (the same signals on CLB output lines X-V) or the output εignalε from multiplexerε B1-B4 to registers RX-RV, reεpectively. If multiplexerε SI and S3 are set to forward the carry signalε of multiplexerε Cl and C3 , reεpectively, then multiplexerε B1-B4 εelect between the input signals on CLB input lines FB-JB, respectively, and the output signals of multiplexers C1-C4. Multiplexers C1-C4, in addition to being used for the carry function in an arithmetic operation, alεo generate wide AND and OR functions. To generate the AND function, a logic 0 is placed on line FB to program multiplexer Cl to generate an AND function of the F function generator output signal on CLB output line X and the carry-in signal on line CIN. Alternatively, to generate the OR function, a logic 1 is placed on CLB input line FB to program- multiplexer Cl to generate an OR function of the complement of the output signal on CLB output line X and the carry-in signal on line CIN. With a truth table architecture, the OR function is achieved by loading the inverse values into the truth table. The function of multiplexers C1-C4 and their interaction with the logic block are further discussed in application serial no. 08/116,659 [M-2565] incorporated by reference.
Example Applications of CLB 301 Figs. 5A-5C illustrate applications using CLB 301 (described in detail in reference to Fig. 4A) to form a carry chain, a cascadable decode circuit and 2 five-input functions, respectively. Theεe figures use heavy lines to illustrate lines of CLB 301 which are used for the particular selected function and thin dashed lines to indicate lines and elements not used for the particular function. In Fig. 5A, CLB 301 is configured to compute a half sum H3H2H1H0 (where H3, H2, Hi, and HO are the four bits of a four-bit half-sum) and the carry bitε C3C2C1C0 of two numbers A3A2A1A0 and B3B2B1B0. Another CLB (not shown), preferably poεitioned in the tile to the right or left of the one shown, will be used to complete the sum. Operands A3 and B3 are placed on any two of CLB input lines J0-J3. Operands A2 and B2 are placed on any two of CLB input lines H0-H3. Al and BI are placed on any two of CLB input lines G0-G3. A0 and B0 are placed on any two of CLB input lines F0-F3. Unused lineε are either held high or held low. Each of function generatorε F, G, H, and J is loaded with the truth table of the XOR function (which is the half sum of its input signals) . The truth table takes into account the values applied to unused input lineε. If there are lower order bits than those applied to function generator F, the carry-out of those bits is placed on carry in line CIN. Multiplexers Cl, C2, C3, and C4 are controlled by the output signals of function generators F, G, H and J, respectively. Specifically, if the function generator output signal is a logic 1 (εignalε A and B are not equal) , the carry-in value iε forwarded to the carry-out of that bit, and if the function generator output signal is a logic 0 (signals A and B are equal), the value of signal A or signal B is forwarded to the carry-out of that bit. Multiplexers B1-B4, SI and S3 are controlled to forward the carry-out of each bit to the "B" CLB output line (i.e. CLB output lines XB, YB, ZB, and VB) of that bit. The function generator output signal for each bit (on CLB output lines X, Y, Z, and V) is provided as the half sum output for that bit. In another application shown in Fig. 5B, CLB 301 is configured to operate as a cascadable decoder. A 16-bit addresε repreεented by εignals A0-A15, iε placed on CLB input lines F0-F3, G0-G3, and J0-J3. CLB input lines FB, GB, HB, and JB are grounded. The 16 bits of each of function generatorε F, G, H, and J include a εingle logic 1 to reflect a portion of a predetermined addreεε. A logic 1 εignal iε placed on carry in line CIN. If all four function generatorε F, G, H, and J output their respective logic Is (i.e. indicating an address "match"), then multiplexers C1-C4 all forward a logic 1 and produce a logic 1 signal on carry out line COUT. In yet another application εhown in Fig. 5C, CLB 301 is configured to generate two functions of five input signalε each. Function generatorε F and G generate a firεt function of five input εignals on CLB output line XB and function generators H and J generate a second function of five input signals on CLB output line ZB. For the first function, four input signalε A0-A3 are provided on the CLB input lines to both function generators F and G and the fifth input signal A4 is provided to line FB. Input signal A4 causes multiplexer FG to select the output signal of function generator F or function generator G. In this embodiment, multiplexer SI is programmed by its memory cell to select the output signal of multiplexer FG, and multiplexer Bl iε programmed by its memory cell to select the output signal of multiplexer SI. Thuε, the five-input function output εignal from function generators F and G is provided on CLB output line XB. In a similar manner, the function of the five input signals- B0-B4 provided to function generators H and J is generated on CLB output line ZB. Loading the appropriate truth tables into the two asεociated function generators F and G produces the desired function of five input signals. Specifically, in one embodiment, a 32-bit look up table is stored in function generators F and G (i.e. two 16-bit look up tableε) . Thus, a large number of functions are alternatively provided by loading different values into the memory cellε which form the truth tableε of the function generatorε and control multiplexerε FG and HJ.
Triεtate Buffer 302 Fig 4B illustrates a schematic drawing of tri-state buffer block 302 (Fig. 3A) which includes tristate buffers B4- B7. Note that the line names are identical to those referenced in Fig. 3A. Output εignals from AND gates A4-A7 control tristate buffers B4-B7, respectively. If AND gate A5, for example, provides a logic 0 output signal, buffer B5 is enabled and provideε a buffered output signal on line TQ5 which matches its correεponding input signal on line Q5. On the other hand, if AND gate A5 provides a logic 1 output signal, buffer B5 is disabled and provides a high impedance at the output terminal. The output signalε provided by AND gates A4-A7 are determined either globally by the output signal from OR gate ORl or individually by memory cells MM4-MM7, respectively. If memory cells MM4-MM7 store logic O'ε, then the output signals of AND gates A4-A7 will also be logic O's regardlesε of the εignal from OR gate ORl. OR gate ORl provideε a high output εignal if' the ENLL εignal iε low or if the signal on line TS is high. Referring back to Fig. 3A, the signal on tristate line TS is programmably selected from any of tile interconnect lines M16-M23. The ENLL signal is a global εignal provided to all bufferε 302 in all tileε 101. The ENLL εignal iε held low during configuration and as other signals are being enabled after configuration in order to prevent contention which could result if various TS lineε which are to connect .input εignalε to the εame long line are εwitching unpredictably during configuration. If bufferε B4-B7 are to be used during operation as repowering buffers (always enabled) for placing a signal onto a long line, memory cellε MM4-MM7 are loaded with low valueε during configuration. Thiε meanε that during configuration, AND gateε A4-A7 will enable buffers B4-B7. However, no contention occurs because the input signalε Q4-Q7 which drive εignalε TQ4-TQ7 onto long lineε all carry a common εignal during configuration, aε will now be diεcuεεed in connection with Fig. 4C.
Output Enable Block 309 The bufferε in output enable block 309 are disabled during configuration of the device so that lines driven by these buffers will not experience contention. Fig. 4C illustrates the structure of block 309. Each buffer in output enable block 309 compriseε a two-input AND gate. One input of each AND gate is driven by a global enable εignal ENOUT. The other input iε provided by a line Q0'-Q7' which iε in turn provided by output εignalε from CLB 301 (Fig. 3A) . During configuration, unexpected lineε may be connected to theεe lines Q0-Q7. Therefore, to prevent contention, the ENOUT signal is held low during configuration so that all output εignalε on lineε Q0-Q7 are low and unexpected connection of other lines does not produce contention because all signalε have a low value.
Neighbor Input Matrix 303 Referring back to Fig. 3A, in accordance with this embodiment of the present invention, adjacent CLBs 301 are not connected via direct connectionε, only via PIPε. For example, input signals are selectively provided to CLB 301 from input interconnect structure 303. Thus, each input line QS0-QS3 is connectable to one of the CLB input lines of one function generator. In this embodiment, line QS0 is connectable to CLB input line Fl of function generator F, line QSl is connectable to CLB input line Gl of function generator G, line QS2 is connectable to CLB input line HI of function generator H, and line QS3 is connectable to CLB input line Jl of function generator J. Because each function generator F, G, H or J is configurable to provide any function based on its input signals, a particular signal can be provided to any input terminal of a function generator and the look up table of that function generator loaded accordingly. Thus, it is not important which input signal is available to which function generator input terminal. A signal on input line QW0 drives both CLB input lineε F0 and FB. Similarly, a signal on input line QWl driveε CLB input lines GO and, GB, a signal on input line QW2 drives CLB input lines HO and HB, and a signal on input line QW3 drives CLB input lines JO and JB. Each signal on input lines QE0, QE1, QE2, and QE3 also drives two CLB input lines. Specifically, a signal on input line QE0 drives CLB input lines Fl and FB, a signal on input line QE1 drives lines Gl and GB, a signal on input line QE2 drives lines HI and HB, and a signal on input line QE3 driveε lineε Jl and JB. Signals on input lines QN0-QN3 and QS0-QS3 each drive only one CLB input line. Specifically, a signal on input line QN0 drives CLB input line F0, a signal on input line QN1 driveε CLB input line GO, a εignal on line QN2 drives CLB input line HO, and a signal on line QN3 drives CLB input line JO. A signal on input line QSO drives CLB input line Fl, a signal on input line QSl drives CLB input line Gl, a signal on input line QS2 drives CLB input line HI, and a signal on input line QS3 drives CLB input line Jl. This embodiment is particularly desirable for horizontal flow of many signalε becauεe each input line QE0-QE3 and QW0-QW3 iε programmably connected to two CLB input lineε. Other embodiments of the present invention, having a different number and positioning of programmable connections, are optimized for a different signal flows.
Output Matrix 304 CLB 301 provideε output εignalε on CLB output lineε X, XQ', XB, Y, YQ, YB, Z, ZQ, ZB, V, VQ, and VB. Note that CLB 301 alεo deter ineε whether it provideε the signal on carry out line COUT or whether the signal on carry in line CIN is transferred to the next CLB in the tile above. PIPs on CLB output lines X, XQ, XB, Y, YQ, YB, Z, ZQ, ZB, V, VQ, VB, and K are selectively programmed to drive any number of output lines Q0-Q7 through a CLB interconnect structure 304. Note that CLB interconnect structure 304 is fully pipulated (i.e., any of the 13 output εignalε of CLB 301, excluding the εignal on carry out line COUT, can drive any of output lineε Q0-Q7) . Note that interconnect structure 304 also bufferε itε output εignals for driving further lines. Full pipulation of interconnect εtructure 304 requires 108 (13 x 8) PIPs. In contrast, structures 303, 305, 306, and 307 in combination use 200 PIPs, even though they are sparεely pipulated. Flexibility of CLB 301 to acceεε a particular input εignal from tile interconnect lineε M0-M23 iε ensured by: »fully pipulating CLB output interconnect εtructure 304 so that any CLB output signal can be provided to any of tile interconnect lineε M0-M23; opipulating programmable routing matrix 201 εo that each line M0-M23 is connected to at least one line M0-M23 in each adjacent routing matrix 201 (εee discusεion of Fig. 6 below) ; «pipulating CLB matrix 202 so that each output line of one CLB can be connected to at least one input line of each adjacent CLB; and •forming function generators F, G, H, and J as look up tables, thereby allowing all input signalε to each look .up table to be interchangeable. <»Moreover, except for five-input functionε, function generatorε F, G, H, J are alεo interchangeable. Thus, in accordance with the present invention, the above- described sparsely pipulated structureε 303, 305, 306 and 307 significantly reduces chip area while maximizing flexibility. Signals on output lines Q0-Q3 drive the input lines of CLBs in neighboring tileε. For example, by placing two core tileε 101 of Fig. 2A εide by side, as in εhown in Fig. 2B, output line Q0 on the left edge of core tile 101b connectε to input line QE0 on the right edge of tile 101a. Other lineε are correεpondingly connected. Thuε, referring to Figε. 2A, 2B, and 3 in combination, CLB output line X (Fig. 3A) of CLB 301 in CLB matrix 202c (εee Fig. 2B) is programmably connected to output line QOc, which extends east (as well as other directions) from CLB matrix 202c in core tile 101c, which in turn iε connected to input line QWOd of CLB matrix 202d in core tile lOld. PIPε are provided (aε diεcuεεed above) for connecting input line QWO to CLB input lineε F0 and FB of CLB 301. Thuε, in this manner, a path is establiεhed from the output lineε of CLB 301 in CLB matrix 202c to the input lines of CLB 301 in CLB matrix 202d using only two PIPs, which in one embodiment includes two transistors. In another embodiment, shown in Fig. 3B, a PIP in CLB output interconnect structure 304 requires a signal on a CLB output line to propagate through two transiεtorε (note that signal K, a constant power or ground εignal, propagates through four tranεiεtors) . Fig. 3B illustrates a multiplexer structure 400 which implements all PIPs which connect the twelve CLB output lines (X, XQ, XB, Y, YQ, YB, Z, ZQ, ZB, V, VQ, VB) of CLB 301 and one power/ground output signal line K to output line Q0. Multiplexer structure 400 includes memory cells 31, 32, and 33 which control a first bank of twelve transiεtors 351 and select signal K if no transiεtor in bank 351 iε selected. A logic 1 stored in one of memory cells 31, 32, and 33 selects one signal from each group of three signalε in bank 351. If all memory cellε 31, 32, and 33 store a logic 0, then signal K is provided to node 30. In a second εtage, memory cellε 34 and 35 control AND gateε AND1-AND4 to select the output signal from one of output lines VQ, ZQ, YQ, and XQ and to provide the selected signal on output line Q0. If ' memory cells 31, 32, and 33 store a logic 0, thereby selecting signal K, then memory cells 34 and 35 must be programmed to provide the signal at node 30. Thus, thirteen PIPs are implemented using only 5 memory cellε and sixteen transistors, each path requiring only two transistors for all signals except the conεtant value K, which travelε a longer path. The signal on line K iε not harmed by having a longer εignal path since it is not a switching signal. A multiplexer structure 400, which εelectε one of thirteen output εignals of CLB 301 to drive a predetermined output line, is provided for each of output lines Q0-Q7. Note that although it is poεεible for none of the thirteen output signals to drive an output line Q0-Q7, multiplexer structure 400 cannot select more than one of the thirteen output signals. In this manner, contention on output lines Q0-Q7 is avoided. In another embodiment of multiplexer structure 400, thirteen memory cellε are provided, each memory cell controlling a single transiεtor. In thiε manner, each path requireε only one tranεiεtor, thereby increaεing signal speed. However, note that this embodiment increaεeε silicon area.
Feedback Interconnect Structure 305 Referring back to Fig. 3A, feedback interconnect structure 305 selectively connects output lines Q0-Q3 to CLB input lines F2, G2, H2, and J2 within configurable logic block matrix 202. Thus, in this embodiment, any output signal from CLB 301 can be fed back to selected CLB input lines of any function generator F, G, H and J in CLB 301. Feedback interconnect structure 305 provides a PIP pattern that supports a counter (a counter feeds back its own signal) or a shift register (a shift register requires its neighbor'ε εignal) . The above-deεcribed PIP pattern prevents contention between εignalε on CLB input lineε F2, G2, H2 and J2 and εignals on CLB input lineε F0, GO, HO, JO, Fl, Gl, Hi, and Jl which are provided on other input lines to CLB matrix 202, such aε input lineε QWO and QN3. Other embodiments of the present invention provide different combinations of PIPs in feedback interconnect structure 305. •
General Input Matrix 306 General input matrix 306 receiveε input εignalε on tile interconnect lines M0-M23 and includes PIPs for placing these input signals onto CLB input lines F0-F3, FB, G0-G3, GB, HO- H3, HB, J0-J3, and JB. Optionally, a PIP pattern allows a signal on any tile interconnect line M0-M23 in general input interconnect structure 306 to drive one input line of each function generator F, G, H, and J. Because function generator input signals are interchangeable, (Lookup table inputs are interchangeable.) no tile interconnect line M0-M23 need be coupled to more that one input line of a function generator. In this embodiment of general input interconnect structure 306, PIPs are provided so that each CLB input line FB, GB, HB, and JB is driven by a signal on one of six tile interconnect lineε M0-M23. Aε another criterion in this embodiment, no CLB input line includes more than eight PIPs. Thus, referring to Fig. 3C, a multiplexer structure 401, using only three memory cells 36, 37 and 38, selects one of eight posεible εignalε to control a first bank of transiεtorε 361. Specifically, memory cell 38 εelectε one each of the paired εignalε on input lineε QWO or QN0, M15 or M14, M9 or M8, and M7 or M6. Memory cellε 36 and 37 provide εignals to the input terminals of AND gates AND5-AND8, which in turn control a second bank of transiεtors 362 to select a single εignal to place on CLB input line F0. In this embodiment of the present invention, the pattern of PIPs also provides a function of five inputs (discussed above in connection with Fig. 5C) . For example, a signal on tile interconnect line Ml8 or Ml9 driveε input line FB, a εignal on tile interconnect line M14 or M15 driveε lineε FO and GO, a εignal on tile interconnect line M12 or M13 driveε lines Fl and Gl, a signal on tile interconnect line M16 or Ml7 drives input lineε F2 and G2 and a εignal on tile interconnect line M20 or M21 driveε input lineε F3 and G3. In thiε configuration, five-input functionε are easily implemented with the PIP pattern provided. In further accordance with the present invention, and referring to Figs. 3A and 6, PIPs allow connection from long horizontal lines LH0-LH7 and long vertical lines LV0-LV7, as well as global (horizontal and vertical) lines GHO, GH1, GVO, and GVl to registerε RV, RZ, RY, and RX without going through function generators J, H, G, and F. Specifically, long horizontal lines LH0-LH7 and long vertical lines LVO and LV7 as well as global horizontal lines GHO, GHl and global vertical lines GVO, GVl are selectively coupled to tile interconnect lines M0-M23 (Fig. 6) . These tile interconnect lines, if coupled to CLB input lines FB, GB, HB and JB, bypass function generators F, G, H and J, respectively, and provide signals (via intermediate multiplexers) to registerε RX, RY, RZ, RV, reεpectively (Fig. 3A) . Note that global lines GHO, GHl, GVO, and GVl are also selectively coupled to registers RX, RY, RZ and RV via register control interconnect structure 307. Allowing all tile interconnect lineε M0-M23 to connect to one CLB input line FB, GB, HB or JB and providing connectionε from every long line to one tile interconnect line M0-M23 (diεcuεsed below in connection with Fig. 6) assureε that εignals on those long and global lines can drive the necessary registerε. In the preεent invention, thiε PIP pattern alεo allowε εignalε on all long lineε and global lines to drive input lines to function generatorε F, G, H and J via general input interconnect εtructure 306. Output Interconnect Matrix 308 In thiε embodiment, output lines Q4-Q7 also provide output signals to programmable interconnect matrix 201 (Fig. 2A) via tile interconnect lines M0-M11 or via lines TQ4-TQ7. Output lines Q0-Q3 also provide output signals to selected ones of tile interconnect lines M12-M23. In the embodiment shown in Fig. 3A, output interconnect structure 308 allows signals on each output line Q0-Q7 to drive up to three tile interconnect lines M0-M23. The full pipulation of CLB output interconnect structure 304 allows any utput line of CLB 301 to be connected to any tile interconnect line M0-M23. Note that general input interconnect structure 306 also provides selected feedback signals on output lines Q0-Q3 to CLB 301.
Register Control Interconnect Structure 307 Clock line CLK, clock enable line CE, reset line RST and tristate line TS may be driven by signalε provided on εelected tile interconnect lineε M0-M23 (from programmable routing matrix 201) . In addition, for a low εkew control, clock line CLK is driven directly by signalε on global horizontal lineε GHO and GHl or from global vertical lineε GVO and GVl.
No Contention In accordance with the preεent invention, if one PIP on a predetermined CLB input line iε programmed on, then no other PIP on that CLB input line εhould be turned on. For example, if the PIP at the interεection of input line QWO and CLB input line F0 iε programmed on (i.e. a εignal on input line QWO driveε CLB input line F0), then the PIPε on tile interconnect lines M6, M7, M8, M9, M14, Ml5, and input line QN0 remain turned off, thereby ensuring no contention on CLB input line F0. Typically, contention is avoided either by using a convenient decode method for selecting which PIP on a single input line is turned on or by uεing ruleε provided in the εoftware which programε the memory cellε to avoid turning on more than one PIP on an input line. In other embodiments, alternative input selection means are possible. For example, in one embodiment one memory cell is loaded to specify whether each PIP is turned on or not.
Programmable Routing Matrix 201 Fig. 6 illustrateε the programmable routing matrix 201 of Fig. 2a. Note that whereaε all PIPε in CLB matrix 202 are shown as triangles to indicate signal flow onto one line, in Fig. 6, most PIPs in programmable routing matrix 201 are shown aε open circleε to indicate εignal flow on both lineε. The exceptionε are PIPε which connect lineε TQ4 through TQ7 (output lineε from triεtate buffer block 302 of Fig. 3A) to long horizontal lineε LH0-LH7 and long vertical lineε LV0-LV7, and PIPε which place εignalε from global signal lines GHO, GHl, GVO, and GVl onto tile interconnect lines M0 through M3. Extending into programmable routing matrix 201 are global lines, long lines, double length lines, and εingle length lineε. Each of theεe lineε iε connectable to εelected tile interconnect lineε M0-M23. Programmable routing matrix 201 provideε connection to programmable routing matrices in adjacent tiles through single length lines extending in the four compasε directions, i.e. single length north lines Nl- Nil, single length east lines El-Ell, single length εouth lineε Sl-Sll, and εingle length weεt lineε Wl-Wll. Connection to programmable routing matriceε one tile away are provided by double length north lineε DN0 and DN6, double length eaεt lines DEO and DE6, double length south lines DSO and DS6, and double length west lineε DW0 and DW6 (see Fig. 2A) . Each long vertical line LV0-LV7 and long horizontal line LH0-LH7 which extends through the tile is connectable to one of tile interconnect lines M0-M23. The particular pattern of PIPs illustrated in Fig. 6 iε sparse, yet provides significant signal transferability. Specifically, programmable routing matrix 201, which in thiε embodiment includeε only 124 PIPs, is sparse relative to the approximately 4200 PIPε which could be provided to connect every line in Fig. 6 to every other line. However, the PIP pattern enεureε that any line iε connectable to any other line if enough intermediate PIPs are used. For example, as shown in Fig. 6, west line Wl is connectable to east line El by turning on two PIPs which connect tile interconnect line Ml to these two lines. In contrast, to make a connection between west line Wl and eaεt line E2 requireε 8 PIPε and 9 lines, i.e. connecting west line Wl to tile interconnect line Ml to eaεt line El to tile interconnect line M20 to weεt line W9 to tile interconnect line M9 to north line N9 to tile interconnect line M21, and finally to east line E2. Although a path of this length is typically undesirable, in some applications delay is unimportant. In those applications, the availability of such a path allows completion of a design. Easy paths requiring only two PIPs are available to connect lines Nl, SI, El, and Wl to tile interconnect line Ml; lines N2, S2, E2, and W2 to tile interconnect line M2 and so forth through tile interconnect line M5. Tile interconnect line M6 connects to double length lines DN6, DS6, DE6, and DW6. Tile interconnect lines M7 through Mil connect to correspondingly numbered single length lines extending north, south, eaεt and weεt. PIPs on tile interconnect lineε M12-M23 implement a pattern of cross connecting that facilitates signal transfer flexibility with minimal sacrifice of speed, and the sparεe pipulation achieveε valuable reduction of chip area. For example, tile interconnect line M12 connectε to double length north line DNO, to south line S3, to east line E5, and to west line Wl, whereas tile interconnect line M15 connects to north line N3, east line E8, double south line DS6, and west line W4. In this manner, the present invention provides a predetermined pattern to minimize the number of PIPs, thereby allowing any line to be connected to any other line. Thus, the present invention ensureε that a path is always provided, while minimizing silicon area.
Routing Matrix Model Each of tile interconnect lines M0-M23 is connectable to five or six other lines. Thus, as shown in Fig. 7A, each tile interconnect line M0-M23 is represented as a εtar with five or εix points. In this model, eight tile interconnect lines MO through M7 are programmably connectable to selected oneε of north lines N0-N3, eaεt lineε E0-E3, εouth lineε S0-S3 and weεt lineε W0-W3. Tile interconnect lineε MO through M3 are connectable to north, south, east and west lines of the same numerical suffix. Tile interconnect lineε M4 through M7 are connectable to εtaggered ones of the north, south, eaεt and west lines. Thus, tile interconnect lines M0-M3 provide a means for interconnecting north, east,- south and weεt lines of the same suffix, while tile interconnect lines M4-M7 provide an opportunity for cross-connecting lines from four compass directions. Also, tile interconnect lineε M0-M7 provide means for connecting programmable routing matrix 201 to configurable logic block matrix structure 202 (Fig. 3A) .
Connectivity Model for Routing Matrix and Logic Blocks Fig. 7B illuεtrateε the "εtar εtructure" of the present invention. In a star structure, each CLB 301 is asεociated with a particular εtar 201 (i.e the programmable routing matrix 201) from which radiate lineε connecting to other εtarε 201 and from there to other CLBε 301. In Fig. 7B, double length and εingle length lineε are illustrated. In other embodiments, lines of other lengths are provided in the εtar structure. Thus, the star structure of the present invention enεureε good connectivity between itε related CLBε and other partε of the device.
Global Interconnect Structure Fig. 8 illuεtrateε hard connections from global signal padε P113, P114, P115, and P116, which are poεitioned near the cornerε of chip 100 (Fig. 1) , to global signal lines GTL, GTR, GBR, and GBL, respectively, which are typically located near the four edges of chip 100. Each global εignal line is programmably connectable to a plurality of lines extending vertically or horizontally through each row or column of core tiles 101. For example, top left global signal line GTL is connectable to global vertical lines GVl-a through GVl-n, via PIPs PVl-a through PVl-n, respectively, i.e. one PIP for each column of core tiles 101. Top right global signal line GTR is connectable via PIPs PHO-a through PHO-m, respectively, i.e. one PIP for each row of core tileε 101 to global horizontal lines GHO-a. Bottom right global signal line GBR iε connectable to global vertical lineε GVO-a through GVO-n. Finally, bottom left global signal line GBL is connectable to global horizontal lines GHl-a through GHl-m. Note that the global vertical and horizontal lines with reference labels beginning with GV or GH are connectable to programmable routing matrices 201 and CLB matrices 202 in core tiles 101 through which the global lines pass, as discussed above in connection with Figs. 2A, 3, and 7. As also shown in Fig. 8, long lines LV0L, LV7L, LH0T, LH7T, LVOR, LV7R, LHOB, and LH7B which extend through the edge tiles (not shown in Fig. 8 for simplicity but shown in Figs. 10A through 10D) of chip 100 (Fig. 1) are also connectable to the global lines. Specifically, bottom right global εignal line GBR can be driven by εignalε on bottom horizontal long lineε LHOB and LH7B via PIPs PGBR0 and PGBR7, respectively. Bottom left global signal line GBL can be driven by signals on left vertical long lines LV0L and LV7L via bottom left buffer BBL via PIPε PGBL0 and PGBL7, reεpectively. Equivalent connectionε are provided for the top and right edgeε of the chip. Left, top, right, and bottom long lineε are connectable to each other through PIPε, such as PIP PBR7. Because long lineε LVOL, LV7L, etc. are driven by signals provided by any of the pads at the perimeter of the chip (through edge tiles 103-106 discussed below in connection with Figs. 10A-10D) , any pad can provide a global signal. Moreover, any of core tiles 101 can also provide a global signal through edge tiles 103- 106.
Optional Long Line Splitter Figs. 1 and 9 illustrate one embodiment of the preεent invention which includes long line splitters LLS which may be poεitioned partly through a line. Two columns of tiles are illustrated in Fig. 9, each column comprising a top edge tile 104, six core tiles 101, and a bottom edge tile 106. Long vertical lines LV0-LV7 traverse all core tiles 101, and in each of the two columns terminate in edge tileε 104 and 106. Long vertical lineε LV0-LV7 are alεo connectable to εelected oneε of tile interconnect lineε M0-M15 and lineε TQ0-TQ3 in edge tileε 104 and 106, aε will be discussed below in connection with Figs. 10A-10D. Furthermore, as diεcuεεed above in connection with Figε. 2A and 6, long lineε LV0-LV7 are connectable to εelected lineε in programmable routing matriceε 201. For clarity, horizontal long lineε LH0-LH7 are not illuεtrated in Fig. 9, but are illuεtrated in Figs. 2A and 6. In the embodiment shown in Fig. 9, vertical long lines LV0-LV7 in the three upper core tiles 101 are separated from the portions in the three lower core tiles 101 by long line splitterε LLS. An inεet illuεtrateε that a long εplitter LLS in one embodiment comprises an n-type tranεiεtor which iε turned off by providing a low voltage to a control gate CG, thereby separating the vertical long line into top and bottom segments. Long line splitterε LLS are typically uεed in large chip embodimentε to allow top and bottom long lineε to be separately driven in different portions of the chip. As shown in Fig. 1, horizontal long lines LH0-LH7 are also separated in the middle of chip 100 by long line εplitterε LLS. In other embodimentε, εeveral long line εplitters such as long line splitterε LLS and LLSA are provided along the εame long line, or long line splitters LLSB are provided between an end of a long lines in one edge tile and an end of a long line in an adjacent edge tile, thereby programmably connecting theεe long lineε.
Edge Tileε for Embodiment of Fig. 2A Figε. 10A-10D illuεtrate in greater detail the edge tiles shown in Fig. 2A. Specifically, Figs. 10A-10D show left edge tile 103, top edge tile 104, right edge tile 105, and bottom edge tile 106, respectively. Each edge tile in these embodimentε iε typically but not always connected to at least one of pads PV, PZ, PY or PX. In other embodiments described in detail below in reference to Fig. 1, at least one edge tile is not connected to any pad. In Fig. 10A, four pads, PV, PZ, PY, and PX are connected to edge tile 103 via input/output (I/O) devices IOBV, IOBZ, IOBY and IOBX, respectively. Each of I/O devices IOBV, IOBZ, IOBY and IOBX is connected to edge tile 103 by three line . For example, I/O device IOBV iε connected to edge tile 106 by an I/O input line IV, an I/O output line OV, and a tri-εtate line TSV. Note that the output signal provided to pad P42 by output line OV is controlled by a signal on I/O tri-state line TSV. Similar lines are provided for I/O devices IOBZ, IOBY and IOBX. A fully pipulated I/O input interconnect structure 1001 allows signalε on I/O input lines IV, IZ, IY, and IX to drive edge tile input lines QIN0-QIN3. Neighbor output interconnect structure 1004 allows signalε on output lines QE0-QE3 from a core tile 101 to be provided to pads PV, PZ, PY and PX. I/O output interconnect structure 1002 allows signals from the neighboring core tileε (in edge tile 103, provided by north lines 100-N7, south lines S0-S7, and east lineε E1-E5 and E7- Ell) aε well aε signals on long lines LH0-LH7 and LV0-LV7 and double length lines DHO, DH6, to be provided to the padε. Note that I/O output interconnect εtructure 1002 haε a εubεtantially complete pipulation, thereby allowing any εignal coming into left edge tile 103 from elεewhere in the chip interior to be placed on any of pads PV, PX, PY or PZ in spite of a sparse general interconnect structure 1006 between lines coming from other parts of the chip interior into or out of left edge tile 103 and a set of edge tile interconnect lines M0-M15. Intermediate interconnect structure 1003 allows signalε which come from one of tile interconnect lineε M0-M15 to be placed on one of edge tile input lines QIN0-QIN3, buffered onto a corresponding output line Q0 through Q3, and provided through tristate buffer block 302 to a corresponding line TQ0- TQ3. A signal can thence be provided to horizontal long lineε LH0-LH7 and vertical long lineε LV0-LV7. Thus, signalε on edge tile input lineε QIN0-QIN3 drive output lines Q0-Q3 directly and drive lines TQ0-TQ3 through tri-state buffer block 302. Feedback interconnect εtructure 1005 allowε signals on output lines Q0-Q3 to drive tile interconnect lines M0-Mi5 which are in turn selectively connected to north lines N0-N7, south lines S0-S7, east lines El-Ell, -double length lines DEO, DE6, DH0, and DH6 and to long lines LV0-LV7. In thiε manner edge tile 103 allowε connection to padε which in turn have external connectionε to chip 100, as well aε on an adjacent core tile 101 chip and to adjacent edge tileε (or an adjacent corner tile, explained in detail below) . Padε PV, PZ, PY, and PX repreεent padε P42, 41, 40 and P39, reεpectively, which are εhown in Fig. 1. Figε. 10B, 10C, and 10D εhow embodimentε of edge tileε 104, 105, and 106, respectively. Because these tiles are similar in structure, except for orientation, and have identical numerical references to that shown in Fig. 10A, the detail of the interface structureε in Figε. 10B, 10C, and 10D will not be diεcuεsed herein.
I/O Interface for Use With Optional Pad Fig. 10C illustrateε a combination of connected and unconnected padε, thereby illuεtrating the flexibility available at the maεk level. In thiε embodiment, one unconnected pad PZ and connected pads PV, PY, PX implement a configuration which iε repreεented in Fig. 1 by pads P6, P7 and P8 (connected to edge tile 105) . As shown in Fig. 1, each edge tile has a predetermined number of pads connected to it. For example, pad P17 is the only pad connected to its edge tile 106. Therefore, as shown in Fig. 10D, only one of padε PV, PZ, PY and PX (in thiε embodiment, pad PV) is connected to edge tile 106. Referring back to Fig. IOC, pad PZ and its input/output buffer structure IOBZ are eliminated, thereby reducing total chip size by reducing the total number of pads on the chip. Input line IZ and output line OZ are shorted together in a region which in one embodiment is outside tile 105. In this manner, all tiles 105 are identically laid out, regardless of how many pads PV, PZ, PY, or PX are provided. Referring back to Fig. 1, pads P6, P7 and P8 are connected to a single edge tile 105. In Fig. 10D, pad PY and related structureε IOBY and ESDY are not provided. Thuε, the embodiment of Fig. 10D represents pads P26 through P28 of Fig. 1. In other embodiments of the present invention, other pads are removed, up to and including removal of all four pads. For example, Fig. 1 includes certain edge tiles to which no pads have been connected (two of edge tiles 103, one of edge tiles 104, and one of edge tiles 105 have no pads at all connected to them) .
Corner Tiles Figs. 11A through 11D illustrate the four corner tiles 113, 114, 115, and 116, reεpectively, of chip 100 (Fig. 1) . Fig. 11A includeε a conventional boundary εcan block BSCAN compatible with IEEE 1149.1 deεcribed in detail in a Xilinx Application Note by Luiε Moraleε entitled, "Boundary Scan in XC4000 Deviceε" and available from Xilinx, Inc., 2100 Logic Drive, San Jose, CA 95124, which iε herein incorporated by reference in itε entirety. In Fig. 11A, top left corner tile 113 includes hard connections from εingle length eaεt lineε E0-E7 to εingle length εouth lineε S0-S7, reεpectively, and programmable connectionε from long horizontal lineε LH0-LH7 to long vertical lines LV0-LV7, respectively. Fig. 11A further εhowε one embodiment of an interconnect εtructure 1101 which provides the programmable connection of boundary scan block BSCAN to the above-described single length and long lines. Corner tile 113 also includes a programmable connection to an external pin P43 that provideε a global clock εignal SGCK1. Corner tile 114, illuεtrated in Fig. 11B, iε εimilar in configuration to corner tile 113 (Fig. 11A) . Specifically, tile 114 (Fig. 11B) includes hard connections for connecting single length west lineε W0-W7 to εingle length εouth lines S0-S7, respectively, and programmable connections for connecting long horizontal lines LH0-LH7 to long vertical lines LV0-LV7, reεpectively. In both Figε. 11A and 11B, long vertical line LVO connectε to long horizontal line LHO, but becauεe of the layout of tileε 113 and 114, the lineε are drawn in a different poεition on the page, and therefore corner tileε 113 and 114 have a different appearance in Figε. 11A and 11B. Corner tile 114 includes- a clock input pin Pl that provideε clock signal SGCK4. Corner tile 114 includes an interconnect structure 1102 which provides a programmable connection between a conventional oscillator/counter circuit DIV uεed for counting bitε during configuration of chip 100 and the above-described single length and long lineε. In one embodiment, circuit DIV iε used during chip operation to provide an on-chip oscillator or a counter-divider. Circuit DIV is typically configured to divide an internal oscillator signal or a user-provided signal. Corner tile 114 further includes a boundary scan update signal BSUPD, which is part of the standard boundary scan circuitry (most of the circuitry being located in tile 113) . In this embodiment, signal BSUPD is programmably placed on west lines W2 and W3 (and thus south lines S2 and S3) as well aε long horizontal lineε LH2 and LH3 (and thus long vertical lines LV2 and LV3) . Fig. 12 illustrateε one embodiment of a circuit which implementε oεcillator/counter circuit DIV of Fig. 11B. Two output tapε, OSCl and OSC2 are provided, which together can be configured to provide twelve frequencieε which are diviεionε of the original input frequency. An internal oscillator OSC provides an oscillator signal to NAND gate 1231. NAND gate 1231 iε enabled by a memory cell OSCRUN. When enabled, the output εignal from oscillator OSC is provided to multiplexer 1201. Memory cell 1202 determines whether multiplexer 1201 provides the output signal from internal oεcillator OSC or a εignal on one of εingle length west lines W0-W3 (equal to a signal on single length south lines S0-S3, respectively, see Fig. 11B) , or a signal on one of long horizontal lines LH0-LH3 (equal to a signal on long vertical lineε LV0-LV3) . Multiplexer 1201 provideε an output εignal which iε then available to be divided by flip flopε 1214 through 1220. Multiplexerε 1225 and 1226 provide a choice of divide factors on the data input terminals of flip flops 1227 and 1228 respectively. The outputs of theεe flip flops are provided as signalε on taps OSCl and OSC2. Flip flops 1227 and 1228 are clocked from the original input signal and serve to reduce the skew of the output signalε from multiplexers 1225 and 1226. Multiplexer 1225, under control of memory cells OSC1A and OSC1B, provides a switching signal which can be the input signal from multiplexer 1201 divided by 4, 16, 64, or 256. Depending upon the setting in memory cell 1203, multiplexer 1204 can forward the original clock εignal output from multiplexer 1201 or can provide a divided εignal (the original frequency divided by 512) which iε output from flip flop 1213. If multiplexer 1204 is set to provide the output signal of multiplexer 1201, then the original clock signal is alternatively provided by multiplexer 1226 as divided by 2, 8, 32, or 128. If multiplexer 1204 is εet to provide a divided εignal from flip flop 1213, multiplexer 1226 will provide an output εignal which haε the frequency of the original input εignal on multiplexer 1201 divided by 1024, 4096, 16,384, or 65,536. Thuε, the εignalε on output tapε OSCl and OSC2 are programmed to oεcillate at many different choiceε of frequency. Fig. 11C shows lower right corner tile 115. Corner tile 115 programmably connects long horizontal lines LH0-LH7 and long vertical lines LV0-LV7, respectively, and connects north lines N0-N7 to west lines W0-W7. Corner tile 115 further includes a programmable interconnect structure 1103 which programmably connects a start-up block STARTUP to north lines N0-N7 (and thuε west lines W0-W7) and long vertical lines LV0- LV7 (and thus long horizontal lines LH0-LH7) . Start-up block STARTUP includes circuitry to sequence the signals and control timing of the start-up function as chip 100 (Fig. 1) is activated. During the start-up function, three events are necessary to move from configuration mode to operating mode: release of the signal on a global tri-state signal terminal GTS, release of the signal on a global reset signal terminal GSR, and release of a signal on a load complete terminal DONE (indicating that all configuration bits have been loaded into their appropriate locations in the FPGA) . The start-up block STARTUP allows the user to program the- order in which these signals are released, aε well aε the timing of these signals (for example separating each signal from another εignal by one, two, or three clock cycleε) . Fig. 11D εhows lower left tile 116 with single length and long lines connected similarly to the other three corner tiles. In addition, lower left corner tile 116 includes a read-back unit RDBK. Read-back unit RDBK allowε the user to read the content of the configuration memory onto any data line and out onto any external pin through the data line terminal DATA of readback unit RDBK. The trigger terminal TRIG in read-back unit RDBK carries a signal that triggerε copying of one row of configuration data from the configuration memory into the εame shift register which loaded the configuration memory. The signal on a clock terminal CLK controls shifting out of that data onto line DATA. The εignal on a read-in-progresε terminal RIP preventε the chip from εending another εignal from trigger terminal TRIG while data are εtill being εhifted out. With thiε circuit, depending on the original configuration pathε to corner tile 116, the configuration data for the entire chip iε εhifted out of the chip onto almoεt any one of the external pinε while the chip iε operating. In light of the above description, many other embodimentε of the preεent invention will be apparent to thoεe εkilled in the art. For example, although the above deεcription relates to an embodiment in which core tiles are rectangular or square, another embodiment of the present invention includes tiles having six sides. As mentioned above, core tiles need not be identical. A set of tile designs may be provided which have different logic content from each other. If all tile deεignε follow common boundary conεtraintε, chipε can be formed by combining the tile designs in a variety of patterns. To be succeεεful, each tile design must have a good distribution of signals within the tile. The routing matrix of the tile must efficiently distribute the incoming signals to th logic block input terminalε and take the logic block output εignals to the tile edges. Indeed a chip may be composed in which some tiles include RAM memory and no logic, or a combination of tiles having logic, tiles having memory only, and tiles having routing with no logic or memory. Further, a tile may be designed which includes an input/output pad physically within its structure, and tile designs including a pad may be combined with other tile designε to achieve diεtributed acceεε to logic. Such other embodimentε are intended to fall within the εcope of the preεent invention. The preεent invention iε εet forth in the claimε.

Claims

CL S. 1. An FPGA tile architecture having a plurality of core tileε, each core tile compriεing: a configurable logic block matrix; a programmable routing matrix; . connection meanε for connecting εaid configurable logic block to other configurable logic block matriceε in adajacent core tileε; inter-matrix lines for connecting said configurable logic block to said programmable routing matrix; and routing lines for connecting said programmable routing matrix to programmable routing matrices in adjacent core tiles.
2. The FPGA tile architecture of Claim 1 wherein εaid core tiles are identical.
3. The FPGA tile architecture of Claim 1 wherein one core tile is different from another core tile.
4. The FPGA tile architecture of Claim 1 in which said adjacent core tiles are positioned north, south, east, and weεt of εaid core tile.
5. The FPGA tile architecture of Claim 1 further including a plurality of long lineε extending horizontally through εaid core tile, wherein at least one of said plurality of long lineε is coupled to at least one of said inter-matrix lines.
6. The FPGA tile architecture of Claim 5 further including a plurality of long lines extending vertically through said core tile, wherein at least one of εaid plurality of long lineε iε coupled to at least one of said inter-matrix lineε.
7. The FPGA tile architecture of Claim 6 further including a global horizontal line coupled to said configurable logic block matrix and said programmable routing matrix.
8. The FPGA tile architecture of Claim 7 further including a global vertical line coupled to said configurable logic block matrix and said programmable routing matrix.
9. The FPGA tile architecture of Claim 8 further including a multiple length line, wherein εaid multiple length line couples programmable routing matrices that are not in adjacent core tiles.
10. The FPGA tile architecture of Claim 9 wherein said multiple length line is a double length line.
11. The FPGA tile architecture of Claim 1 wherein said connection means includeε a carry-out line and a carry-in line, wherein εaid carry-out line iε coupled to a carry-in line in an adjacent core tile.
12. The FPGA tile architecture of Claim 11 wherein said carry-in line is coupled to a carry-out line in an adjacent core tile.
13. The FPGA tile architecture of Claim 9 wherein εaid connection meanε includeε: a plurality of input lineε to εaid configurable logic block matrix; a plurality of output lineε from said configurable logic block matrix, wherein at least one of εaid plurality of input lineε iε coupled to one of εaid plurality of output lineε in an adjacent core tile, and at least one of said plurality of output lineε iε coupled to one of εaid plurality of input lines in an adjacent core tile.
14. The FPGA tile architecture of Claim 13 wherein εaid configurable logic block matrix compriεeε: a plurality of logic block input lineε programmably connected to εaid plurality of input lineε through an input interconnect εtructure; and a plurality of logic block output lines programmably connected to said plurality of output lines through an output interconnect structure.
15. The FPGA tile architecture of Claim 14 wherein said configurable logic block matrix further includes a configurable logic block coupled between said plurality of logic block input lines and said plurality of logic block output lines.
16. The FPGA tile architecture of Claim 15 wherein said output interconnect structure is more fully pipulated than said input interconnect structure.
17. The FPGA tile architecture of Claim 16 wherein said input interconnect structure is sparsely pipulated.
18. The FPGA tile architecture of Claim 17 wherein εaid output interconnect εtructure iε fully pipulated.
19. The FPGA tile architecture of Claim 15 wherein εaid configurable logic block matrix further includeε a feedback interconnect structure for programmably connecting said output lines to said logic block input lines.
20. The FPGA tile architecture of Claim 19 wherein said configurable logic block matrix further includes a general interconnect εtructure for programmably connecting εaid inter- matrix lineε to εaid logic block input lineε.
21. The FPGA tile architecture of Claim 20 wherein at least one of said inter-matrix lines includes a buffer.
22. The FPGA tile architecture of Claim 20 wherein said configurable logic block includes a plurality of function generatorε, each function generator coupled to a εubset of said logic block input lines.
23. The FPGA tile architecture of Claim 22 wherein said configurable logic block further includes a plurality of multiplexers, wherein at least one of said plurality of function generators provides a signal to at leaεt one of εaid plurality of multiplexerε.
24. The FPGA tile architecture of Claim 23 wherein εaid configurable logic block further includes a plurality of register meanε, and wherein at leaεt one of εaid plurality of multiplexerε provideε a εignal to at leaεt one of said plurality of registerε.
25. The FPGA tile architecture of Claim 24 wherein at leaεt one function generator iε coupled to one logic block output line.
26. The FPGA tile architecture of Claim 25 wherein at least one multiplexer is coupled to one logic block output line.
27. The FPGA tile architecture of Claim 26 wherein at least one regiεter is coupled to one logic block output line.
28. The FPGA tile architecture of Claim 27 wherein at least one multiplexer is coupled to εaid carry-out line.
29. The FPGA tile architecture of Claim 28 wherein at leaεt one multiplexer iε coupled to εaid carry-in line.
30. The FPGA tile architecture of Claim 22 wherein said configurable logic block further includeε groups of multiplexers, each group of multiplexerε coupled to one of said plurality of function generatorε.
31. The FPGA tile architecture of Claim 30 wherein εaid configurable logic block further includeε a plurality of regiεter meanε, and wherein each group of multiplexerε provideε a signal to one of said plurality of register means.
32. The FPGA tile architecture of Claim 31 wherein each function generator is coupled to one logic block output line.
33. The FPGA tile architecture of Claim 32 wherein at least one multiplexer of each group of multiplexers is coupled to one logic block output line.
34. The FPGA tile architecture of Claim 33 wherein each register iε coupled to one logic block output line.
35. The FPGA tile architecture of Claim 34 wherein at leaεt one multiplexer iε coupled to a carry-out line of said configurable logic block.
36. The FPGA tile architecture of Claim 35 wherein at least one multiplexer is coupled to a carry-in line of said configurable logic block.
37. The FPGA tile architecture of Claim 20 wherein εaid output interconnect εtructure includeε a firεt plurality of tranεiεtorε, each tranεiεtor provided on one logic block output line.
38. The FPGA tile architecture of Claim 35 wherein εaid output interconnect εtructure includeε a firεt plurality of memory deviceε, each memory device controlling the state of a subεet of said plurality of transistorε.
39. The FPGA tile architecture of Claim 38 wherein εaid output interconnect structure includeε a εecond plurality of transistorε, each of εaid εecond plurality of transistorε coupled between a subset of said plurality of logic block output lineε and one output line.
40. The FPGA tile architecture of Claim 39 wherein εaid output interconnect structure further includes a εecond plurality of memory deviceε that control the state of said second plurality of transiεtors.
41. The FPGA tile architecture of Claim 20 wherein εaid input interconnect εtructure and εaid general interconnect εtructure include a firεt plurality of tranεiεtorε, εaid firεt plurality of transistors provided on a subset of said plurality of inter-matrix lines and on a subset of said plurality of input lines.
42. The FPGA tile architecture of Claim 41 wherein said input interconnect structure and εaid general interconnect εtructure include at leaεt one memory device that controlε the state of said first plurality of transiεtorε.
43. The FPGA tile architecture of Claim 41 wherein εaid input interconnect εtructure and said general interconnect structure include a second plurality of transiεtors, each of said second plurality of transiεtors coupled between either a further subset of said plurality of inter-matrix lines or a further subset of said plurality of input lines and one logic block input line.
44. The FPGA tile architecture of Claim 43 wherein said input interconnect structure and said general interconnect structure further includes a εecond plurality of memory deviceε that control the εtate of εaid εecond plurality of tranεistors.
45. The FPGA tile architecture of Claim 20 wherein said programmable routing matrix includes a programmable interconnect structure for coupling εaid routing lineε to said inter-matrix lines.
46. The FPGA tile architecture of Claim 45 wherein said programmable interconnect structure further couples said plurality of long lines extending horizontally through said core tile to said inter-matrix lines.
47. The FPGA tile architecture of Claim 46 wherein εaid programmable interconnect εtructure further coupleε said plurality of long lines extending vertically through said core tile to said inter-matrix lineε.
48. The FPGA tile architecture of Claim 47 wherein εaid programmable interconnect εtructure further coupleε εaid multiple length line to εaid inter-matrix lines.
49. The FPGA tile architecture of Claim 48 wherein said programmable interconnect structure further couples εaid global horizontal line to an inter-matrix line.
50. The FPGA tile architecture of Claim 49 wherein εaid programmable interconnect εtructure further coupleε said global vertical line to an inter-matrix line.
51. The FPGA tile architecture of Claim 6 wherein at least one of said long lines, either extending horizontally or vertically across said core tile, includes a long line splitter, wherein said long line splitter includeε meanε for preventing conduction of said at least one long line.
52. The FPGA tile architecture of Claim 51 wherein said means for preventing conduction includes a tranεistor.
53. The FPGA tile architecture of Claim 52 wherein said transistor is an n-type transistor.
54. The FPGA tile architecture of Claim 20 further including a plurality of edge tiles, wherein each edge tile is coupled to at least one other edge tile and one core tile.
55. The FPGA tile architecture of Claim 54 wherein each edge tile is further coupled to an input/output (I/O) device.
56. The FPGA tile architecture of Claim 55 wherein εaid I/O device iε coupled to a pad which provideε an external connection to εaid chip.
57. The FPGA tile architecture of Claim 56 wherein an electrostatic diεcharge device connects to said pad.
58. The FPGA tile architecture of Claim 56 wherein εaid edge tile includeε meanε for coupling εaid I/O device to εaid routing lineε, said input lines, said output lines, and said multiple length line.
59. The FPGA tile architecture of Claim 58 wherein said means for coupling couples either said global horizontal line or said global vertical line to said I/O device.
60. The FPGA tile architecture of Claim 56 wherein said means for coupling includes a first interconnect εtructure.
61. The FPGA tile architecture of Claim 54 further including a plurality of corner tileε, wherein each corner tile iε connected to two adjacent edge tiles.
62. The FPGA tile architecture of Claim 61 wherein said corner tile connects said plurality of long lines extending horizontally across said core tile to εaid plurality of long lines extending vertically across said core tile.
63. The FPGA tile architecture of Claim 61 wherein said corner tiles further connect a first subset of said plurality of routing lines to a second subset of said plurality of routing lines.
64. The FPGA tile architecture of Claim 61 wherein said corner tile includes a corner tile interconnect structure for programmably connecting said plurality of long lines extending horizontally acrosε said core tile and said first subεet of said plurality of routing lines to a selected circuit.
65. The FPGA tile architecture of Claim 64 wherein said selected circuit is a boundary scan block.
66. The FPGA tile architecture of Claim 64 wherein said selected circuit iε an oεcillator/counter circuit.
67. The FPGA tile architecture of Claim 64 wherein said selected circuit is a start-up block.
68. The FPGA tile architecture of Claim 64 wherein εaid selected circuit is a read-back unit.
69. The FPGA tile architecture of Claim 61 wherein said edge tiles further includes means for programmably connecting an external pin to at least one of said long lineε extending horizontally across εaid core tile.
70. An FPGA tile architecture compriεing: a plurality of paired structures, each paired structure including a configurable logic block matrix and a programmable routing matrix; a plurality of lines for connecting said configurable logic block matrix to said programmable routing matrix; and meanε for connecting εaid programmable routing matrix to other programmable routing matriceε in other paired εtructureε.
71. The FPGA tile architecture of Claim 70 further comprising means for connecting said configurable logic block matrix in one paired εtructure to a plurality of configurable logic block matriceε in other paired structures without using said programmable routing matrix.
72. The FPGA tile architecture of Claim 70 wherein said meanε for connecting compriεeε: a plurality of εingle length lineε which connect a first programmable routing matrix to adjacent programmable routing matrices; a plurality of double length lines which connect said first programmable routing matrix to non-adjacent programmable routing matrices.
73. The FPGA tile architecture of Claim 70 further comprising: a plurality of long lines, each long line being programmably connectable to a plurality of adjacent programmable routing matrices.
74. An interconnect structure comprising: a plurality of signal lines; a first plurality of transistorε, each tranεistor provided on one signal line; at least one memory device for controlling the state of said plurality of transistors; a second plurality of transiεtorε, each tranεistor coupled to a subset of said first plurality of transiεtorε; and meanε for controlling the εtates of said second plurality of transistorε, wherein said means for controlling determines which of said second plurality of transistors provides a εignal on an output line.
75. The interconnect εtructure of Claim 74 further compriεing a third plurality of tranεiεtorε coupled in εerieε to one εubset of said first plurality transiεtorε.
76. The interconnect εtructure of Claim 75 wherein εaid at leaεt one memory device includeε a plurality of memory deviceε, and wherein each memory device controlε the εtate of one of εaid third plurality of tranεiεtorε.
77. The interconnect εtructure of Claim 76 wherein εaid plurality of memory deviceε provide a εignal to said first plurality of tranεistors and the complement of εaid signal to said third plurality of transistorε.
78. An interconnect structure comprising: a plurality of lines; a firεt plurality of tranεiεtorε, each transistor provided on one signal line; a firεt memory device for controlling the εtate of εaid firεt plurality of tranεistors, wherein said means for controlling provideε a εignal to a firεt group of εaid firεt plurality of transiεtorε and provides the complement of said signal to a second group of said first plurality of transistors; a second plurality of transistorε, each transiεtor coupled to a εubεet of εaid first plurality of transiεtorε; a εecond memory device for controlling the state of said second plurality of transistorε, wherein εaid means for controlling provides a signal to a first group of said second plurality of transiεtorε and provideε the complement of εaid signal to a second group of said second plurality of transistors; a third plurality transistorε, each tranεiεtor coupled to a εubεet of εaid εecond plurality of transistorε; a third memory device for controlling the εtate of εaid third plurality of tranεistors, wherein said means for controlling provides a εignal to a firεt group of εaid third plurality of tranεiεtors and provides the complement of said signal to a second group of εaid third plurality of tranεiεtorε, wherein one of εaid third plurality of transiεtorε provides a signal on an output line.
79. A tile based FPGA architecture including: a plurality of core tiles formed in rows and columns, wherein each core tile includes a configurable logic block matrix and an asεociated programmable routing matrix; a plurality of edge tileε formed on the north, east, south, and west perimeterε of εaid plurality of core tileε; and a plurality of corner tileε formed adjacent εaid plurality of edge tileε.
80. The tile based FPGA architecture of Claim 79 further including a plurality of horizontal long lines extending through each row of said core tiles and said edge tileε formed on the north and εouth perimeterε.
81. The tile based FPGA architecture of Claim 80 further including a plurality of vertical long lines extending through each column of said core tiles and said edge tiles formed on the east and west perimeters.
82. The tile based FPGA architecture of Claim 81 wherein the horizontal long lineε extending through εaid edge tileε formed on the north and εouth perimeterε are coupled to εaid vertical long lineε extending through said edge tiles formed on the east and weεt perimeters by said plurality of corner tileε.
83. The tile baεed FPGA architecture of Claim 82 wherein each core, edge, or corner tile includeε at leaεt two lineε; wherein one corner tile includes a north line coupled to an east line, another corner tile includes a εouth line coupled to an eaεt line, another corner tile includeε a weεt line coupled to a εouth line, and another corner tile includes a north line coupled to a west line; wherein one edge tile on said south perimeter includes a north line coupled to an east line and a west line, another edge tile on said west perimeter includes an east line coupled to a north line and a south line, another edge tile on said north perimeter includeε a south line coupled to an eaεt line and a weεt line, and another edge tile on εaid eaεt perimeter includeε an eaεt line coupled to a north line and a εouth line; wherein a core tile includeε a north line coupled to an eaεt line, a εouth line, and a weεt line, wherein the west line of a corner tile is coupled to the east line of an edge tile formed on said north perimeter or εaid south perimeter, wherein the east line of a corner tile is coupled to the west line of an edge tile formed on said north perimeter or said south perimeter, wherein the south line of a corner tile is coupled to the north line of an edge tile formed on said east perimeter or said west perimeter, wherein the north line of a corner tile is coupled to the εouth line of an edge tile formed on said east perimeter or said west perimeter; wherein the south line of an edge tile formed on said north perimeter is coupled to the north line of a core tile, wherein the west line of an edge tile formed on said east perimieter is coupled to the east line of a core tile, wherein the north line of an edge tile formed on said south perimeter is coupled to the south line of a core tile, and wherein the east line of an edge tile formed on said west perimeter iε coupled to the weεt line of a core tile.
84. The tile based FPGA architecture of Claim 83 wherein each edge tile includes a general interconnect structure, wherein said plurality of horizontal long lines, said plurality of vertical long lines, and said at least two lines are programmably connected to said general interconnect structure.
85. The tile based FPGA architecture of Claim 84 further including at least one pad, wherein said at least one pad iε programmably connected to the general interconnect εtructure of an edge tile.
86. The tile baεed FPGA architecture of Claim 85 further including a plurality of padε, wherein each pad iε programmably connected to the general interconnect structure of an edge tile.
87. The tile based FPGA architecture of Claim 85 wherein said at least one pad is programmably connected to the general interconnect structure via a pad interconnect εtructure.
88. The tile baεed FPGA architecture of Claim 87 wherein both εaid general interconnect structure and said pad interconnect structure include programmable interconnection points (PIPs) .
89. The tile based FPGA architecture of Claim 88 wherein said pad interconnect structure provides more PIPs than εaid general interconnect structure.
90. The tile based FPGA architecture of Claim 89 wherein said pad interconnect εtructure iε εubεtantially fully pipulated.
91. The tile baεed FPGA architecture of Claim 90 wherein said general interconnect structure is sparsely pipulated.
92. A method of forming a tile based FPGA architecture, said method comprising the steps of: forming a configurable logic block matrix in a core tile; forming a programmable routing matrix in said core tile; coupling said configurable logic block matrix and said programmable routing matrix; coupling εaid configurable logic block matrix to a configurable logic block matrix in an adjacent core tile; coupling εaid programmable routing matrix to a programmable routing matrix in another core tile.
93. The method of forming a tile baεed FPGA architecture of Claim 92 wherein εaid another core tile iε adjacent εaid programmable routing matrix in εaid core tile.
94. The method of forming a tile baεed FPGA architecture of Claim 92 wherein said another core tile is not adjacent said programmable routing matrix in said core tile.
PCT/US1995/001554 1994-02-15 1995-02-07 Tile based architecture for fpga WO1995022205A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP95909504A EP0698312A1 (en) 1994-02-15 1995-02-07 Tile based architecture for fpga
JP52129595A JP3547446B2 (en) 1994-02-15 1995-02-07 Tile type structure of field programmable gate array

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US19691494A 1994-02-15 1994-02-15
US22213894A 1994-04-01 1994-04-01
US08/196,914 1994-04-01
US08/222,138 1994-04-01

Publications (1)

Publication Number Publication Date
WO1995022205A1 true WO1995022205A1 (en) 1995-08-17

Family

ID=26892384

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1995/001554 WO1995022205A1 (en) 1994-02-15 1995-02-07 Tile based architecture for fpga

Country Status (3)

Country Link
EP (1) EP0698312A1 (en)
JP (1) JP3547446B2 (en)
WO (1) WO1995022205A1 (en)

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2300949A (en) * 1995-05-17 1996-11-20 Altera Corp Programmable logic array with interconnect lines of various lengths
GB2300950A (en) * 1995-05-17 1996-11-20 Altera Corp Programmable logic array
GB2313942A (en) * 1996-06-04 1997-12-10 Hewlett Packard Co Programmable logic with hierarchical interconnections and hyperlinks
EP0759662A3 (en) * 1995-08-18 1998-01-28 Xilinx, Inc. Time multiplexed programmable logic device
WO1998033277A1 (en) * 1997-01-29 1998-07-30 Hewlett-Packard Company Field programmable processor arrays
US5835998A (en) * 1996-04-04 1998-11-10 Altera Corporation Logic cell for programmable logic devices
US5880597A (en) * 1996-09-18 1999-03-09 Altera Corporation Interleaved interconnect for programmable logic array devices
US5900743A (en) * 1995-05-17 1999-05-04 Altera Corporation Programmable logic array devices with interconnect lines of various lengths
US5909126A (en) * 1995-05-17 1999-06-01 Altera Corporation Programmable logic array integrated circuit devices with interleaved logic array blocks
US5959881A (en) * 1995-08-18 1999-09-28 Xilinx, Inc. Programmable logic device including configuration data or user data memory slices
US5963049A (en) * 1995-05-17 1999-10-05 Altera Corporation Programmable logic array integrated circuit architectures
US5977793A (en) * 1996-10-10 1999-11-02 Altera Corporation Programmable logic device with hierarchical interconnection resources
US5982195A (en) * 1997-02-20 1999-11-09 Altera Corporation Programmable logic device architectures
US5999016A (en) * 1996-10-10 1999-12-07 Altera Corporation Architectures for programmable logic devices
US5999015A (en) * 1997-02-20 1999-12-07 Altera Corporation Logic region resources for programmable logic devices
GB2343281A (en) * 1998-10-30 2000-05-03 Nec Corp Programmable logic base cell and array
US6084427A (en) * 1998-05-19 2000-07-04 Altera Corporation Programmable logic devices with enhanced multiplexing capabilities
US6107825A (en) * 1997-10-16 2000-08-22 Altera Corporation Input/output circuitry for programmable logic devices
US6107824A (en) * 1997-10-16 2000-08-22 Altera Corporation Circuitry and methods for internal interconnection of programmable logic devices
US6121790A (en) * 1997-10-16 2000-09-19 Altera Corporation Programmable logic device with enhanced multiplexing capabilities in interconnect resources
US6127844A (en) * 1997-02-20 2000-10-03 Altera Corporation PCI-compatible programmable logic devices
US6184710B1 (en) 1997-03-20 2001-02-06 Altera Corporation Programmable logic array devices with enhanced interconnectivity between adjacent logic regions
US6262908B1 (en) 1997-01-29 2001-07-17 Elixent Limited Field programmable processor devices
US6300794B1 (en) 1996-10-10 2001-10-09 Altera Corporation Programmable logic device with hierarchical interconnection resources
US6353841B1 (en) 1997-12-17 2002-03-05 Elixent, Ltd. Reconfigurable processor devices
US6407576B1 (en) 1999-03-04 2002-06-18 Altera Corporation Interconnection and input/output resources for programmable logic integrated circuit devices
US6480028B2 (en) 1998-11-18 2002-11-12 Altera Corporation Programmable logic device architectures with super-regions having logic regions and memory region
US6507216B1 (en) 1998-11-18 2003-01-14 Altera Corporation Efficient arrangement of interconnection resources on programmable logic devices
US6523107B1 (en) 1997-12-17 2003-02-18 Elixent Limited Method and apparatus for providing instruction streams to a processing device
US6567834B1 (en) 1997-12-17 2003-05-20 Elixent Limited Implementation of multipliers in programmable arrays
US7148722B1 (en) 1997-02-20 2006-12-12 Altera Corporation PCI-compatible programmable logic devices
EP1472787B1 (en) * 2002-01-10 2009-09-02 M 2000 Parc Burospace A crossbar device with reduced parasitic capacitive loading
US7768314B2 (en) 2004-05-12 2010-08-03 National University Corporation Okayama University Integrated circuit with multidimensional switch topology
WO2015116736A1 (en) * 2014-01-28 2015-08-06 Texas Instruments Incorporated Dft approach to enable faster scan chain diagnosis

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7394287B1 (en) * 2007-05-21 2008-07-01 Altera Corporation Programmable logic device having complex logic blocks with improved logic cell functionality
FR2933826B1 (en) * 2008-07-09 2011-11-18 Univ Paris Curie PROGRAMMABLE LOGIC NETWORK, INTERCONNECT SWITCH AND LOGIC UNIT FOR SUCH A NETWORK
US9735783B2 (en) * 2013-02-08 2017-08-15 The Trustees Of Princeton University Fine-grain dynamically reconfigurable FPGA architecture

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0461798A2 (en) * 1990-06-14 1991-12-18 Advanced Micro Devices, Inc. Configurable interconnect structure
US5241224A (en) * 1991-04-25 1993-08-31 Altera Corporation High-density erasable programmable logic device architecture using multiplexer interconnections
US5260610A (en) * 1991-09-03 1993-11-09 Altera Corporation Programmable logic element interconnections for programmable logic array integrated circuits
US5260611A (en) * 1991-09-03 1993-11-09 Altera Corporation Programmable logic array having local and long distance conductors
US5280202A (en) * 1991-03-06 1994-01-18 Quicklogic Corporation Programmable application specific integrated circuit and logic cell therefor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0461798A2 (en) * 1990-06-14 1991-12-18 Advanced Micro Devices, Inc. Configurable interconnect structure
US5280202A (en) * 1991-03-06 1994-01-18 Quicklogic Corporation Programmable application specific integrated circuit and logic cell therefor
US5241224A (en) * 1991-04-25 1993-08-31 Altera Corporation High-density erasable programmable logic device architecture using multiplexer interconnections
US5260610A (en) * 1991-09-03 1993-11-09 Altera Corporation Programmable logic element interconnections for programmable logic array integrated circuits
US5260611A (en) * 1991-09-03 1993-11-09 Altera Corporation Programmable logic array having local and long distance conductors

Cited By (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909126A (en) * 1995-05-17 1999-06-01 Altera Corporation Programmable logic array integrated circuit devices with interleaved logic array blocks
US5689195A (en) * 1995-05-17 1997-11-18 Altera Corporation Programmable logic array integrated circuit devices
US6392438B1 (en) 1995-05-17 2002-05-21 Altera Corporation Programmable logic array integrated circuit devices
GB2300949A (en) * 1995-05-17 1996-11-20 Altera Corp Programmable logic array with interconnect lines of various lengths
US6278291B1 (en) 1995-05-17 2001-08-21 Altera Corporation Programmable logic array devices with interconnect lines of various lengths
US6815981B2 (en) 1995-05-17 2004-11-09 Altera Corporation Programmable logic array integrated circuit devices
US6259272B1 (en) 1995-05-17 2001-07-10 Altera Corporation Programmable logic array integrated circuit architectures
US6204688B1 (en) 1995-05-17 2001-03-20 Altera Corporation Programmable logic array integrated circuit devices with interleaved logic array blocks
GB2300949B (en) * 1995-05-17 1999-09-29 Altera Corp Programmable logic array devices with interconnect lines of various lengths
US5900743A (en) * 1995-05-17 1999-05-04 Altera Corporation Programmable logic array devices with interconnect lines of various lengths
US6366121B2 (en) 1995-05-17 2002-04-02 Altera Corporation Programmable logic array integrated circuit architectures
GB2300950A (en) * 1995-05-17 1996-11-20 Altera Corp Programmable logic array
US6154055A (en) * 1995-05-17 2000-11-28 Altera Corporation Programmable logic array integrated circuit devices
US5963049A (en) * 1995-05-17 1999-10-05 Altera Corporation Programmable logic array integrated circuit architectures
GB2300950B (en) * 1995-05-17 1999-10-13 Altera Corp Programmable logic array integrated circuit devices
US6127846A (en) * 1995-05-17 2000-10-03 Altera Corporation Programmable logic array devices with interconnect lines of various lengths
US5986470A (en) * 1995-05-17 1999-11-16 Altera Corporation Programmable logic array integrated circuit devices
US6263430B1 (en) 1995-08-18 2001-07-17 Xilinx, Inc. Method of time multiplexing a programmable logic device
US5978260A (en) * 1995-08-18 1999-11-02 Xilinx, Inc. Method of time multiplexing a programmable logic device
EP0759662A3 (en) * 1995-08-18 1998-01-28 Xilinx, Inc. Time multiplexed programmable logic device
US6480954B2 (en) 1995-08-18 2002-11-12 Xilinx Inc. Method of time multiplexing a programmable logic device
US5959881A (en) * 1995-08-18 1999-09-28 Xilinx, Inc. Programmable logic device including configuration data or user data memory slices
US5835998A (en) * 1996-04-04 1998-11-10 Altera Corporation Logic cell for programmable logic devices
GB2313942A (en) * 1996-06-04 1997-12-10 Hewlett Packard Co Programmable logic with hierarchical interconnections and hyperlinks
US5880597A (en) * 1996-09-18 1999-03-09 Altera Corporation Interleaved interconnect for programmable logic array devices
US6417694B1 (en) 1996-10-10 2002-07-09 Altera Corporation Programmable logic device with hierarchical interconnection resources
US6300794B1 (en) 1996-10-10 2001-10-09 Altera Corporation Programmable logic device with hierarchical interconnection resources
US5999016A (en) * 1996-10-10 1999-12-07 Altera Corporation Architectures for programmable logic devices
US6577160B2 (en) 1996-10-10 2003-06-10 Altera Corporation Programmable logic device with hierarchical interconnection resources
US5977793A (en) * 1996-10-10 1999-11-02 Altera Corporation Programmable logic device with hierarchical interconnection resources
US6798242B2 (en) 1996-10-10 2004-09-28 Altera Corporation Programmable logic device with hierarchical interconnection resources
US6252792B1 (en) 1997-01-29 2001-06-26 Elixent Limited Field programmable processor arrays
WO1998033277A1 (en) * 1997-01-29 1998-07-30 Hewlett-Packard Company Field programmable processor arrays
US6262908B1 (en) 1997-01-29 2001-07-17 Elixent Limited Field programmable processor devices
EP0858168A1 (en) * 1997-01-29 1998-08-12 Hewlett-Packard Company Field programmable processor array
US5982195A (en) * 1997-02-20 1999-11-09 Altera Corporation Programmable logic device architectures
US6646467B1 (en) 1997-02-20 2003-11-11 Altera Corporation PCI-compatible programmable logic devices
US7148722B1 (en) 1997-02-20 2006-12-12 Altera Corporation PCI-compatible programmable logic devices
US6127844A (en) * 1997-02-20 2000-10-03 Altera Corporation PCI-compatible programmable logic devices
US6271681B1 (en) 1997-02-20 2001-08-07 Altera Corporation PCI-compatible programmable logic devices
US5999015A (en) * 1997-02-20 1999-12-07 Altera Corporation Logic region resources for programmable logic devices
US6320411B1 (en) 1997-03-20 2001-11-20 Altera Corporation Programmable logic array devices with enhanced interconnectivity between adjacent logic regions
US6184710B1 (en) 1997-03-20 2001-02-06 Altera Corporation Programmable logic array devices with enhanced interconnectivity between adjacent logic regions
US6107824A (en) * 1997-10-16 2000-08-22 Altera Corporation Circuitry and methods for internal interconnection of programmable logic devices
US6107825A (en) * 1997-10-16 2000-08-22 Altera Corporation Input/output circuitry for programmable logic devices
US6384625B1 (en) 1997-10-16 2002-05-07 Altera Corporation Programmable logic devices with enhanced multiplexing capabilities
US6121790A (en) * 1997-10-16 2000-09-19 Altera Corporation Programmable logic device with enhanced multiplexing capabilities in interconnect resources
US6225823B1 (en) 1997-10-16 2001-05-01 Altera Corporation Input/output circuitry for programmable logic devices
US6278288B1 (en) 1997-10-16 2001-08-21 Altera Corporation Programmable logic device with enhanced multiplexing capabilities in interconnect resources
US6255846B1 (en) 1997-10-16 2001-07-03 Altera Corporation Programmable logic devices with enhanced multiplexing capabilities
US6335634B1 (en) 1997-10-16 2002-01-01 Srinivas T. Reddy Circuitry and methods for internal interconnection of programmable logic devices
US6353841B1 (en) 1997-12-17 2002-03-05 Elixent, Ltd. Reconfigurable processor devices
US6567834B1 (en) 1997-12-17 2003-05-20 Elixent Limited Implementation of multipliers in programmable arrays
US6523107B1 (en) 1997-12-17 2003-02-18 Elixent Limited Method and apparatus for providing instruction streams to a processing device
US6084427A (en) * 1998-05-19 2000-07-04 Altera Corporation Programmable logic devices with enhanced multiplexing capabilities
US6424171B1 (en) 1998-10-30 2002-07-23 Nec Corporation Base cell and two-dimensional array of base cells for programmable logic LSI
GB2343281A (en) * 1998-10-30 2000-05-03 Nec Corp Programmable logic base cell and array
GB2343281B (en) * 1998-10-30 2000-12-13 Nec Corp Base cell and two-dimensional array of base cells for programmable logic LSI
US6670825B1 (en) 1998-11-18 2003-12-30 Altera Corporation Efficient arrangement of interconnection resources on programmable logic devices
US6507216B1 (en) 1998-11-18 2003-01-14 Altera Corporation Efficient arrangement of interconnection resources on programmable logic devices
US6480028B2 (en) 1998-11-18 2002-11-12 Altera Corporation Programmable logic device architectures with super-regions having logic regions and memory region
US6879183B2 (en) 1998-11-18 2005-04-12 Altera Corporation Programmable logic device architectures with super-regions having logic regions and a memory region
US6407576B1 (en) 1999-03-04 2002-06-18 Altera Corporation Interconnection and input/output resources for programmable logic integrated circuit devices
US6894533B2 (en) 1999-03-04 2005-05-17 Altera Corporation Interconnection and input/output resources for programmable logic integrated circuit devices
US6989689B2 (en) 1999-03-04 2006-01-24 Altera Corporation Interconnection and input/output resources for programmable logic integrated circuit devices
US6614261B2 (en) 1999-03-04 2003-09-02 Altera Corp Interconnection and input/output resources for programable logic integrated circuit devices
EP1472787B1 (en) * 2002-01-10 2009-09-02 M 2000 Parc Burospace A crossbar device with reduced parasitic capacitive loading
US7768314B2 (en) 2004-05-12 2010-08-03 National University Corporation Okayama University Integrated circuit with multidimensional switch topology
WO2015116736A1 (en) * 2014-01-28 2015-08-06 Texas Instruments Incorporated Dft approach to enable faster scan chain diagnosis
US9239360B2 (en) 2014-01-28 2016-01-19 Texas Instruments Incorporated DFT approach to enable faster scan chain diagnosis

Also Published As

Publication number Publication date
JPH08509344A (en) 1996-10-01
JP3547446B2 (en) 2004-07-28
EP0698312A1 (en) 1996-02-28

Similar Documents

Publication Publication Date Title
EP0698312A1 (en) Tile based architecture for fpga
US5682107A (en) FPGA architecture with repeatable tiles including routing matrices and logic matrices
US6094065A (en) Integrated circuit with field programmable and application specific logic areas
US6026227A (en) FPGA logic cell internal structure including pair of look-up tables
US5818254A (en) Multi-tiered hierarchical high speed switch matrix structure for very high-density complex programmable logic devices
US7342416B2 (en) Tileable field-programmable gate array architecture
JP3684241B2 (en) Floor plan for a scalable multilevel interconnect architecture
US6204689B1 (en) Input/output interconnect circuit for FPGAs
US5504440A (en) High speed programmable logic architecture
US6204690B1 (en) FPGA architecture with offset interconnect lines
US5675262A (en) Fast carry-out scheme in a field programmable gate array
US5742179A (en) High speed programmable logic architecture
US6621298B2 (en) Variable grain architecture for FPGA integrated circuits
US6744278B1 (en) Tileable field-programmable gate array architecture
US5789939A (en) Method for providing a plurality of hierarchical signal paths in a very high-density programmable logic device
US5880598A (en) Tile-based modular routing resources for high density programmable logic device
US4931946A (en) Programmable tiles
WO1998045947A1 (en) Configurable logic element for fpga
US7573297B1 (en) Flexible macrocell interconnect
WO1998038740A1 (en) Fpga having logic element carry chains capable of generating wide xor functions

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

WWE Wipo information: entry into national phase

Ref document number: 1995909504

Country of ref document: EP

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWP Wipo information: published in national office

Ref document number: 1995909504

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 1995909504

Country of ref document: EP