WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Interconnect architecture for field programmable gate array using variable length conductors    
United States Patent5581199   
Link to this pagehttp://www.wikipatents.com/5581199.html
Inventor(s)Pierce; Kerry M. (Canby, OR); Erickson; Charles R. (Fremont, CA); Huang; Chih-Tsung (Burlingame, CA); Wieland; Douglas P. (Sunnyvale, CA)
AbstractAn FPGA architecture is provided which uses logic unit output lines of more than one length and provides extension lines to increase the reach of a logic unit output line. The architecture allows extremely fast connections between one logic unit and another. Also, all logic unit output lines drive about the same number of buffered programmable interconnection points (PIPs) so that the signal delay between one logic unit and the next can be predicted regardless of the functions and routing which have been selected by a user. The frequency of PIPs decreases as distance from the originating logic unit increases. This has the benefit of cooperating with software which tends to place interconnected logic in close proximity. The architecture is preferably implemented with a tile layout with one logic unit in each tile, and logic unit input and output lines extending through several tiles. Thus one tile boundary is like another and there is minimum hierarchy.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Inventor     Pierce; Kerry M. (Canby, OR); Erickson; Charles R. (Fremont, CA); Huang; Chih-Tsung (Burlingame, CA); Wieland; Douglas P. (Sunnyvale, CA)
Owner/Assignee     Xilinx, Inc. (San Jose, CA)
Patent assignment
All assignments
Publication Date     December 3, 1996
Application Number     08/368,692
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     January 4, 1995
US Classification     326/41 326/39
Int'l Classification     H03K 019/177
Examiner     Westin; Edward P.
Assistant Examiner     Driscoll; Benjamin D.
Attorney/Law Firm     Young; Edel M. MacPherson; Alan H. , Klivans; Norman R. ,
Address
Parent Case    
Priority Data    
USPTO Field of Search     326/39 326/41
Patent Tags     interconnect architecture field programmable gate array using variable length conductors
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5469003
Kean
326/39
Nov,1995

[0 after 0 votes]
5204556
Shankar
326/41
Apr,1993

[0 after 0 votes]
5144166
Camarota
326/41
Sep,1992

[0 after 0 votes]
5073729
Greene

Dec,1991

[0 after 0 votes]
4855619
Hsieh
326/44
Aug,1989

[0 after 0 votes]
4758745
Elgamal
326/16
Jul,1988

[0 after 0 votes]
4642487
Carter
326/41
Feb,1987

[0 after 0 votes]
4293783
Patil
326/40
Oct,1981

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. A field programmable logic device comprising:

a plurality of logic units, each logic unit connecting to:

a plurality of output lines extending from said logic unit comprising at least a first output line and a second output line, said first output line being shorter than said second output line; and

a plurality of input lines extending into said logic unit, each input line connected to said logic unit so as to provide an input signal to said logic unit; and

a plurality of programmable interconnection points (PIPs), each PIP being programmable to connect one of said output lines to one of said input lines; and

a multiplexer receiving input signals from a plurality of said output lines and placing a signal from a selected one of said output lines onto an extension line extending in the same direction as one of said output lines, said extension line serving as a further input line to one of said logic units.

2. A field programmable logic device as in claim 1 in which one of said PIPs connects an output line from a first logic unit to an input line of a second logic unit.

3. A field programmable logic device as in claim 1 in which one of said PIPs connects an output line from a first logic unit to an input line of said first logic unit.

4. A field programmable logic device as in claim 1 in which said logic unit, output lines, input lines and PIPs are laid out in repeatable tiles, each tile including output lines, input lines, PIPs, and all portions of said logic unit, such that when a plurality of tiles is placed adjacent to each other, said field programmable logic device is formed.

5. A field programmable logic device as in claim 1 in which said first and second output lines include one output line two tiles long and one output line four tiles long.

6. A field programmable logic device as in claim 1 in which said input lines are two tiles long.

7. A field programmable logic device as in claim 1 in which said output lines comprise at least two output lines extending in each of a plurality of compass directions, the two lines in one compass direction being of unequal lengths.

8. A field programmable logic device as in claim 1 in which said first and second output lines connect to the same number of PIPs.

