U.S. patent application number 09/929977 was filed with the patent office on 2002-01-24 for interconnect structure for a programmable logic device.
This patent application is currently assigned to Xilinx, Inc.. Invention is credited to Bauer, Trevor J., Chaudhary, Kamal, Young, Steven P..
Application Number | 20020008541 09/929977 |
Document ID | / |
Family ID | 25238264 |
Filed Date | 2002-01-24 |
United States Patent
Application |
20020008541 |
Kind Code |
A1 |
Young, Steven P. ; et
al. |
January 24, 2002 |
Interconnect structure for a programmable logic device
Abstract
The invention provides an FPGA interconnect structure preferably
included in an array of identical tiles. A combination of
single-length lines connecting to adjacent tiles and
intermediate-length lines connecting to tiles several tiles away
creates an interconnect hierarchy which allows any logic block to
be connected to any other logic block, yet also allows for fast
paths to both adjacent tiles and tiles some distance away. Longer
interconnect lines may be included as a third level of hierarchy to
permit interconnection of widely separated tiles. In a preferred
embodiment, from a given tile an intermediate-length line connects
to the tile three tiles away, then continues and connects to the
tile six tiles away. In this embodiment, the intermediate-length
line does not connect to the intervening tiles one, two, four, and
five tiles away.
Inventors: |
Young, Steven P.; (Boulder,
CO) ; Chaudhary, Kamal; (San Jose, CA) ;
Bauer, Trevor J.; (Boulder, CO) |
Correspondence
Address: |
XILINX, INC
ATTN: LEGAL DEPARTMENT
2100 LOGIC DR
SAN JOSE
CA
95124
US
|
Assignee: |
Xilinx, Inc.
San Jose
CA
|
Family ID: |
25238264 |
Appl. No.: |
09/929977 |
Filed: |
August 15, 2001 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
09929977 |
Aug 15, 2001 |
|
|
|
09759051 |
Jan 11, 2001 |
|
|
|
6292022 |
|
|
|
|
09759051 |
Jan 11, 2001 |
|
|
|
09574741 |
May 18, 2000 |
|
|
|
6204690 |
|
|
|
|
09574741 |
May 18, 2000 |
|
|
|
09311782 |
May 13, 1999 |
|
|
|
6107827 |
|
|
|
|
09311782 |
May 13, 1999 |
|
|
|
08823265 |
Mar 24, 1997 |
|
|
|
5963050 |
|
|
|
|
08823265 |
Mar 24, 1997 |
|
|
|
08806997 |
Feb 26, 1997 |
|
|
|
5914616 |
|
|
|
|
Current U.S.
Class: |
326/41 |
Current CPC
Class: |
H03K 19/17704 20130101;
H03K 19/17736 20130101; H03K 19/17796 20130101; H03K 19/1737
20130101 |
Class at
Publication: |
326/41 |
International
Class: |
H03K 019/177 |
Claims
What is claimed is:
1. An interconnect structure for a programmable logic device, the
programmable logic device including a plurality of substantially
identical tiles, each tile including a logic block, the
interconnect structure in each tile comprising: a plurality of
first buses extending a first number of tiles, the first buses
programmably coupling the logic block to adjacent logic blocks; a
plurality of vertical buses extending a second number of tiles, the
vertical buses programmably coupling the logic block to
non-adjacent logic blocks in a vertical direction, the second
number being greater than the first number; a plurality of
horizontal buses extending a number of tiles equal to the second
number of tiles, the horizontal buses programmably coupling the
logic block to non-adjacent logic blocks in a horizontal direction;
and a switching structure selectively coupling the vertical buses
and the horizontal buses to the logic block via the first
buses.
2. The interconnect structure of claim 1, wherein the switching
structure includes a plurality of programmable interconnect points
programmably coupling each line in at least one of the vertical and
horizontal buses to N of the first buses, wherein N is less than
the total number of the first buses.
3. The interconnect structure of claim 1, wherein the switching
structure includes a plurality of programmable interconnect points
programmably coupling each line in each of the vertical and
horizontal buses to N of the first buses, wherein N is less than
the total number of the first buses.
4. The interconnect structure of claim 1, wherein each vertical bus
traverses at least two logic blocks without coupling to the at
least two logic blocks.
5. The interconnect structure of claim 1, wherein each horizontal
bus traverses at least two logic blocks without coupling to the at
least two logic blocks.
6. The interconnect structure of claim 1, wherein at least one
vertical bus includes a line that is abutting another line in
another vertical bus, and wherein said switching structure includes
a programmable connection selectively connecting the abutting
lines.
7. The interconnect structure of claim 1, wherein at least one
horizontal bus includes a line that is abutting another line in
another horizontal bus, and wherein said switching structure
includes a programmable connection selectively connecting the
abutting lines.
8. The interconnect structure of claim 1, wherein the logic block
includes an input multiplexer receiving inputs from the first buses
and selectively providing the inputs to the logic block.
9. The interconnect structure of claim 8, wherein the input
multiplexer further receives inputs from one of the horizontal
buses and the vertical buses.
10. The interconnect structure of claim 8, further including a
plurality of third lines extending a third number of tiles, the
third number being greater than the second number, wherein the
input multiplexer provides outputs to at least one of the plurality
of third lines.
11. The interconnect structure of claim 1, wherein the logic block
includes an output multiplexer providing outputs to the first
buses.
12. The interconnect structure of claim 11, wherein the switching
structure includes a plurality of programmable connections
selectively coupling the outputs to the first buses.
13. A method of designing an interconnect structure for a
programmable logic device, the programmable logic device including
a plurality of substantially identical tiles, each tile including a
logic block, the method comprising: providing a plurality of first
buses extending a first number of tiles, the first buses
programmably coupling the logic block to adjacent logic blocks;
providing a plurality of vertical buses extending a second number
of tiles, the vertical buses programmably coupling the logic block
to non-adjacent logic blocks in a vertical direction, the second
number being greater than the first number; providing a plurality
of horizontal buses extending a number of tiles equal to the second
number of tiles, the horizontal buses programmably coupling the
logic block to non-adjacent logic blocks in a horizontal direction;
and providing a switching structure selectively coupling the
vertical buses and the horizontal buses to the logic block via the
first buses.
14. The method of claim 13, further including providing a plurality
of programmable interconnect points in the switching structure
programmably coupling each line in at least one of the vertical and
horizontal buses to N of the first buses, wherein N is less than
the total number of the first buses.
15. The method of claim 13, further including providing a plurality
of programmable interconnect points in the switching structure
programmably coupling each line in each of the vertical and
horizontal buses to N of the first buses, wherein N is less than
the total number of the first buses.
16. The method of claim 13, further including providing that each
vertical bus traverses at least two logic blocks without coupling
to the at least two logic blocks.
17. The method of claim 13, further including providing that each
horizontal bus traverses at least two logic blocks without coupling
to the at least two logic blocks.
18. The method of claim 13, further including providing a line in
at least one vertical bus that is abutting another line in another
vertical bus, and programmably connecting the abutting lines.
19. The method of claim 13, further including providing a line in
at least one horizontal bus that is abutting another line in
another horizontal bus, and programmably connecting the abutting
lines.
20. The method of claim 13, further including providing an input
circuit that receives inputs from the first buses and selectively
provides the inputs to the logic block.
21. The method of claim 13, further including providing an input
circuit that receives inputs from one of the horizontal buses and
the vertical buses and selectively provides the inputs to the logic
block.
22. The method of claim 13, further including providing a plurality
of third lines extending a third number of tiles, the third number
being greater than the second number, and allowing the logic block
to drive outputs to at least one of the plurality of third
lines.
23. The method of claim 13, further including driving a plurality
of outputs from the logic block onto the first buses.
Description
BACKGROUND OF THE INVENTION
[0001] 1. Field of the Invention
[0002] The invention relates to programmable integrated circuit
devices, more particularly to the interconnect structure in a field
programmable logic device.
[0003] 2. Description of the Background Art
[0004] Field programmable gate arrays (FPGAs) include logic blocks
connectable through a programmable interconnect structure. The
interconnect structure typically provides for connecting each logic
block to each other logic block. Early FPGAs accomplished this by
providing short interconnect segments that could be joined to each
other and to input and output terminals of the logic blocks at
programmable interconnection points (PIPs). As these FPGAs become
larger and more complex, the interconnect structure must also
become both larger and more complex. In order to improve speed
(performance), direct connections to adjacent logic blocks have
been provided, and for transmitting a signal the distance of many
logic blocks, longer lines have been provided. In order to save
silicon area, less frequent PIPs have been provided. With fewer
PIPs present, the routing is less flexible (for the same number of
routing lines), but typically faster due to reduced loading. By
removing only those PIPs which are least often used, routing
flexibility can be minimally affected. Thus, there is a trade-off
between performance, silicon area, number of routing lines, and
routing flexibility.
[0005] Several U.S. Patents show such structures for
interconnecting logic blocks in FPGAs. Freeman in U.S. Reissue
Patent Re 34,363 describes the first FPGA interconnect structure,
and includes short routing segments and flexible connections as
well as global lines for signals such as clock signals. Carter in
U.S. Pat. No. 4,642,487 shows the addition of direct connections
between adjacent logic blocks to the interconnect structure of
Freeman. These direct connections provide fast paths between
adjacent logic blocks. Greene et al in U.S. Pat. No. 5,073,729
shows a segmented interconnect structure with routing lines of
varied lengths. Kean in U.S. Pat. No. 5,469,003 shows a
hierarchical interconnect structure having lines of a short length
connectable at boundaries to lines of a longer length extending
between the boundaries, and larger boundaries with lines of even
longer length extending between those boundaries. Kean shows in
particular lines the length of one logic block connecting each
logic block to the next, lines the length of four logic blocks
connectable to each logic block they pass, and lines the length of
sixteen logic blocks connectable at the length-four boundaries to
the length-four lines but not connectable directly to the logic
blocks. In Kean's architecture, adjacent logic blocks in two
different hierarchical blocks (i.e., on either side of the
boundaries) connect to each other differently than adjacent logic
blocks in the same hierarchical block.
[0006] Pierce et al in U.S. Pat. No. 5,581,199 shows a tilebased
interconnect structure with lines of varying lengths in which each
tile in a rectangular array may be identical to each other tile. In
the Pierce et al architecture, an interconnect line is part of the
output structure of a logic block. Output lines of more than one
length extend past other logic block input lines to which the logic
block output lines can be connected. All of the above-referenced
patents are incorporated herein by reference, and can be reviewed
for more understanding of prior art routing structures in
FPGAs.
[0007] In the interconnect structures described by Freeman and
Greene et al, each path is formed by traversing a series of
programmably concatenated interconnect lines, i.e., a series of
relatively short interconnect lines are programmably connected end
to end to form a longer path. The relatively large number of
programmable connections on a given signal path introduces delay
into the signal path and therefore reduces the performance of the
FPGA. Such interconnect structures are called "general
interconnect".
[0008] The direct connections first described by Carter and
included in the architecture of Kean provide fast paths between
adjacent logic blocks, but in Carter's structure general
interconnect must still be used to traverse the distance between
any two blocks that are not adjacent. Therefore, circuits large
enough or complex enough to require interconnecting signals between
non-adjacent blocks (which frequently occur) must use the general
interconnect to make these connections. For short paths, general
interconnect is slower than direct interconnect, because general
interconnect must be connected through several PIPs, or, if long
lines are used, must be buffered to accommodate long or heavily
loaded signals, introducing delay. Additionally, it is inefficient
in terms of silicon area to use long lines for short paths that may
be traversing only a few logic blocks, since the long lines can
otherwise be used for longer paths. Further, since software that
implements a logic design in an FPGA typically places
interconnected logic in close proximity, structures that take
advantage of this placement strategy will work well with the
software, resulting in shorter compilation times for routing
software and more efficient circuit implementations.
[0009] Interconnect lines called "quad lines" are included in the
XC4000EX FPGAs from Xilinx, Inc., and described on pages 4-32
through 4-37 of the Xilinx 1996 Data Book entitled "The
Programmable Logic Data Book", available from Xilinx, Inc., 2100
Logic Drive, San Jose, Calif. 95124, which are incorporated herein
by reference. However, since each quad line contacts every tile
that it traverses, these lines have a large number of PIPs, each of
which adds RC delay.
[0010] Pierce et al provides fast paths between both adjacent logic
blocks and logic blocks several tiles apart. The output lines of
the Pierce et al architecture can each drive the inputs of a
limited set of other logic blocks. However, the possible
destinations are limited to selected logic blocks, and the
interconnect lines can only access certain specific inputs of the
destination logic blocks.
[0011] In each of the prior art structures recited above, each
interconnect line has programmable connections to the inputs of
other logic blocks. However, in the structures of Freeman, Carter,
and Pierce et al, a given logic block input can be driven from
either horizontal interconnect lines, or vertical interconnect
lines, but not both. An alternative approach is to separate the
interconnect lines from the logic block inputs by way of a routing
matrix, which gives each interconnect line more flexible access to
the logic block inputs. Such an architecture is described in U.S.
Pat. No. 5,682,107 entitled "FPGA Architecture With Repeatable
Tiles Including Routing Matrices and Logic Matrices" by Tavana et
al, issued Oct. 28, 1997, which is referenced above and
incorporated herein by reference. In the structure of Tavana et al,
most interconnect lines entering the tile connect to a routing
matrix within the tile, rather than directly to logic block inputs
or outputs. Connections between pairs of interconnect lines and
between interconnect lines and logic block inputs are made through
lines called "tile interconnect lines" that do not leave the tile.
The advantage of having an extra interconnect line in a path from
the edge of a tile to the logic block in the tile is that the
routing matrix is flexible but consumes a relatively small amount
of silicon area. A combination of PIPs can allow access from any
line entering the tile to any desired input of a destination logic
block. Yet the total number of PIPs is smaller than in many other
interconnect structures. The disadvantage is that getting on and
off the tile interconnect lines inserts a certain amount of delay
into the path for each tile traversed. This delay inhibits the fast
propagation of signals through the FPGA. Tavana et al have
therefore provided long lines connectable to every tile they pass
and double-length lines that bypass the tile interconnect lines in
one tile. These lines can be used for signals that are traversing
one or more tiles without accessing the logic blocks in the
traversed tiles.
[0012] Kean separates the interconnect lines from the logic block
inputs using input multiplexer switches, which provide routing
flexibility to the inputs.
[0013] Since the slowest signal path between logic blocks typically
determines the performance of a circuit, it is advantageous to make
the slowest path as fast as possible. One way to accomplish this is
to design the interconnect structure such that there is a
relatively uniform delay on all signal paths throughout an FPGA. In
the above routing structures, a typical distribution of delays on
signal paths shows a few signal paths with significantly greater
delay than the average. These signal paths are typically those with
large "RC trees", i.e., signal paths which traverse a resistor
(such as an unbuffered PIP), then have a large capacitance on the
destination side of the resistor. An interconnect structure with
relatively uniform delay could be better realized if large
capacitances on a signal path (e.g., longer interconnect lines)
were predictably placed on the source side of the resistor, or as
close as possible to the source end of the signal path.
[0014] High fanout signals have large capacitance and are often
slower than low fanout signals. Prior art routing structures had
high-fanout signal routing with relatively large RC delay. An
interconnect structure should ideally provide high-fanout signal
routing with a delay comparable to that of other signals.
[0015] It is therefore desirable to find an interconnect structure
that allows: 1) uniformly fast propagation of signals, including
high-fanout signals, throughout the FPGA; 2) implementation of
localized circuits in non-adjacent as well as adjacent blocks using
fast paths; 3) ease of use by software; 4) efficient implementation
of commonly used logic functions; and 5) a high degree of routing
flexibility per silicon area consumed.
SUMMARY OF THE INVENTION
[0016] According to the invention, an FPGA interconnect structure
includes a combination of wiring segment lengths and connections to
logic blocks such that a given logic block can be connected through
fast paths both to adjacent logic blocks and to logic blocks
several tiles away. In the preferred mode, the FPGA includes a
two-dimensional array of identical tiles. In each tile is a logic
block. Also in each tile are programmable interconnection points
(PIPs) and segments of interconnect lines that adjoin segments of
interconnect lines in adjacent tiles. The adjoined segments form
interconnect lines extending through several tiles to PIPs in other
tiles some distance away. A combination of lines connecting to
adjacent tiles (called single-length lines) and lines at least
three tiles long connecting a first tile to at least second and
third tiles at least two and three tiles away (called
intermediate-length lines) creates an interconnect hierarchy which
allows any logic block to be connected to any other logic block,
and yet also allows for fast paths both to adjacent tiles and to
tiles some distance away. Longer interconnect lines (called long
lines) may be included as a third level of hierarchy to permit
efficient interconnection of widely separated tiles. Long lines can
span the entire width of the tile array, or can be programmably
segmented into two or more shorter long lines. In one embodiment,
long lines are distinguished from intermediate-length lines in that
a pattern of PIPs spanning two or more tiles is repeated along the
length of the long line. When the size of the tile array is
increased, more instances of the pattern occur. By contrast,
intermediate-length lines according to the invention are of a
predetermined length that does not alter when the size of the array
is increased. When the size of the tile array is increased,
additional intermediate-length lines are added.
[0017] A unique aspect of the invention is having an interconnect
line (specifically an intermediate-length line or a long line) that
programmably connects to logic blocks in at least three separate
tiles, while extending through at least one tile in which no PIPs
connect to the interconnect line. Such an interconnect line is said
to be "unconnectable" to the tile in which no PIPs connect to the
interconnect line and also "unconnectable" to the logic block in
the tile, although connections can be made from the interconnect
line to the logic block through PIPs in other tiles. A programmable
connection from an interconnect line to a logic block in a given
tile may be made: a) directly to a logic block input; b) through
one or more PIPs connected to the interconnect line in the same
tile; or c) through one or more PIPs connected to the interconnect
line in the same tile and through one or more single-length lines.
If any such programmable connection from an interconnect line to a
logic block in a given tile can be made, the interconnect line is
said to be "connectable" to the logic block and to the tile.
[0018] In a preferred embodiment, from an originating tile an
intermediate-length line connects to the tile three tiles away
(i.e., separated by two tiles from the originating tile), then
continues and connects to the tile six tiles away (i.e., separated
by five tiles from the originating tile). This intermediate-length
line (called a "hex line") does not connect to the intervening
tiles one, two, four, and five tiles away. Instead, these tiles are
reached indirectly by using single-length lines from the
originating tile, the third tile, or the sixth tile. Connecting to
only three of the seven tiles traversed by the hex line reduces the
number of PIPs, and therefore reduces the silicon area required to
form the interconnect line (thereby lowering the cost of the FPGA)
and also reduces the capacitance added by PIPs (thereby increasing
FPGA performance). Yet the combination of this intermediate-length
routing, direct connections to neighboring tiles, and long lines to
distant tiles allows highly flexible routing of signals.
[0019] Many modifications of the interconnect structure of the
invention are possible. One such modification is the use of
asymmetrical PIP patterns on interconnect lines
(intermediate-length lines or long lines) such that the
interconnect line connects three logic blocks, with two of the
three logic blocks being in adjacent tiles, while the third logic
block is in a tile separated from the other two tiles.
[0020] As FPGAs grow larger, the amount of routing required per
tile grows larger. Therefore, the silicon area required to
implement the necessary PIPs tends to grow larger, and the silicon
area per tile increases as the number of tiles in an FPGA
increases. It is desirable to reduce the number of PIPs required
per tile.
[0021] In one embodiment, only the single-length lines have
connections to the logic block inputs. The intermediate-length
lines have connections to each other and to single-length lines,
but not to the logic block inputs. The long lines have connections
to the intermediate-length lines, but not to the single-length
lines or to the logic block inputs. Therefore, the number of PIPs
in a tile is reduced. As with the intermediate-length lines,
reducing the number of PIPs on a long line reduces both silicon
area and capacitance on the long line, thereby reducing RC delay.
In some embodiments, special tiles include additional connections
between the various interconnect lines to facilitate distribution
of high-fanout signals. In some embodiments, global lines having
direct access to the logic block inputs are available for global
signals such as clocks or other high fanout control signals. In
some embodiments, the long lines have connections to each other in
the repeatable tile instead of in special tiles.
[0022] In some embodiments, the single-length lines are driven by
unbuffered PIPs and the intermediate-length and long lines are
driven by buffered PIPs. Signals are typically routed on longer
buffered interconnect lines first, then fanned out on shorter
unbuffered lines. In this manner, large unbuffered RC trees are
avoided, making delays on signal paths throughout the FPGA more
uniform and improving performance. More uniform delays also make it
easier to predict the performance of a circuit earlier in the
design cycle.
BRIEF DESCRIPTION OF THE DRAWINGS
[0023] FIG. 1 shows some of the single-length and
intermediate-length interconnect lines according to one embodiment
of the invention. FIG. 1 is a simplified representation of the
embodiment of FIG. 2.
[0024] FIG. 2 shows a bus representation of a single tile in which
intermediate-length lines are connected to every third and sixth
tile (i.e., hex buses are used).
[0025] FIG. 2A is a slightly modified version of FIG. 2 showing a
different representation of the single-length buses and switching
structure 403.
[0026] FIG. 3 shows a detailed representation of a single tile in
the preferred embodiment. All features shown in FIG. 2 are
represented, and some additional features are included.
[0027] FIG. 4 shows the region of FIG. 3 labeled INTERCONNECT.
[0028] FIG. 5 shows the output multiplexer (OMUX) of FIG. 3.
[0029] FIG. 6 shows the input and output signals for the
configurable logic element (CLE) of FIG. 3.
[0030] FIGS. 6A and 6B show the internal logic for the CLE of FIG.
3. To view the entire CLE, FIGS. 6A and 6B must be viewed together
as shown in the key at the top of FIG. 6A.
[0031] FIG. 7 shows the input multiplexer (INUX) of FIG. 3.
[0032] FIG. 8 shows a routing example of a signal path using hex
and single-length lines.
[0033] FIG. 9 shows a routing example of a signal path using long
lines, hex lines, and single-length lines.
[0034] FIG. 10 shows a routing example of a high fanout control
signal delivered to a column of tiles.
[0035] FIG. 11 shows a routing example of a high fanout function
generator input signal delivered to a column of tiles.
[0036] FIG. 12 shows an example of how to combine the interconnect
of FIGS. 10 and/or 11 to deliver a high-fanout signal to an array
of tiles.
DETAILED DESCRIPTION OF THE DRAWINGS
[0037] The following drawing conventions are used throughout the
figures. A small solid black dot at the intersection of two lines
indicates a permanent electrical connection between the crossing
lines. An open circle enclosing an intersection between two lines,
or separating a single line into two line segments, indicates a
programmable bidirectional connection between the lines or line
segments (for example, a pass transistor which is turned on to make
the connection). 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 line.) A
triangle showing a connection between two buses indicates that at
least one connection exists between the lines making up the buses.
In accordance with one embodiment of the present invention,
programmable connections are provided by using programmable
interconnection points (PIPs), wherein each PIP includes at least
one transistor.
[0038] A line which ends within a tile or block structure (i.e.,
does not extend to the border of a tile or block) is physically
terminated within the tile or block. A line which extends to the
border of the tile 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.
[0039] Simplified Representation of the Inventive Concept
[0040] FIG. 1 shows in simplified form some of the single-length
and intermediate-length interconnect lines according to one
embodiment of the invention. FIG. 1 illustrates part of an array of
tiles in an FPGA. In each tile is logic block L and a routing or
switching structure R. Also in each tile are line segments which
connect to line segments in adjacent tiles to form interconnect
lines. Most of the interconnect lines in the FPGA are not shown in
FIG. 1 so as not to obscure the connectivity of the invention.
Three of the tiles, labeled TILE1, TILE2, and TILE3 are shown in
more detail, and short- and intermediate-length interconnect lines
extending from TILE1, TILE2, and TILE3 are shown. (However,
intermediate-length lines extending horizontally are not shown.)
Single-length lines N, S, E, and W extend north, south, east, and
west, respectively, from TILE2 to the four neighboring tiles.
Equivalent lines not labeled extend from TILE1 and TILE3 as well.
Identical structures are also present in all other tiles but are
not shown in FIG. 1. These single-length lines N, S, E, and W
extend between switching structures R in neighboring tiles; and
have programmable connections to logic block L.
[0041] Intermediate-length lines also extend north, south, east and
west from each tile to connect to other tiles three and six tiles
away. Therefore in this embodiment the intermediate-length lines
are "hex lines" as previously defined. Only the vertically
extending (north and south) hex lines are shown, to avoid obscuring
the connections. (Later figures show the complete connection
pattern.)
[0042] From TILE2, hex line 6VN extends to the north a length of
six tiles, connecting to TILE1 three tiles to the north and to
another tile (not shown) six tiles to the north. Also from TILE2,
hex line 6VS extends to the south six tiles, connecting to TILE3
and to another tile (not shown) six tiles to the south. Hex line
6VM connects tile TILE2 to tiles TILE1 and TILE3. Thus, three hex
lines extend vertically and connect to TILE2. Also in TILE2, line
6VS is programmably connectable to line 6VN, as indicated by the
PIP joining the ends of these two lines. In this manner an easy
connection is available to a tile twelve tiles away from the
starting tile. Only one additional connection is needed to extend
the connection to another interconnect line six tiles long.
[0043] Note that within TILE2, only the single-length lines N, S,
E, and W have access to logic block L. Thus a signal on a hex line
must transfer to a single-length line to access logic block L in
the destination tile. A signal entering TILE2 on line 6VS can
connect to lines W, N, or E and thereby to logic block L in TILE2.
Further, the signal now on single-length lines W, N or E can also
access the logic block L in the tiles to the west, north or east of
TILE2. In this embodiment, no connection from hex line 6VS to
single-length line S is provided, as eliminating this connection
saves silicon area and the tile to the south of TILE2 can be
accessed through another path. In the embodiment of FIG. 1, a
signal in TILE3 can reach the logic block of the tile to the south
of TILE2 either by: 1) traversing two single-length lines to the
north; or 2) taking hex line 6VM to TILE2, connecting to
single-length line W or E, then entering switching structure R in
TILE2 and "bouncing" (moving onto and off of an interconnect line
in the same tile) from single-length line W or E to single-length
line S inside the switching structure. The second alternative has
one more PIP in the signal path than the first alternative, the PIP
in switching structure R. In another embodiment, a connection to
the south can of course be provided.
[0044] Repeatable Tile Representation
[0045] FIG. 2 more completely illustrates a single tile. FIG. 2
shows bus segments of various widths, as indicated by diagonal
slash lines having a number indicating the bus width. The number of
lines in each bus segment can of course vary in different
embodiments. In the embodiment of FIG. 2, the tiles are identical.
Since the illustration is of a single tile, complete interconnect
lines must be understood by realizing that bus segments extending
to the top of FIG. 2 will contact bus segments at the bottom of
another copy of FIG. 2 placed adjacent to the north. Similarly, bus
segments extending to the right of FIG. 2 will contact bus segments
of another copy of FIG. 2 placed adjacent to the right, and so
forth. An array such as present in an FPGA is represented by
placing many copies of FIG. 2 together.
[0046] Hex Buses
[0047] In FIG. 2, 12-segment bus 6N extends horizontally through
programmable region PROG-2, then turns north to become bus segment
47. Bus segment 47 extends to the top edge of the tile. Another
copy of FIG. 2 placed adjacent and to the north of FIG. 2 will have
a bus segment 46 extending to the bottom of the copy that contacts
bus segment 47. Bus segment 46 extends vertically through the tile,
but is offset right by one bus before it reaches the top of the
tile, such that bus segment 46 in a given tile contacts bus segment
45 in the tile adjacent to the north. Similarly, at the tile
boundary, bus segment 45 contacts bus segment 44, bus segment 44
contacts bus segment 43, bus segment 43 contacts bus segment 42,
and bus segment 42 contacts bus segment 41. This offset arrangement
results in a hex length bus extending through six adjacent tiles.
Bus segment 41 extends into the tile from the bottom, then turns
west and extends horizontally through programmable region PROG-2 as
bus segment 6S. Bus segment 6V also extends horizontally through
programmable region PROG-2, and connects to bus segment 44. Each
tile therefore includes three bus segments 6N, 6V, and 6S extending
into programmable region PROG-2. These bus segments enable the
connections from a given tile to tiles three and six tiles away,
which makes these intermediate-length lines hex lines as defined
above. Bus segments 41, 42, 43, 44, 45, 46 and 47 together form a
72-line vertical "routing track" designated 6VN at the north end
and 6VS at the south end of FIG. 2. Bus segments 42, 43, 44, 45,
and 46 are called "interior segments", and bus segments 41 and 47
are called "end segments".
[0048] Horizontal 12-segment hex buses are similarly provided, each
tile having portions 6W, 6H, and 6E extending into programmable
region PROG-2. Bus segment 6E extends from programmable region
PROG-2, then turns east and extends as bus segment 37 to the east
edge of the tile. Bus segment 37 of a given tile contacts bus
segment 36 in the adjacent identical tile to the east. Similarly to
bus segments 41-47, bus segments 31-37 provide a hex length bus
extending through six adjacent tiles. Bus segment 31 extends into
programmable region PROG-2 as bus segment 6W. Bus segment 34
extends into programmable region PROG-2 as bus segment 6H. Bus
segments 31, 32, 33, 34, 35, 36 and 37 together form a 72-line
horizontal routing track designated 6HW at the west end and 6HE at
the east end of FIG. 2.
[0049] Note that 72-line hex buses 6VN, 6VS, 6HW, 6HE are not
typical buses in that the hex lines making up the buses do not all
start in the same tile and end in the same tile, i.e., there is no
fixed boundary for the bus. Twelve hex lines end, and another
twelve hex lines begin, in each tile. This feature, among others,
distinguishes the inventive structure over that of Kean and other
hierarchical interconnect structures. In the hierarchical
interconnect structures, an FPGA is divided hierarchically with
periodic routing structures at the hierarchical boundaries. The
present invention uses identical tiles, each of which tiles
includes end segments of some of the lines.
[0050] Other Buses
[0051] North, south, east, and west single-length buses (N, S, E,
and W respectively), each 24 lines wide, are also provided. These
single-length buses connect to each other within switching
structure 403 located in programmable region PROG-2. In FIG. 2,
single-length buses S, W and E are shown entering switching
structure 403 in two positions, in order to correspond to FIG. 4.
However, the bus segments labeled S, W, and E pass continuously
through switching structure 403. The way these bus segments pass
through switching structure 403 is clarified in FIG. 2A, which
shows a different representation of switching structure 403, but is
otherwise the same as FIG. 2.
[0052] In this embodiment, each single-length line can be connected
to the input multiplexer IMUX-2. Each single-length line can also
be connected to some of the hex lines.
[0053] FIG. 2 includes another feature: horizontal and vertical
long line buses. Each of the two long line buses is 12 lines wide.
Two-line buses 437P, 438 (corresponding to lines LV0 and LV6, LH0
and LH6, respectively, in FIGS. 4 and 7) taken from each long line
bus extend into programmable region PROG-2 where they can be
programmably connected to drive hex lines. The two accessed long
lines in each long line bus are separated from each other by six
lines, and each long line is accessed every sixth tile. Two-line
buses 437I, 438 taken from each long line bus extend from input
multiplexer IMUX-2, which can provide signals to the long lines.
(Two-line bus 437I includes the same two signals as two-line bus
437P.) The horizontal long line bus is designated LHW at the west
end and LHE at the east end of FIG. 2. LHW and LHE extend through
an offset region 422 (shown in FIG. 3) which offsets the bus by one
line per tile. In this manner, each identical tile accesses two
different lines of horizontal long line bus LHW/LHE, and each long
line is accessed every sixth tile. Similarly, the vertical long
line bus is designated LVN at the north end and LVS at the south
end of FIG. 2. LVN and LVS extend through an offset region 421
similar to offset region 422. The long line buses extend the entire
length or width of the tile array.
[0054] Another bus extends horizontally through the programmable
region PROG-2, a tristate buffer bus, 4 lines wide, designated TW
at the west end and TE at the east end of FIG. 2. TW and TE are
connected by programmable offset region 423. Programmable offset
region 423 is similar to offset regions 421 and 422 in that it
offsets the bus by one line; however, programmable offset region
423 is only four lines wide and also includes one programmable
bidirectional PIP for extending the length of bus TW or TE. (The
internal structure of programmable offset region 423 is shown in
FIG. 3.) This PIP can be used either to "break" each line of the
tristate bus every fourth tile, or to connect lines together every
fourth tile to continue a tristate line up to the full width of the
tile array. Two examples of tristate buses that can be used are
described by Steven P. Young et al in commonly assigned U.S. Pat.
No. 5,677,638, entitled "High Speed Tristate Bus with Multiplexers
for Selecting Bus Driver", issued Oct. 14, 1997, and commonly
assigned U.S. Pat. No. 5,847,580, "High Speed Bidirectional Bus
with Multiplexers", by Bapat et al, issued Dec. 8, 1998, both of
which are incorporated herein by reference.
[0055] Programmable Bus Connections
[0056] Programmable bus connections are located in region
INTERCONNECT-2, which is part of programmable region PROG-2. Where
hex buses cross single-length buses, open triangles indicate
programmable connections in which one of the hex lines at the base
of the triangle can drive one of the single-length lines at the tip
of the triangle. Triangles pointing to hex lines represent buffered
connections, and triangles pointing to single-length lines
represent unbuffered connections such as simple pass
transistors.
[0057] Note that not all intersections have triangles. For example,
hex bus segment 6V can connect to east and west single-length buses
E and W, but not to north and south buses N and S. Similarly, hex
bus segment 6H can connect to north and south single-length buses N
and S, but not to east and west buses E and W. Hex bus segment 6S
coming from the south can connect to east and west single-length
buses E and W and also to north bus N. This partial connectivity
saves silicon area while still providing useful connections for
good routability and performance. Similarly, hex bus segment 6N
coming from the north can connect to east and west single-length
buses E and W and also to south bus S; hex bus segment 6W coming
from the west can connect to north and south single-length buses N
and S and also to east bus E; and hex bus segment 6E coming from
the east can connect to north and south single-length buses N and S
and also to west bus W. In each of these cases, the connection may
be limited by hardware or software to being unidirectional such
that the hex buses can drive the single-length buses, but the
single-length buses cannot drive the hex buses. (In the actual
hardware of this embodiment, the connection is a bidirectional
pass-gate; whereby the single-length buses can drive the hex buses.
However, doing so reduces the speed of the resulting signal path
dramatically, and therefore software for programming the FPGA does
not select such a path.)
[0058] All of the single-length buses can be driven by output
multiplexer OMUX-2 by way of output bus OUT. Hex bus segments 6E,
6W, 6N, and 6S can also be driven by output bus OUT.
[0059] Vertical hex bus segments 6N and 6S can be connected
together via programmable bus connection 404. (The internal
structure of programmable bus connection 404 is shown in FIG. 4.)
In this fashion, a line in a vertical hex bus can be continued 12,
18 or more tiles, rather than terminating after 6 tiles. Similarly,
horizontal hex bus segments 6W and 6E can be connected together via
programmable bus connection 405. Additionally, vertical hex bus
segments 6N and 6S can be connected to horizontal hex bus segments
6W and 6E via programmable bus connections 406, 407, 408, and 409.
The connectivity of these bus connections is shown in FIG. 4. Note
also that hex bus segment 6V (which implements the connection to
the third tile in the vertical direction) can drive horizontal hex
bus segments 6W and 6E. Similarly, hex bus segment 6H (which
implements the connection to the third tile in the horizontal
direction) can drive vertical hex bus segments 6N and 6S. By this
means, the direction of a signal path is easily changed between
horizontal and vertical.
[0060] Horizontal hex bus segments 6E and 6W in a given tile can be
driven by the two horizontal long lines accessed in the same tile.
Vertical hex bus segments 6N and 6S in a given tile can be driven
by the two vertical long lines accessed in the same tile. This
capability allows a signal on a long line to fan out to an entire
row or column of tiles with high speed, as later shown in FIGS.
10-12, by routing from the long line to each hex line (and hence to
single lines) rather than propagating serially along the hex
lines.
[0061] Switching structure 403 allows each single-length bus (N, S,
E, W) to be connected to each of the other single-length buses. The
connectivity in switching structure 403 is shown in FIG. 4, and is
also described and shown in detail in FIG. 6A of commonly assigned
U.S. Pat. No. 5,828,230 entitled "FPGA Two Turn Routing Structure
with Lane Changing and Minimum Diffusion Area" by Steven P. Young,
which is hereby incorporated herein by reference.
[0062] Significance of Programmable Bus Connections
[0063] The bus connections in FIG. 2 implement an interconnect
structure for FPGAs according to the invention. The buses of this
embodiment interact in the following ways: 1) long lines can drive
hex buses parallel thereto, but cannot drive either perpendicular
hex buses or single-length buses except through the parallel hex
buses; 2) hex buses can drive single-length buses both parallel and
perpendicular thereto, but single-length buses cannot drive hex
buses (although in one embodiment hex buses and single-length buses
are connected through bidirectional PIPs, so a software limitation
is imposed to make these connections unidirectional); 3) hex buses
can further drive other hex buses both parallel and perpendicular
thereto; and 4) most hex buses cannot connect to the inputs of
input multiplexer IMUX-2, although a limited number of lines from
the hex buses can make such connections, as is later described.
Therefore, in the interconnect structure of FIG. 2, it is preferred
to make connections between tiles by placing a signal first on the
longest suitable line and from there moving the signal to a shorter
line. For example: 1) a connection to a logic block three or six
tiles away would be made through a hex line, switching to a
single-length line to reach the input multiplexer; 2) a connection
to a logic block seven tiles away would be made through first a hex
line and then a single-length line (this connection requires no
more PIPs than the first example); 3) a connection to a logic block
on the other side of the FPGA would be made through first a long
line, then a hex line, then transferred to one or more
single-length lines before entering the destination input
multiplexer. In this manner, large RC trees are avoided, by
ensuring that unbuffered PIPs do not drive heavily loaded lines.
Further, the various types of signal paths throughout the
interconnect structure have similar delays, increasing the overall
performance of the circuit.
[0064] Of course, many signal paths do not travel only within one
column or one row of tiles. To turn a corner, a signal path can
move from a given single-length line to a perpendicular
single-length line through the switching structure 403, or from a
given hex line to a perpendicular hex line.
[0065] Programmable Logic Portion of the Tile
[0066] The interconnect portion INTERCONNECT-2 of the repeatable
tile of FIG. 2 exists only for the purpose of delivering signals
between the logic blocks in different tiles. The logic block LB of
this embodiment comprises a configurable logic element CLE-2, an
output multiplexer OMUX-2, an input multiplexer IMUX-2, and two
tristate buffers 445. (The number of tristate buffers can of course
vary in other embodiments of the invention.) Configurable logic
element CLE-2, input multiplexer IMUX-2, and output multiplexer
OMUX-2 in FIG. 2 have small solid black triangles on each input and
output. The direction of the apex of the triangle indicates the
direction of the signal flow. Thus, a triangle with its apex inside
the rectangular box indicates an input line or bus and a triangle
with its apex outside the rectangular box indicates an output line
or bus.
[0067] Input multiplexer IMUX-2 of this embodiment accepts inputs
from: 1) each of single-length buses N, S, E, W; 2) four lines 428
of each 12-line vertical hex bus 42, 43, 44, 45, 46, 47; 3) four
lines 429 from 8-line output bus OUT from output multiplexer
OMUX-2; and 4) a total of four fast-feedback lines 430 from
configurable logic element CLE-2. Input multiplexer IMUX-2 can
programmably create the following output signals: 1) two 13-line
buses 436 that provide input signals to configurable logic element
CLE-2; 2) two signal lines 431 that drive the data inputs of
tristate buffers 445; 3) two signal lines 432 that enable tristate
buffers 445; 4) two lines of vertical long line bus LVS; and 5) two
lines of horizontal long line bus LHE.
[0068] Configurable logic element CLE-2 accepts only inputs from
input multiplexer IMUX-2, and drives 12 output lines shown in FIG.
2 as two 6-line buses 433. Four of these output lines form
fast-feedback paths 430 to input multiplexer IMUX-2. Outputs 433
from configurable logic element CLE-2 drive output multiplexer
OMUX-2. OMUX-2 gets one additional input 434 from tristate buffer
bus TW, and drives 8-line output bus OUT. Each of the two tristate
buffers 445 drives two of the tristate lines in tristate buffer bus
TW via 2-line bus 435. The connection of tristate buffers 445 to
tristate buffer bus TW is shown in more detail in FIG. 3.
[0069] Detailed Repeatable Tile Representation
[0070] FIGS. 3-12 show the preferred embodiment of a repeatable
interconnect structure according to the invention, which embodiment
is similar to the embodiment of FIG. 2. FIG. 3 shows a detailed
representation of a single tile in the preferred embodiment. All
features shown in FIG. 2 are represented, and some additional
features are included. Labels in FIG. 3 correspond to the same
labels in FIG. 2; thus corresponding structures are easily
identified. There is one difference in representation: in FIG. 3,
72-line vertical routing track 6VN/6VS of FIG. 2 is represented as
two 36-line vertical routing tracks, 6RN/6RS on the right and
6LN/6LS on the left. Half of the lines of each 12-line hex bus are
drawn on each side of programmable region PROG, which corresponds
to programmable region PROG-2 in FIG. 2. This representational
difference has no effect on the functionality of the tile. In FIG.
3, the horizontal and vertical hex buses are shown with first lines
of all buses are grouped together. Only the first lines are
labeled. For example, labels 41 through 47 represent the first
lines of hex bus segments 41 through 47 of FIG. 2. Hex bus segments
31 through 37 of FIG. 2 are similarly represented, but are not
labeled in FIG. 3.
[0071] Interconnect region INTERCONNECT of FIG. 3 is functionally
the same as interconnect region INTERCONNECT-2 of FIG. 2. Features
in the embodiment of FIG. 3 that are not shown in FIG. 2 include:
1) horizontal four-line global bus G along the top of the tile
provides four global inputs to input multiplexer IMUX, which global
inputs can be used to distribute high-fanout or high-speed global
clock signals; 2) two direct output connection lines DOW from
output bus OUT (driven by output multiplexer OMUX) exit the tile of
FIG. 3 on the west edge, where they are connected to input lines
DIE of an adjacent tile to the west; 3) two direct input connection
lines DIE from the adjacent tile to the east enter the tile of FIG.
3 on the east edge and go to input multiplexer IMUX; 4) two direct
output connection lines DOE from output bus OUT exit the tile of
FIG. 3 on the east edge, where they are connected to lines DIW of
an adjacent tile to the east; 5) two direct input connection lines
DIW from the adjacent tile to the west enter the tile of FIG. 3 on
the west edge and go to input multiplexer IMUX; and 6) two carry
chains are included in configurable logic element CLE, each carry
chain having an input on the south edge of the tile and an output
on the north edge of the tile, the inputs designated CIN0 and CIN1
and the outputs designated COUT0 and COUT1, respectively. Some
embodiments of the interconnect structure according to the
invention do not have these features.
[0072] Interconnect Region
[0073] FIG. 4 shows interconnect region INTERCONNECT of FIG. 3 in
detail. All input and output lines are located in the same relative
positions in FIGS. 3 and 4. Input and output lines to interconnect
region INTERCONNECT in FIG. 3 can be identified by looking at the
corresponding labels in FIG. 4. With the exception of the division
of the vertical routing track, as described above, FIG. 4 also
corresponds directly to the interconnect region INTERCONNECT-2 of
FIG. 2. Numerical labels identify features of the implementation
previously shown and described. The connectivity in switching
structure 403 is also described and shown in detail in FIG. 6A of
commonly assigned U.S. Pat. No. 5,828,230 entitled "FPGA Two Turn
Routing Structure with Lane Changing and Minimum Diffusion Area" by
Steven P. Young, which is referenced above.
[0074] Programmable bus connections 404 and 405 in FIG. 4
demonstrate an additional feature of the invention. In programmable
bus connections 404 and 405, vertical and horizontal hex buses
(respectively) are programmably connected together to enable the
continuation of a signal path in the same direction from one hex
bus to the next. As shown in FIG. 4, some of these connections can
be bidirectional (for example, implemented as pass transistors)
while others are unidirectional (such as buffered connections). In
one embodiment, the bidirectional hex buses (hex buses that can be
programmably driven from either end) have more programmable
connections to perpendicular buses than do the unidirectional hex
buses (hex buses that can be programmably driven from only one
end). Such bidirectional connections will be most flexible, while
such unidirectional connections will be faster, since the PIP can
be implemented as a single buffer without a programmable
enable.
[0075] Vertical long lines LV0 and LV6 identify the first and
seventh lines, respectively, of vertical long line bus LVS that are
accessed in each repeatable tile, as previously described.
Similarly, horizontal long lines LH0 and LH6 identify the first and
seventh lines, respectively, of the horizontal long line bus
LHE.
[0076] As previously described, hex bus segments 6N, 6V, and 6S of
FIG. 2 are divided in FIG. 3 into hex bus segments 6NR, 6VR, and
6SR, which exit the INTERCONNECT region on the east edge to form
36-line vertical routing track 6RN/6RS of FIG. 3, and hex bus
segments 6NL, 6VL, and 6SL, which exit the INTERCONNECT region on
the west edge to form 36-line vertical routing track 6LN/6LS of
FIG. 3.
[0077] Output Multiplexer OMUX
[0078] FIGS. 5, 6 and 7 show the output multiplexer (OMUX),
configurable logic element (CLE) and input multiplexer (IMUX),
respectively, of the embodiment shown in FIG. 3. All input and
output lines are physically located in the same relative positions
in FIGS. 3, 5, 6 and 7, thus input and output lines may readily be
traced between the figures. The PIP patterns shown in FIGS. 5 and 7
form only one of many possible patterns. The implementation of
these three blocks, and the connections between the blocks, may
differ widely in different embodiments of the invention, provided
that the three blocks are compatible with each other. For example,
the number of connections between the blocks may be increased or
decreased. Further, two or more of these blocks may be combined, or
one or both of the input or output multiplexers may be eliminated.
Although these variations are not further described herein, such
modifications are encompassed by the inventive concept. It will be
apparent to one skilled in the art after reading this specification
that the present invention may be practiced within these and other
architectural variations.
[0079] FIG. 5 shows details of the interior of output multiplexer
OMUX. As shown in FIG. 5, the input lines (the outputs of logic
block CLE) are selectively programmed to drive a series of eight
outputs (OUT0 to OUT7). Not all inputs can drive all outputs; a
selection of how many PIPs to provide and where they should be
located is typically made based on the trade-off constraints of
performance, silicon area, and routing flexibility.
[0080] Configurable Logic Element CLE
[0081] FIG. 6 shows the input and output signals for the
configurable logic element (CLE) of the embodiment shown in FIG. 3.
Many configurable logic elements can be used with the interconnect
structure of the invention. For example, pages 4-11 through 4-23 of
the Xilinx 1996 Data Book entitled "The Programmable Logic Data
Book", available from Xilinx, Inc., 2100 Logic Drive, San Jose,
Calif. 95124, also incorporated herein by reference, describe a
configurable logic element used in the XC4000 Series FPGA
architecture which is compatible with the invention. Pages 4-294,
4-295, and 13-13 through 13-15 of the same document, also
incorporated herein by reference, describe another compatible
configurable logic element, used in the XC3000 Series FPGA
architecture. Pages 4-188 through 4-190 of the same document, also
incorporated herein by reference, describe yet another compatible
configurable logic element, used in the XC5200 Family FPGA
architecture.
[0082] One CLE that can be used with the embodiment of FIG. 3 is
shown in FIGS. 6A and 6B. In this embodiment, the CLE is
implemented in two similar portions called "slices". To view the
entire CLE, FIGS. 6A and 6B, each showing one slice, must be viewed
together as shown in the key at the top of FIG. 6A. Programmable
(configurable) bits controlling the function of the CLE are shown
as small boxes containing an "x".
[0083] The details of one function generator compatible with the
interconnect structure of the invention are shown and described in
commonly assigned, co-pending U.S. application Ser. No. 08/786,818
entitled "Configurable Logic Block with AND Gate for Efficient
Multiplication in FPGAs" by Chapman et al, which is referenced
above and incorporated herein by reference.
[0084] One CLE compatible with the interconnect structure of the
invention is the CLE of FIGS. 6A and 6B, which includes four
function generators: F and G in FIG. 6B, and H and J in FIG. 6A.
Function generator F has four inputs F1, F2, F3, F4; function
generator G has four inputs G1, G2, G3, G4; function generator H
has four inputs H1, H2, H3, H4; and function generator J has four
inputs J1, J2, J3, J4. Each of function generators F, G, H, J also
has a data-in input DI and an output 0. In addition, each function
generator F, G has a write strobe WS input WSF, WSG, respectively,
generated in write strobe generator WB from clock input signal CKO
optionally inverted by multiplexer 69B, set/reset input signal SRO
optionally inverted by multiplexer 60B, and input signal BF
optionally inverted by multiplexer VF. Each function generator H, J
has a write strobe WS input WSH, WSJ, respectively, generated in
write strobe generator WA from clock input signal CK1 optionally
inverted by multiplexer 69A, set/reset input signal SR1 optionally
inverted by multiplexer 60B, and input signal BH optionally
inverted by multiplexer VH.
[0085] Function generators F, G, H, J of FIGS. 6A and 6B preferably
include novel features described by Bauer in commonly assigned U.S.
Pat. No. 5,889,413, entitled "Lookup Tables Which Double as Shift
Registers", issued Mar. 30, 1999, which is incorporated herein by
reference. Briefly, these function generators have the ability to
operate as shift registers as well as small RAMs and lookup tables.
Write strobe signal WS controls the shifting function and the RAM
write cycle. (In one embodiment, write strobe signal WS is
implemented as two separate control signals, as described by
Bauer.) Data-in port DI carries a data signal (in this embodiment
derived from input signals BF, BH, BG, BJ) for writing to an
addressed memory cell. When function generators F, G, H, J are
configured as shift registers as described by Bauer, the shift
register data input signal is taken from BF, BG, BH, BJ,
respectively. Write strobe generators WB, WA generate write strobe
signals WSF and WSG, WSH and WSJ, respectively. Signals WSF, WSG,
WSH, WSJ strobe data into their respective function generators
during a write cycle when the function generators are configured as
RAM, and cause a shift when the function generators are configured
as shift registers. The use of function generators as RAM is
described in pages 4-11 through 4-23 of the Xilinx 1996 Data Book
entitled "The Programmable Logic Data Book", referenced above and
incorporated herein by reference.
[0086] The function generator of this embodiment can therefore be
configured as a look-up table, a shift register, a 16.times.1 RAM,
half of a 16.times.1 dual-ported RAM (when the two function
generators in a slice are paired together), half of a 16.times.2
RAM, or half of a 32.times.1 RAM (when the two function generators
in a slice are paired together). Not all combinations of function
generator configurations are supported in a single slice. The
supported combinations are detailed below.
[0087] In this embodiment, write strobe signals WSF and WSG are
controlled by write strobe generator WB. A High (logic 1) pulse on
function generator input WS causes a write to occur to the function
generator look-up table, to either the first memory cell of the
look-up table (if configured as a shift register) or to an
addressed cell (if configured as a RAM). (See commonly assigned
U.S. Pat. No. 5,889,413 entitled "Lookup Tables Which Double as
Shift Registers", which is referenced above.)
[0088] Write strobe generator WB functions as follows in the
supported combinations of function generator configurations: a)
when function generators F and G are both configured as look-up
tables, write strobe signals WSF and WSG are held Low (logic 0); b)
when function generator G is configured as a 16.times.1 RAM or
shift register and function generator F is configured as a look-up
table, write strobe signal WSF remains Low while write strobe
signal WSG pulses High when SRO is active (Low or High, depending
on whether multiplexer 60B is inverting or not) and CKO makes the
proper transition (falling or rising, depending on whether
multiplexer 69B is inverting CK0 or not); c) when function
generators F and G are configured as a dual-ported 16.times.1 RAM,
a 16.times.2 RAM, or a pair of shift registers, write strobe
signals WSF and WSG pulse High together when SRO is active and CKO
makes the proper transition; d) when function generators F and G
are configured as a single 32.times.1 RAM, one but not both of
write strobe signals WSF and WSG pulses High, when SRO is active
and CKO makes the proper transition. The generated High pulse
occurs on write strobe signal WSF if multiplexer VF is
non-inverting and input signal BF is High or if multiplexer VF is
inverting and input signal BF is low, otherwise the High pulse
occurs on write strobe signal WSG. As can be seen from the above
description, SRO acts as a write enable and CKO acts as a clock to
a synchronous RAM or shift register, while BF serves as a fifth
address bit when the two function generators in a slice are
configured as a 32-bit RAM.
[0089] Write strobe signals WSH and WSJ are generated by write
strobe generator WA and controlled by input signals SR1, CK1, and
BH, in a corresponding fashion.
[0090] AND gates 61F, 61G, 61H, 61J and multiplexers 81F, 81G, 81H,
81J, CF, CG, CH, CJ implement multiplier and carry logic functions
as described in commonly assigned, co-pending U.S. patent
application Ser. No. 08/786,818 entitled "Configurable Logic Block
with AND Gate for Efficient Multiplication in FPGAs" by Chapman et
al, which is referenced above and incorporated herein by reference.
In FIGS. 6A and 6B, each of multiplexers 81F, 81G, 81H, 81J has
separate programmable memory cells that determine the multiplexer
output. In another embodiment, the two multiplexers in each slice
(81F and 81G, 81H and 81J) share memory cells and therefore have
the same programmed functionality.
[0091] In the embodiment of FIGS. 6A and 6B, each slice has a
separate carry chain. One carry chain is from input signal CIN0 to
output signal COUT0 and incorporates the outputs of function
generators F and G. The other carry chain is from input signal CIN1
to output signal COUT1 and incorporates the outputs of function
generators H and J. In one embodiment, the two carry chains are
implemented as described in U.S. Pat. No. 5,629,886, entitled
"Method and Structure for Providing Fast Propagation of a Carry
Signal in a Field Programmable Gate Array" by Bernard J. New,
issued May 13, 1997, which is referenced above and incorporated
herein by reference.
[0092] Each slice further includes five-input-function multiplexer
F5A, F5B and six-input-function multiplexer F6A, F6B. In FIG. 6A,
multiplexer F6A receives an input signal on west-going line F5W
from the output of multiplexer F5B in FIG. 6B. In FIG. 6B,
six-input-function multiplexer F6B receives an input signal on
east-going line F5E from the output of multiplexer F5A in FIG. 6A.
Multiplexer F6A receives a second input signal from multiplexer
F5A, and multiplexer F6B receives a second input signal from
multiplexer F5B. Multiplexer F5A receives inputs from outputs O of
function generators H and J. Multiplexer F5B receives inputs from
outputs O of function generators F and G.
[0093] The CLE of this embodiment receives four extra control
signals on lines BF, BH, BG, and BJ. These lines can be
programmably inverted using multiplexers VF, VH, VG, and VJ,
respectively, and control several useful functions. The five-input
function multiplexers F5A, F5B are controlled by lines BH, BF,
respectively. The six-input function multiplexers F6A, F6B are
controlled by lines BJ, BG, respectively. A user can form a
four-input multiplexer using multiplexer F5A and the outputs of
function generators H and J, with function generators H and J each
configured as a two-input multiplexer. Similarly, a four-input
multiplexer can be formed using multiplexer F5B and the outputs of
function generators F and G. A user can form an eight-input
multiplexer using either multiplexer F6A or multiplexer F6B
receiving inputs from both multiplexers F5A and F5B, each of which
is receiving outputs from its respective function generators.
Further, with multiplexer F5A, the memory cells in function
generators H and J can operate as a 32-bit RAM. With multiplexer
F5B, the memory cells in function generators F and G can operate as
a 32-bit RAM. Lines BF, BH, BG, BJ serve as multiplexer control
lines or RAM address lines, in addition to other functions as later
described.
[0094] Registers RX, RY, RZ, RV generate outputs XQ, YQ, ZQ, VQ,
respectively. Clock inputs to registers RX, RY, RZ, RV are
designated by open triangles with apexes pointing into these
registers. Clock enable inputs CE can be disabled using AND-gates
62A, 62B. (AND-gates 62A, 62B are controlled by a programmable
memory cell that provides one of the inputs to each AND-gate.)
Registers RX, RY, RZ, RV can be set or reset either synchronously
or asynchronously through set port S or reset port R. (The choice
of synchronous or asynchronous is made by a programmable memory
cell shared between the two registers in each slice.) Set/reset
input signals SRO, SR1 are controlled by multiplexers 60A, 60B and
AND-gates 67A, 67B. Inputs SRO, SR1 (if enabled by AND-gates 67A,
67B) can set or reset the registers. Set/reset control units R81B,
R82B, R81A, R82A are programmably controlled to either set or reset
registers RX, RY, RZ, RV, respectively. Registers RX, RY, RZ, RV
can also be configured as latches, the choice being made by a
programmable memory cell shared between the two registers in each
slice.
[0095] XOR gates SF, SG, SH, SJ generate the sum portion of an
addition or multiplication, as described in commonly assigned U.S.
Pat. No. 5,889,413 entitled "Lookup Tables Which Double as Shift
Registers", which is referenced above.
[0096] Multiplexers MF, MG, MH, MJ select between signals to place
onto output lines X, Y, Z, V, respectively. Multiplexers MF and MH
select between the related function generator output signal, sum
output signal, and five-input function multiplexer output signal.
Multiplexers MG and MJ select between the related function
generator output signal, sum output signal, and six-input function
multiplexer output signal. The function generator F, G, H, J output
signal is selected when a logical function of up to four inputs is
chosen. The five-input function multiplexer F5A, F5B output signal
is selected when one of a limited set of nine-input functions is
chosen, including any logical function of five inputs, a 4-to-1
multiplexer, and any other function that can be implemented as two
four-input functions feeding a 2-to-1 multiplexer. The six-input
function multiplexer F6A, F6B output signal is selected when one of
a limited set of 18-input functions is chosen, including any
logical function of six inputs, an 8-to-1 multiplexer, and any
other function that can be implemented as the output of two
five-input function multiplexers F5A, F5B feeding a 2-to-1
multiplexer. The sum output signal of XOR gates SF, SG, SH, SJ is
selected when an appropriate arithmetic operation such as addition,
subtraction or multiplication is implemented.
[0097] Multiplexers OF, OG, OH, OJ allow the carry chain to bypass
the related function generator. Multiplexers OF, OG, OH, OJ select
whether the respective carry multiplexer CF, CG, CH, CJ is
controlled by the function generator output signal O or whether the
carry chain bypasses the function generator by propagating the
carry-in signal to the next stage along the carry chain.
Multiplexers CA, CB allow additional access onto their respective
carry chains by selecting either a carry-in signal CIN0, CIN1
(buffered in this embodiment by inverters I121B and I122B, I121A
and I122A, respectively) or an input signal BF, BH as the starting
point for the carry chain in the CLE.
[0098] Multiplexers DF, DH select a signal to be loaded into
related registers RX, RZ either from the outputs of multiplexers
MF, MH, or from input signals BF, BH, respectively. Multiplexers
DG, DJ select a signal to be loaded into related registers RY, RV
either from the outputs of multiplexers MG, MJ, or from input
signal lines BG, BJ, respectively.
[0099] Multiplexers BB, BA are bypass multiplexers that can apply
carry-out signals COUT0, COUT1 to output lines YB, VB, or can
forward input signals BG, BJ to output lines YB, VB to route a
signal generated on one side of the CLE to a destination on the
other side of the CLE.
[0100] AND-gates BRB, BRA allow input signals BG, BJ to serve as
set/reset signals to registers RX, RY, RZ, RV, or alternatively
allows input signals BG, BJ to be decoupled from registers RX, RY,
RZ, RV so that input signals BG, BJ can be used for other purposes,
such as controlling multiplexers F6B, F6A or providing a DI signal
to function generators G, J, without setting or resetting the
registers. A logic 0 in the memory cells controlling AND-gates BRB,
BRA decouples lines BG, BJ from set/reset control units R81B, R82B,
R81A, R82A; while a logic 1 in the associated memory cell enables
AND-gates BRB, BRA to use the signals on BG, BJ to set or reset
registers RX, RY, RZ, RV as determined by set/reset control units
R81B, R82B, R81A, R82A.
[0101] Input Multiplexer IMUX
[0102] FIG. 7 shows details of the interior of input multiplexer
IMUX of the embodiment shown in FIG. 3. As shown in FIG. 7, the
input lines in this embodiment (G, 430, DIW, 428, DIE, 429) are
selectively programmed to drive a series of 34 outputs (431, 432,
436, LV0, LV6, LH0, LH6). 26 of these outputs drive CLE inputs 436,
two drive the data inputs 431 and two drive the enable inputs 432
of tristate buffers 445, two drive LV0 and LV6 (two lines of
vertical long line bus LVS), and two drive LH0 and LH6 (two lines
of horizontal long line bus LHE). Not all inputs can drive all
outputs; a selection of how many PIPs to provide and where they
should be located is typically made based on the trade-off
constraints of performance, silicon area, and routing flexibility.
In one embodiment, any IMUX output not connected to any IMUX input
line is connected through a pullup to the positive voltage
supply.
[0103] Routing Examples
[0104] FIGS. 8 and 9 show examples of signal paths implemented in
an array of tiles according to the embodiment shown in FIG. 3. The
labeling convention used in FIGS. 8 and 9 is that tiles are
identified by a row and column number based on the portion of the
array shown in the figure. Within a tile the line labels correspond
to the bus labels indicated in FIG. 2. However, in FIGS. 8 and 9,
the label indicates a single line rather than the entire bus. Only
lines used in the examples are shown and labeled. With this
labeling convention, some labels are used more than once. But no
ambiguity exists, because all tiles are identical and each tile has
a different tile number. The tile numbers distinguish between
labels used more than once in the same drawing.
[0105] FIG. 8 shows a routing example of a signal path using hex
and single-length lines. A signal is sourced by source logic block
L0 of tile 8-2, and programmably connected within the tile through
line OUT to hex segment 6N. Hex segment 6N turns north and becomes
vertical hex segment 47. This signal must fan out to logic blocks
at three destinations in tiles 5-3, 4-3, and 1-2. The signal passes
through tiles 7-2 through 3-2 on segments 46 through 42. At tile
5-2, the signal is on segment 44, where it fans out to segment 6v.
In tile 5-2, segment 6v is programmably connected to single-length
line E, which continues east into tile 5-3 as line W. In tile 5-3,
line W is an input to the first destination, logic block L1, and
also to switching structure 403, where it is programmably connected
to line N. Line N of tile 5-3 continues north into tile 4-3 as line
S, which is an input to the second destination, logic block L2. The
northern end of the vertical hex line is reached in tile 2-2, where
the signal is on segment 41. Segment 41 is programmably connected
to single-length line N, which continues north into tile 1-2 as
line S. In tile 1-2, line S is an input to the third destination,
logic block L3.
[0106] Thus in FIG. 8 a signal net is formed from source logic
block LO to destination logic blocks L0, L2 and L3. The connections
are fast because the PIP onto the hex line is buffered, there is a
low capacitance on the hex line due to the small number of PIPs on
the hex line, and each path from source to destination has a small
total number of PIPs inserting delay into the signal path. In the
example of FIG. 8, each signal path between source and destination
logic blocks requires at most three PIPs: one buffered PIP onto the
hex line and one or two unbuffered PIPs onto single-length lines.
(A logic block is the structure designated LB in FIG. 2.)
[0107] FIG. 9 shows a routing example of a signal path using a long
line, hex lines, and single-length lines. A signal is sourced by
source logic block L8 of tile 1-1, and must be routed to logic
blocks L4, L5, L6, and L7. The signal from logic block L8 is
programmably connected within tile 1-1 to one of the vertical long
lines LV accessible from that particular tile. Long line LV extends
southward for 18 tiles to tile 19-1, where long line LV is
programmably connected to hex segment 6S, then continues southward
to drive other hex lines (not shown) south of the portion of the
array shown in FIG. 9. (The gap of 18 tiles in FIG. 9 is included
to demonstrate that long line LV must carry the signal far enough
that a long line is more efficient than concatenated hex lines.)
From hex segment 6S in tile 19-1, the signal turns south and
becomes vertical hex segment 41. The signal passes through tiles
20-1 through 24-1 on segments 42 through 46. At tile 22-1, the
signal is on segment 44, where it fans out to segment 6V and
continues south to tile 25-1. From segment 6V in tile 22-1, the
signal makes a programmable connection to segment 6E (demonstrating
the connection of two perpendicular hex lines). The signal then
moves east on segment 37, traversing tiles 22-2 through 22-6 on
segments 36 through 32. At tile 22-4, the signal is on segment 34,
where it fans out to segment 6H and continues east to tile 22-5. In
tile 22-4, the signal makes a programmable connection between
segment 6H and single-length line S, which continues south into
tile 23-4 as line N. In tile 23-4, line N enters switching
structure 403 and connects to line E, which continues east into
tile 23-5 on line W, an input to the first destination, logic block
L4. From segment 32 in tile 22-6, the signal continues east into
tile 22-7 on segment 31, then turns north onto segment 6W. Segment
6W is programmably connected to line N, which continues north into
tile 21-7 as line S and is an input to the second destination,
logic block L5.
[0108] Returning to the vertical hex line, the signal on segment 46
in tile 24-1 continues south into tile 25-1 on segment 47, which
turns west on segment 6N. From segment 6N in tile 25-1, the signal
makes a programmable connection to segment 6E. The signal then
moves east on segment 37, traversing tiles 25-2 through 25-6 on
segments 36 through 32. From segment 32 in tile 25-6, the signal
continues east into tile 25-7 on segment 31, then turns north onto
segment 6W. Segment 6W is programmably connected to line S, which
continues south into tile 26-7 as line N and is an input to the
third destination, logic block L6. One further connection remains
to be made. From the south end of the vertical hexline, in tile
25-1, the signal on segment 6V makes an additional programmable
connection to line E. Line E continues east into tile 25-2 on line
W. In tile 25-2, line W enters switching structure 403 and connects
to line S, which continues south into tile 26-2 on line N, an input
to the fourth destination, logic block L7.
[0109] Thus in FIG. 9 a signal net is formed from source logic
block L8 to destination logic blocks L4, L5, L6 and L7. As in the
example of FIG. 8, the connections to long lines and hex lines are
buffered and the RC delay of the unbuffered connection is
minimized. In this example, these destinations required at most
four PIPs in the interconnect path between logic blocks: one or two
buffered PIPs onto hex lines, and one or two unbuffered PIPs onto
single-length lines. Yet 31 tiles were traversed between source
logic block L8 and destination logic block L6.
[0110] In all of the above routing examples, alternative paths are
available, many of which require more PIPs than the signal paths
used in these examples. If some of the interconnect lines on one
path are already used by other signals, an alternative path may be
used.
[0111] High Fanout Routing Examples
[0112] FIG. 10 shows a routing example of a high fanout control
signal, such as a clock (CK), clock enable (CE), set/reset (SR), or
tristate enable signal (432) delivered from a vertical long line to
a column of tiles. A signal can be placed onto a vertical long line
either from outside the tile array, or by using one of lines 437I
of FIG. 2. From vertical long line bus LV, in every twelfth tile
(TILE4) the high fanout control signal emerges on line 600. Line
600 drives two vertical hex lines, one of which (HI) extends north
six tiles from TILE4 and one of which (H2) extends south six tiles
from TILE4. From hex lines Hi and H2, lines 428 (shown in FIG. 2)
permit four bits of each vertical hex bus to drive the logic block.
The input multiplexer (IMUX) of FIG. 7 permits vertical hex lines,
through lines 428, to drive control signals CK, CE, SR, and 432
without passing through a single-length line, although signals on
other CLE inputs, such as function generator inputs, must always
pass through a single-length line to reach the CLE. Hex line Hi
drives the logic block in TILE4, plus the five tiles adjacent to
the north. Note that in the northernmost tile reached by hex line
Hi, line 428 does not make contact with hex line Hi. Instead,
contact is made with hex line H3, which originates 12 tiles north
of TILE4. Hex line H2 drives the six logic blocks adjacent to the
south of TILE4. North of hex line Hi, hex line H3 drives the
adjacent six logic blocks. South of hex line H2, hex line H4 drives
the adjacent six logic blocks. Each hex line drives a high fanout
control signal in six logic blocks. The tiles accessed by hex lines
HI and H2 (labeled 610 in FIG. 10) form a column of 12 tiles that
can be vertically repeated to access an entire column of an array
of repeating tiles.
[0113] FIG. 10 shows that for a high fanout control signal, there
is only one PIP between a signal on a vertical long line and any
destination logic block in the same column. (However, in the
preferred embodiment, there is an additional PIP added to the path
in input multiplexer IMUX.) Therefore, there is very little delay
on this path. Additionally, this distribution method has the same
number of PIPs and the same number of interconnect lines (one long
line, one hex line) in the path to each logic block input.
Therefore, there is very low skew on this path. Although the global
lines (G in FIG. 3) would typically be used for up to four clocks,
the distribution method of FIG. 10, by taking advantage of the
hierarchical nature of the interconnect scheme according to the
invention, produces an excellent additional clock distribution
network with high performance and low skew.
[0114] FIG. 11 shows a routing example of a high fanout function
generator input signal (or other non-control signal) delivered from
a vertical long line to a column of tiles. A signal can be placed
onto a vertical long line either from outside the tile array, or by
using one of lines 437I of FIG. 2. From vertical long line bus LV,
in every twelfth tile (TILE56) the high fanout function generator
input signal emerges on line 601. Line 601 drives two vertical hex
lines, one of which (H5) extends north six tiles from TILE4 and one
of which (H6) extends south six tiles from TILE4. From hex lines H5
and H6, line segments 6S, 6N and 6V are used in conjunction with
single-length lines N, S and switching structures 403 to drive the
logic blocks, similar to the interconnections in FIGS. 8 and 9. In
one embodiment, signals connecting to function generator inputs
inside the CLE must always pass through a single-length line to
reach the CLE. Hex line H5 drives, through single-length lines, the
logic blocks in tiles TILE5-7, TILE5-8, and TILE5-3. In addition,
hex line H5 drives, through single-length lines, the logic blocks
in the three southernmost tiles of the 12-tile column to the north
of column 611 (corresponding to tiles TILE5-10, TILE5-11, and
TILE5-12 of column 611). Hex line H6 drives, through single-length
lines, the logic blocks in tiles TILE5-4, TILE5-5, TILE5-6, and
TILE5-9. In addition, hex line H6 drives, through single-length
lines, the logic blocks in the two northernmost tiles of the
12-tile column to the south of column 611 (corresponding to tiles
TILE5-1 and TILE5-2 of column 611). Tiles TILE5-1 and TILE5-2 are
driven, through single-length lines, by hex line H7, which
originates 12 tiles north of TILE56. Tiles TILE5-10, TILE5-11, and
TILE5-12 are driven, through single-length lines, by hex line H8,
which originates 12 tiles south of TILE5-6. Each hex line drives a
high fanout function generator input signal in six logic blocks.
Thus, by cooperation between adjacent 12-tile columns 611, a
repeating pattern is formed that enables the distribution of
non-control signals to an entire column of an array of repeating
tiles.
[0115] Note that other connections of hex lines and single-length
lines are possible. For example, the logic block in TILE5-2 can be
driven by hex line 6V through a switching structure and
single-length line in TILE5-3 (not shown) and hence through an
additional switching structure and single-length line in TILE5-2 to
drive the logic block in TILE5-1. This or a similar arrangement can
be used in the northernmost implementation of 12-tile column 611,
to access the two northernmost tiles. Similar connections can be
made in the southernmost implementation of 12-tile column 611 to
access the three southernmost tiles.
[0116] FIG. 11 shows that for a high fanout function generator
input signal, there are either two or three PIPs between a signal
on a vertical long line and any destination logic block in the same
column: one from the long line to a hex line, one from the hex line
to a first single-length line, and sometimes one to a second
single-length line through the switching structure. (However, in
the preferred embodiment, there is an additional PIP added to the
path in input multiplexer IMUX.) Only the last one or two PIPs are
unbuffered. Therefore, there are no large unbuffered RC trees on
this net, no signal path has more than two unbuffered PIPs in
series, and the delay on each signal path is minimized.
[0117] FIG. 12 shows an example of how to combine the interconnect
of FIGS. 10 and/or 11 to deliver a high-fanout signal to an array
of tiles. A signal can be placed onto a horizontal long line either
from outside the tile array, or by using one of lines 438 of FIG.
2. The signal enters the portion of the array shown in FIG. 12 on a
line in horizontal long line bus LH. Long line bus LH traverses a
row of 12 tiles 612, in which it makes contact with 12 logic blocks
through hex lines and single-length lines. The horizontal
single-length lines connected to some horizontal hex lines can
drive vertical long lines through PIPs in the IMUX. From the logic
blocks in the 12 tiles of FIG. 12, lines 437I extend from the input
multiplexer (see FIG. 2) in the logic block to drive the vertical
long lines LV. Using lines 437I in each of the 12 tiles 612, the
signal on horizontal long line bus LH is transferred to 12 vertical
long lines LV. Columns of 12 vertical tiles (613) can be
implemented by either 12 tiles 610 of FIG. 10 (for control signals)
or 12 tiles 611 of FIG. 11 (for function generator or other
non-control inputs). Multiple 12-tile columns 613 can be placed to
increase the number of accessible tiles. In this manner, high
fanout signals can be distributed from an originating tile to any
tile in the array.
[0118] As an alternative to the distribution scheme of FIG. 12,
special tiles can be created that permit, for example, hex lines to
drive long lines, thus bypassing the single-length lines used in
FIG. 12. Such special tiles can be advantageously placed in rows
along the top and bottom edges of the tile array, or at intervals
within the array.
SUMMARY
[0119] The interconnect structure of the present invention offers
uniformly fast signals throughout the FPGA, due to the reduced
loading (limited number of PIPs) on each interconnect line, the
lack of large RC trees on signal nets, and the relatively small
number of PIPs between source and destination on each path. The
nearly uniform delays on various interconnect paths greatly
mitigate a common situation in FPGAs where a few signal paths, much
slower than the average signal path, significantly reduce the
overall performance of the circuit. Intermediate-length lines
enable the efficient implementation of localized circuits and ease
the burden on routing software. The limited number of PIPs, and the
judicious arrangement thereof, imparts a high degree of routing
flexibility per silicon area consumed. Further routing flexibility
is provided by the ability of logic block inputs to contact
interconnect lines located on any edge of the logic block. Thus it
will be understood that the present invention provides a new and
useful interconnect structure for FPGAs.
[0120] Those having skill in the relevant arts of the invention
will now perceive various modifications and additions which may be
made as a result of the disclosure herein of the preferred
embodiment. Accordingly, all such modifications and additions are
deemed to be within the scope of the invention, which is to be
limited only by the appended claims and their equivalents.
* * * * *