9. A field programmable logic device as in claim 1 in which PIPs are placed on an output line such that the number of PIPs in one tile portion of an output line decrease as distance from said logic unit increases.

10. A field programmable logic device as in claim 1 in which said first and second output lines connect to a set of PIPs sized and of a number such that the capacitive loads of said first and second output lines are approximately the same.

11. A field programmable logic device as in claim 1 in which each of said logic units comprises:

a logic element receiving some of said input lines for performing logical operations on signals received on said input lines, and providing an output therefrom;

a mux array driving some of said output lines; and

at least one line which receives an output signal from said logic element and provides an input signal to said mux array, said mux array also receiving a signal from at least one other logic unit.

12. A field programmable logic device as in claim 1 in which some of said logic units comprise:

a logic element receiving some of said input lines for performing logical operations on signals received on said input lines, and providing an output. therefrom;

a mux array driving some of said output lines; and

at least one line which receives an output signal from said logic element and provides an input signal to said mux array, said mux array also receiving a signal from at least one other logic unit;

and in which other of said logic units comprise:

a random access memory receiving signals on some of said input lines and supplying signals to some of said output lines.

13. A field programmable logic device as in claim 1 in which said PIP comprises a buffer having an input terminal connected to said output line and having an output terminal connected to a switch which programmably connects a buffer output signal to said input line.

14. A field programmable logic device as in claim 1 in which said PIP comprises a switch which programmably connects said one of said output lines to said one of said input lines.

15. A field programmable logic device comprising a plurality of identical adjacent tiles, each tile comprising:

a logic element having logic element input lines for providing input signals to said logic element, and a logic element output line for providing an output signal from said logic element;

an interconnect structure comprising:

a plurality of output segments which connect in adjacent tiles to form output lines, a first output line having a length differing from that of a second output line;

a plurality of input segments which connect in adjacent tiles to form input lines, each input line being a logic element output line from said logic element in said tile or from said logic element in another tile;

a mux array comprising a plurality of multiplexers, each programmable to connect one of a set of said input lines to an output line; and

a plurality of PIPs, each PIP being programmable to connect one of said output lines to one of said logic element input lines.

16. A field programmable logic device as in claim 15 in which one of said output lines extending from a single mux array is of a different length from another of said output lines extending from said single mux array.

17. A field programmable logic device as in claim 16 in which some of said output segments connect to PIPs and some of said output segments do not connect to PIPs.

18. A field programmable logic device as in claim 15 in which some of said output lines connect to PIPs and some of said output lines do not connect to PIPs.

19. A field programmable logic device as in claim 15 in which said output lines each connect to a number of PIPs which causes all of said output lines to have substantially the same signal delay.

20. A field programmable logic device as in claim 15 in which the density of PIPs connected to said output lines decreases as distance from said mux array driving said output lines increases.

21. A field programmable logic device as in claim 15 in which at least one of said output lines can be coupled to an extension line which in turn carries an input signal from said one of said output lines to another mux array in another tile.

22. A field programmable logic device as in claim 21 in which said at least one of said output lines is coupled to said extension line through a single transistor.

23. A field programmable logic device as in claim 15 in which the density of PIPs connected to an output line decreases as distance from said mux array increases.

24. A field programmable logic device as in claim 15 in which at least one of said output lines can be coupled to an extension line which in turn carries a signal from said at least one of said output lines to another mux array in another tile.

25. An FPGA comprising:

a plurality of logic elements, each logic element receiving input signals from a plurality of input lines and providing at least one logic element output signal on a corresponding logic element output lead;

a plurality of mux arrays;

for each mux array:

a plurality of output lines including at least a first output line and a second output line, said first output line being of a length sufficiently different from length of said second output line as to extent past a different number of logic elements from said second output line;

for each output line in said mux array:

a plurality of programmable interconnection points (PIPs), which may be programmed to connect one of said logic element output leads to said output line; and

at least one programmable interconnection point (PIP) which may be programmed to connect said output line to one of said logic element input lines.

26. A programmable logic device comprising:

a plurality of configurable logic elements;

a plurality of multiplexer arrays; and

an interconnection network;

wherein:

one of said plurality of configurable logic elements, one of said plurality of multiplexer arrays, and a portion of said interconnection network form a tile,

said programmable logic device includes a plurality of said tiles, and

said interconnection network includes a plurality of lines of different, predetermined lengths, said plurality of lines including lines:

(a) providing a direct interconnection between one of said configurable logic elements and one of said multiplexer arrays;

(b) providing a direct interconnection between one of said multiplexer arrays and another multiplexer array;

(c) providing connection between one of said multiplexer arrays and a programmable interconnection point (PIP); and

(d) providing connection between one configurable logic element and another configurable logic element.

27. A field programmable logic device comprising a plurality of logic units, each logic unit connecting to:

a plurality of output lines extending from said logic unit comprising at least a first output line and a second output line, said first output line being shorter than said second output line;

a plurality of input lines extending into said logic unit, each input line connected to said logic unit so as to provide an input signal to said logic unit; and

a plurality of programmable interconnection points (PIPs), each PIP being programmable to connect one of said output lines to one of said input lines;

each logic unit comprising:

a logic element for performing logical operations on signals received on said input lines and providing a logic element output signal therefrom;

a mux array driving some of said output lines; and receiving as input signals said logic element output signal and a logic element output signal from at least one other logic element.

28. A field programmable logic device comprising a plurality of logic units, each logic unit connecting to:

a plurality of output lines extending from said logic unit comprising at least a first output line and a second output line, said first output line being shorter than said second output line;

a plurality of input lines extending into said logic unit, each input line connected to said logic unit so as to provide an input signal to said logic unit; and

a plurality of programmable interconnection points (PIPs), each PIP being programmable to connect one of said output lines to one of said input lines;

some of said logic units comprising:

a logic element for performing logical operations on signals received on said input lines and providing a logic element output signal therefrom;

a mux array driving some of said output lines; and receiving as input signals said logic element output signal and a logic element output signal from at least one other logic element;

and others of said logic units comprising:

a random access memory receiving input signals from some of said output lines and supplying output signals to some of said input lines.

29. A field programmable logic device comprising a plurality of logic units, each logic unit connected to:

a plurality of output lines extending from said logic unit comprising at least a first output line and a second output line, said first output line being shorter than said second output line;

a plurality of input lines extending into said logic unit, each input line connected to said logic unit so as to provide an input signal to said logic unit; and

a plurality of programmable interconnection points (PIPs), each PIP being programmable to connect one of said output lines to one of said input lines;

in which PIPs are placed on an output line such that the number of PIPs in one tile portion of an output line decreases as distance from said logic unit increases.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Technical Field

The invention relates to field programmable gate arrays. More particularly, the invention relates to an interconnect architecture for a field programmable gate array.

2. Description of the Prior Art

A conventional field programmable gate array ("FPGA") is a programmable logic device that consists of a matrix of configurable logic elements ("CLEs") embedded in a configurable interconnect mesh. The configuration control of the CLE functions and routing network define the function of the device. The device is referred to as a "field programmable" device because the array of CLEs contained in the device can be configured and interconnected by the user in the user's facility by means of special hardware and software.

FPGAs are well known in the art. For example, R. Freeman, Configurable Electrical Circuit Having Configurable Logic Elements and Configurable Interconnects, U.S. Pat. No. 4,870,302, issued 26 Sep. 1989 describes a configurable logic array that includes a plurality of CLEs variably interconnected in response to control signals to perform a selected logic function, and in which a memory is used to store the particular data used to configure the CLEs. W. Carter, Special Interconnect For Configurable Logic Array, U.S. Pat. No. 4,642,487, issued 10 Feb. 1987 describes a special interconnect circuit for interconnecting CLEs in an FPGA without using the general interconnect structure of the FPGA. W. Carter, Configurable Logic Element, U.S. Pat. No. 4,706,216, issued 10 Nov. 1987 describes a CLE that includes a configurable combinational logic element, a configurable storage circuit, and a configurable output select logic circuit.

A CLE may be electrically programmed by control bits to provide any one of a plurality of logic functions. A CLE may include the circuit elements necessary to provide an AND gate, flip flop, latch, inverter, NOR gate, exclusive OR gate, and certain combinations of these functions, or a CLE may include a look-up table that offers a user all functions of several input signals. The particular function performed by the CLE is determined by control signals that are applied to the CLE from a control logic circuit.

In a field programmable device, the CLE is configured to implement a selected one of its functions without any change in physical structure. In general, a specific set of control signals is transmitted to a specific CLE to control the configuration of that CLE or a set of values is loaded into a look-up table to provide the truth table of the desired function. Control signals are applied to every CLE in the device. The values of the control bits provided to a CLE depend upon the function the CLE is to perform. The configuration of each CLE is therefore determined by the user's intended function of the integrated circuit.

A conventional FPGA comprises a plurality of CLEs, each CLE having input leads and one or more output leads, a general interconnect structure, and a set of programmable interconnection points (PIPs) for connecting the general interconnect structure to each input lead and each output lead. Also, each lead in the general interconnect structure can be connected to one or more other interconnect leads by programming an associated PIP.

The various PIPs in an FPGA are typically programmed by loading memory cells which control the gates of pass transistors or by connecting selected antifuses in an antifuse FPGA. A specific FPGA configuration having a desired function is created by configuring each CLE and forming paths through the interconnect structure within the FPGA to connect the CLEs.

Each PIP in an FPGA is programmed by opening or closing one or more switches associated with the PIP, such that a specified signal path is defined. Such switches may be implemented by applying a control signal to the gate of a pass transistor. Alternatively, if the PIP is part of a multiplexer in which only one of several PIPs will be turned on at one time, several control signals may be decoded to determine which PIP is turned on.

One problem with the known approach to routing signals through an FPGA interconnect structure is caused by using many pass transistors to form a path. Each transistor has an impedance. As a result, several pass transistors connected in series can introduce a significant impedance into a path. Additionally, each interconnect lead and pass transistor introduces a capacitive element that combines with the impedance to produce a propagation delay over the associated path. Delay is especially pronounced if a long path is required because the path may be implemented through several shorter segments and several pass transistors. There is a need for an architecture which avoids the delay of longer paths and offers resource-efficient short paths.

In addition to avoiding long delays, it is desirable to offer predictable delay. The signal path chosen to interconnect one logic element to another logic element is governed by algorithms implemented in software routines. The user may exercise some control over the signal paths chosen by the software, but it is not practical for the user to control all signal paths in a design. The software may choose a large number of different interconnect segment and switch combinations to realize a particular signal path. Since the number of interconnect segments and pass transistors will vary from combination to combination, the delay through the signal path may also vary significantly, depending on the choice made by the software. This variation in delay is undesirable. It would be further advantageous to provide an FPGA interconnect structure that did not have significant delay differences depending upon the signal path realized by the software.

SUMMARY OF THE INVENTION

According to one aspect of the invention, a repeatable structure is provided which includes a logic unit capable of receiving input signals from a plurality of input lines and providing a plurality of output signals on a corresponding plurality of output lines, the output lines of one logic unit being of more than one length. The output lines of one logic unit extend past other logic units. Provided periodically along each output line is a plurality of interconnection points (PIPs). The PIPs allow the output lines to be connected to input lines of other logic units. This combination of output lines of differing lengths and PIPs allows a user to connect logic units either to nearby logic units or to logic units some distance away.

According to another aspect of the invention, the number of PIPs which may be driven by one output line is approximately the same as the number of PIPs which may be driven by each other output line. Most PIPs are buffered, that is, they comprise a buffer followed by a connector such as a transistor. Providing an approximately equal number of buffered PIPs on each output line produces the benefit that signals which propagate a short distance on an output line have approximately the same delay as signals which propagate a longer distance on a longer output line.

According to yet another aspect of the invention, the frequency of PIPs decreases as distance from the originating logic unit increases. This has the benefit of cooperating with software which tends to place interconnected logic in close proximity.

As another feature, the architecture can connect selected output lines to other output lines so that a signal path can be extended. This feature eliminates the necessity for undedicated line segments used in conventional FPGAs, although it also can work with an embodiment which includes undedicated line segments.

A tile is a schematic drawing of a portion of a circuit in which elements and lines are positioned such that an array of tiles placed side by side shows electrical continuity across the tile boundaries between lines in adjacent tiles. The architecture is preferably implemented using tiles, with one logic unit in each tile, and logic unit input and output lines extending through several tiles. One tile boundary is like another and in one embodiment there is minimum routing hierarchy. It is not necessary that all tiles be alike, although unlike tiles which are placed adjacent to each other must be compatible at their boundaries.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1a and 1b show tile architectures incorporating the invention.

FIG. 2 shows the meaning of symbols used in FIGS. 1a, 1b, 3-6 and 9-14.

FIG. 3 shows the structure of a multiplexer array which may be used in FIG. 1b.

FIGS. 4a and 4b illustrate one tile according to a preferred embodiment of the invention.

FIGS. 5a and 5b illustrate portions of the tile of FIGS. 4a and 4b.

FIG. 5c is an enlarged view of the mux array of FIG. 4b.

FIGS. 5d-5g show detail of structures in FIG. 4b.

FIG. 6a illustrates the equivalent circuit formed by the illustrated lines in FIGS. 5a and 5b when adjacent tiles are connected to form an FPGA circuit according to the invention.

FIGS. 6b and 6c illustrate most of the equivalent circuit formed by the structure of FIGS. 4a and 4b.

FIG. 7 is another illustration of the circuit formed by tiles of the architecture of FIGS. 4a and 4b.

FIG. 8a illustrates one embodiment of a CLE used in conjunction with the invention.

FIG. 8b illustrates another embodiment of a CLE which can be used with the invention when a carry chain is not provided.

FIGS. 9a and 9b illustrate a west tile usable with the embodiment of FIGS. 4a and 4b.

FIGS. 10a and 10b illustrate a north tile usable with the embodiment of FIGS. 4a and 4b.

FIG. 11 illustrates a west edge tile usable with the embodiment of FIGS. 4a and 4b.

FIG. 12 illustrates a north edge tile usable with the embodiment of FIGS. 4a and 4b.

FIG. 13 illustrates an east edge tile usable with the embodiment of FIGS. 4a and 4b.

FIG. 14 illustrates a south edge tile usable with the embodiment of FIGS. 4a and 4b.

FIG. 15 illustrates the general arrangement of an FPGA which combines tiles of the types shown in FIGS. 4a, 4b, 9a, 9b, 10a, 10b, and 11-14.

FIG. 16 illustrates one embodiment of an input/output block used in conjunction with the invention.

FIG. 17 shows a boundary scan structure used with the input/output block of FIG. 16.

DETAILED DESCRIPTION OF THE DRAWINGS

The present invention may be implemented by forming an array of identical tiles adjacent to one another. The lines in a single tile are shown such that when tiles are joined, a single CLE or logic unit and its associated input and output lines extends over several tiles. A single tile includes portions of many input and output lines associated with many different logic units. A single input or output line is made of segments, each of which is implemented in a different tile. Here the term "segment" will be used to refer to that portion of a line which is implemented in a tile, and the term "line" will refer to an entire electrically continuous conductor.

FIG. 1a shows a simple embodiment which incorporates features of the invention. In FIG. 1a, twelve identical tiles T11 through T14, T21 through T24, and T31 through T34 which are part of a larger FPGA are shown. Each tile includes a logic unit, which typically performs a combination of logic and routing functions. Thus, tiles T11 through T34 include corresponding logic units L11 through L34. Each logic unit receives input signals on five logic unit input lines I1 through I5 and drives five logic unit output lines O1 through O5. Logic unit output lines O1 through O3 are direct connections to adjacent CLEs and therefore serve as input lines I1 through I3 in adjacent tiles. For example output line O1 in tile T22 is also logic unit input line I1 in tile T11, output line O2 in tile T22 is input line I2 in tile T12, and output line O3 in tile T22 is input line I3 in tile T21. By contrast, output lines O4 and O5 are programmably connectable to logic unit input lines and are of different lengths from one another. Output line O4 extends one tile to the east and output line O5 extends three tiles to the east. Output line O4 from tile T21 extends into tile T22 where it stops. Output line O5 from tile T21 extends into tile T24 where it becomes input line I5 of logic unit L24 in tile T24.

Each tile includes an array of programmable interconnection points (PIPs), each of which programmably connects two intersecting lines where the PIP is located. In FIG. 1a, each PIP array includes four PIPs. For example, PIP array PA11 in tile T11 includes PIPs P111, P112, P113, and P114. Output line O4 of tile T21 is programmably connectable to input line I4 of tile T22 through PIP P221 and to input line I4 of tile T12 through PIP P224. Thus output line O4 accesses two PIPs. Output line O5 also accesses two PIPs. For example, output line O5 in tile T21 accesses PIP P222 in tile T22 (which connects to input line I4 in tile T22) and PIP P233 in tile T23 (which connects to input line I4 in tile T13).

Thus the embodiment of FIG. 1a illustrates the logic units, the output lines of more than one length, the input lines, and the array of PIPs which programmably connect output lines to input lines.

PIP Array

A PIP array allows a user to choose whether to connect one line to another line. Each PIP has a programmable element that may be programmed by a user to open or close a switch. Thus the PIP array allows specific output lines to be coupled to specific input lines by the appropriate programming of the switches. In FIG. 1a, each PIP is represented by a triangle having its apex pointing upward or north. The top row of FIG. 2 shows some of the possible circuits which may implement this north PIP.

As indicated in the top row of circuits in FIG. 2, either a north PIP N or a south PIP S is implemented by a buffering device which receives input from a horizontal line H and is followed by a programmable connecting device N2 programmed by the output signal from a memory cell M. The connecting device (for example a pass transistor, transmission gate, or antifuse) receives an input signal from the buffering device. If the memory cell has been loaded with the proper value, the connecting device provides the buffered signal to the vertical line V.

Using a buffering device in conjunction with a switch causes the PIP to be directional. Of course, once a signal is placed onto a conductive line, the voltage which represents that signal is the same on the full length of the conductive line, thus the line itself is not directional. Therefore a south PIP has the same meaning as a north PIP.

Circuit 31 illustrates an inverter I31 as the buffering device and an N-channel pass transistor N2 as the connecting device. Inverting buffer I31 has an input terminal connected to horizontal line H and generates an inverted and buffered version of the signal on line H. If memory cell M has been loaded with a logic 1, transistor N2 provides the output signal from inverting buffer I31 to vertical line V. Circuit 32 illustrates a noninverting buffer as the buffering device with an N-channel pass transistor as the connecting device, and circuit 33 illustrates an XOR gate as the buffering device, which in response to a second memory cell M2 either inverts or does not invert the input signal. The connecting device is again a pass transistor. Depending upon the structure of the logic unit, other logic gates such as a NAND gate or an AND gate can serve as buffering devices. A second memory cell M2 or an internally generated control signal enables the gate to respond to the input signal. If circuit 31 is used to provide an inverted buffered signal, the polarity of the signal must be inverted in its destination CLE if the number of buffered PIPs is odd. Since an inverter I31 such as shown in circuit 31 is fast, small and efficient, it may be preferred to use this inverted implementation of a buffered PIP. FIG. 2 is further discussed in connection with FIGS. 4a and 4b.

Multiplexer Embodiment, FIG. 1b

In one embodiment of the invention, each logic unit comprises a configurable logic element (CLE) and a multiplexer array or mux array. For example, in FIG. 1b logic units L11-L34 each comprise a respective one of CLEs C11 through C34 and mux arrays MA11 through MA34. The same reference numerals have the same meanings in both FIGS. 1a and 1b. Input lines, output lines, and PIP arrays are the same as in FIG. 1a, and are thus not described again. Within a logic unit, note that input lines I1 through I3 are applied to the corresponding mux array MA while output lines O1 through O3 are taken from the corresponding CLE. In addition, an output line O6 from the CLE connects to input line I6 in the mux array.

In the embodiment of FIGS. 1a and 1b, all tiles have the same architecture. In still other embodiments, adjacent tiles have different architectures. Tiles at the edges and corners of the FPGA chip typically have different architectures from those in the center of the array, as will be discussed below.

Multiplexer Array

FIG. 3 illustrates one mux array which works with the embodiment of FIG. 1b. Mux array MA21 includes two multiplexers MUX1 and MUX2, each of which receives five input signals from five input lines I1, I2, I3, I5, and I6 and provides a selected one of the five input signals as its output signal. Memory cells M1-M6 allow each of multiplexers MUX1 and MUX2 to be separately programmable to select one of the five input signals to place onto its respective output line. Multiplexer MUX1 provides an output signal on output line O4 and multiplexer MUX2 provides an output signal on output line O5. Output lines O4 and O5 couple the multiplexer output signals to PIPs located one or more tiles away, as shown in FIG. 1b.

Whereas the mux array of FIG. 3 is an encoded structure in which three control signals, for example M1, M2, and M3 cause the multiplexer, for example MUX2, to select one of five input signals to place onto its output line, another structure can be provided in which a separate memory cell controls each line. In such an embodiment, software which generates the values which are to be placed into each memory cell assures that only one of the five memory cells causes its input line to be connected to the output line.

Referring back to FIG. 1b, output line O5 is formed in four segments in four adjacent tiles. For example, output line O5 from mux array MA21 occupies segment O5-0 in tile T21, segment O5-1 in tile T22, segment O5-2 in tile T23, and segment O5-3 in tile 24, which is applied to mux array MA24 as input line I5.

As described with reference to FIG. 3, input line I5 provides input signals to both of multiplexers MUX1 and MUX2. Multiplexers MUX1 and MUX2 also both receive input signals on lines I1 through I3 and I6 from four adjacent CLEs. In tile T22 of FIG. 1b, for example, mux array MA22 receives input signals from CLEs C22, C23, C32, and C33. Thus, although mux array MA22 is illustrated as being associated with CLE C22 in logic unit L22, in fact mux array MA22 is just as closely associated with three other nearby CLEs.

A mux array may connect an output signal from any of four neighboring CLEs or from another mux array to an output line of a selected length. Providing a choice of output lines having different lengths (two in this case) offers a user the option of providing an output signal to the next adjacent tile or to tiles further away.

Output Lines

There are a number of important features associated with the output lines.

1. Different Lengths. First, different output lines originating from a given mux array have different lengths. For example, in FIG. 1b, output line O4 from tile T21 extends one tile east, whereas output line O5 extends three tiles east. Note that the offset feature illustrated in each of the tiles, by which a horizontal line is offset lower before reaching a tile boundary, allows a single continuous line to extend through several tiles and at the same time allows adjacent tiles to be identical. The offset illustrates the connectivity which results when tiles are joined but this offset may not be present in an actual layout of such a structure on silicon.

2. Output lines drive approximately equal loads. Second, the different output signals originating from different multiplexers in a mux array are each applied to approximately the same number of PIPs, or the PIPs are sized such that each output line drives approximately the same capacitive load. For example, in FIG. 1b, the signal on output line O4 from mux array MA21 is applied to two PIPs in tile T22, and output signal O5 is applied to one PIP in tile T22 and one PIP in tile T23. As is well known in the art, propagation delay is caused by capacitive load and resistance associated with the output lines. Most of the capacitive and resistive loading experienced by the output lines comes not from metal lines but from circuits which tap off the metal lines. Since all PIPs in FIG. 1b are buffered, as shown in FIG. 2, the capacitive loading experienced by a metal output line (for example O5) driving two PIPs (PIPs P222 and P233) includes the gate regions of transistors in the PIP buffers (for example gates of transistors P1 and N1 in inverting buffer I31 of FIG. 2). But the capacitive loading experienced by this output line does not include the source, drain, and channel regions of the transistors in the buffers (for example, source, drain, and channel of transistors P1 and N1 of FIG. 2) or the source, drain, and channel regions of transistors driven by the buffers (for example transistor N2 in FIG. 2 and any transistors on vertical line V), because these buffer gate regions (i.e. gates of P1 and N1 in FIG. 2) are isolated from the structures driven by the buffers. Capacitive loading experienced by an output line is independent of whether the pass transistor (for example N2 in FIG. 2) in the PIP is turned on. Thus, the capacitive loadings of output lines O4 and O5 of FIG. 1b are predictable and approximately the same even though (a) their lengths are different, and (b) the circuit designer does not know which PIPs a user will turn on. Thus, output signals from a given mux array arrive at a variety of PIPs at approximately the same time.

Each buffered PIP drives approximately the same load. Several PIPs can drive the same input line. However, no more than one PIP will be turned on at one time to connect its respective output line to the same input line. Thus, the capacitance of an input line includes the source/drain diffusion regions of the transistors such as N2 of FIG. 2 not turned on, the conductive path (source, drain, and channel) of the transistor N2 which is turned on, and the conductive path of the buffer transistor N1 or P1 which drives the load. Since the capacitance and resistance of the input line is approximately the same regardless of which PIP is driving the input line, the delay contributed by the input line is predictable. For example, the delay in propagating a signal from mux array MA21 to CLE C22 is approximately the same as the delay in propagating a signal from mux array MA21 to CLE C13. This near constant delay helps to make timing of user designs implemented in an FPGA using the present invention predictable.

3. PIPS Decrease with Distance. A third feature associated with the output lines is that the number of PIPs accessed by a mux array output line decreases as the distance from the mux array increases. For example, in FIG. 1b, considering output lines O4 and O5 of mux array MA21, the number of PIPs accessed in tile T22 is three, the number of PIPs accessed in tile T23 is one, and the number of PIPs accessed in tile T24 is zero.

Some placement algorithms ensure that CLEs having a high number of electrical connections to other CLEs are placed close to each other. Therefore, the logic implemented in tile T21 is likely to require more electrical connections to the logic in tile T22 than to the logic in tile T23 and even less in tile T24. Because the number of PIPs connected to output lines in a given column of tiles determines the number of possible electrical connections to those tiles, the structure of FIG. 1b offers a statistical match between the distribution of PIPs and the need of a user to make particular connections. Specifically, the distribution of PIPs according to the present invention improves connection options while minimizing the total number of PIPs. Minimizing PIPs decreases capacitance, thereby increasing speed of the signal path, and also minimizing chip area, thereby decreasing chip cost.

4. Extensions. A fourth feature associated with the output lines is that at least one output signal from a mux array is provided to another mux array, thereby allowing the signal to be propagated farther with minimum delay. For example, output line O5 of tile T21 is input line I5 of mux array MA24. This signal may then be coupled to output line O5 in mux array MA24, thereby allowing the signal to be propagated farther eastward. The number of PIPs in a signal path increases by two each time the signal path passes through a mux array.

5. Several CLE Connections. Preferably, several direct connections from one CLE (FIG. 1b) to a nearby mux array or from one logic unit (FIG. 1a) to a nearby logic unit offer high speed and flexible connectivity for commonly used connections. Output lines O1, O2, and O3 offer connections to nearby CLEs or logic units in the northwest, north, and west directions, respectively.

Input Lines

An input line carries a signal from a selected one of a plurality of PIPs to a logic unit or CLE input port. In FIG. 1b, input lines I4 connect one of four PIPs to a respective CLE input port. (In FIG. 1b only one input line I4 to a CLE is shown, although in an actual CLE, input signals will be available from several input lines, as will be discussed in connection with the preferred embodiment.) For example, regarding CLE C24, if PIP P241 in tile T24 is connected, input line I4 to CLE C24 is driven by a signal on output line O4 from tile T23. If PIP P242 is connected, input line I4 is driven by a signal on output line O5 from tile T23. If PIP P243 is connected, input line I4 is driven by a signal on output line O5 of tile T22. The fourth PIP which drives input line I4 in CLE C24 is in tile T34. If PIP P344 in tile T34 is connected, input line I4 to CLE C24 is driven by a signal on output line O4 in tile T33.

Preferred Embodiment

FIGS. 4a through 16 illustrate several views of a preferred embodiment of the invention.

FIGS. 4a and 4b together show one complete tile according to a preferred embodiment. FIGS. 5a and 5b show this same tile with lines removed in order to simplify the discussion. FIG. 6a shows one of the structures which results when an array of tiles shown in FIGS. 5a and 5b is connected. FIGS. 6b and 6c show most lines in the structure which results when an array of tiles shown in FIGS. 4a and 4b is connected. FIG. 7 shows another representation o