U.S. patent application number 11/557717 was filed with the patent office on 2007-04-19 for freeway routing system for a gate array.
This patent application is currently assigned to ACTEL CORPORATION. Invention is credited to Sheng Feng, Eddy C. Huang, Naihui Liao, Jung-Cheun Lien, Tong Liu, Chung-Yuan Sun, Weidong Xiong.
Application Number | 20070089082 11/557717 |
Document ID | / |
Family ID | 24624042 |
Filed Date | 2007-04-19 |
United States Patent
Application |
20070089082 |
Kind Code |
A1 |
Liu; Tong ; et al. |
April 19, 2007 |
FREEWAY ROUTING SYSTEM FOR A GATE ARRAY
Abstract
A freeway routing system for connecting input and output ports
of interface groups of tiles in a field programmable gate array.
The freeway system has a first set of routing conductors configured
to transfer signals between the input ports of interface groups in
a first tile of the field programmable gate array and the output
ports of interface groups of other tiles in the field programmable
gate array. The first set conductors include vertical conductors
that form intersections with horizontal conductors and programmable
interconnect elements located at the intersections of the vertical
conductors and horizontal conductors in a diagonal orientation to
connect each of the horizontal conductors to one of the vertical
conductors.
Inventors: |
Liu; Tong; (San Jose,
CA) ; Lien; Jung-Cheun; (San Jose, CA) ; Feng;
Sheng; (Cupertino, CA) ; Huang; Eddy C.; (San
Jose, CA) ; Sun; Chung-Yuan; (San Jose, CA) ;
Liao; Naihui; (Taipei, TW) ; Xiong; Weidong;
(San Jose, CA) |
Correspondence
Address: |
SIERRA PATENT GROUP, LTD.
1657 Hwy 395, Suite 202
Minden
NV
89423
US
|
Assignee: |
ACTEL CORPORATION
2061 Stierlin Court
Mountain View
CA
95134
|
Family ID: |
24624042 |
Appl. No.: |
11/557717 |
Filed: |
November 8, 2006 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
10077189 |
Feb 15, 2002 |
7137095 |
|
|
11557717 |
Nov 8, 2006 |
|
|
|
09654240 |
Sep 2, 2000 |
6476636 |
|
|
10077189 |
Feb 15, 2002 |
|
|
|
Current U.S.
Class: |
716/117 ;
716/121; 716/128; 716/134 |
Current CPC
Class: |
H03K 19/17736 20130101;
G06F 30/394 20200101; H03K 19/17732 20130101; G06F 30/34 20200101;
H03K 19/17796 20130101 |
Class at
Publication: |
716/016 |
International
Class: |
G06F 17/50 20060101
G06F017/50; H03K 17/693 20060101 H03K017/693 |
Claims
1. A method of routing the internal components in a FPGA tile
comprising: inputting a function netlist defining a user circuit;
optimizing said user circuit; placing user cells defining said user
circuit into said FPGA internal components; using a first set of
routing conductors to route said user circuit to interconnect said
internal components to implement said user circuit; and engaging a
freeway set of routing conductors to meet said user circuit routing
requirements; generating a programming bitstream defining said user
circuit; and programming said FPGA functional unit with said
bitstream to implement said user circuit.
2. A method of routing the internal components in a FPGA tile
comprising: inputting a function netlist defining a user circuit;
optimizing said user circuit; placing user cells defining said user
circuit into said FPGA internal components; using a first set of
routing conductors and a freeway set of routing conductors to route
said user circuit to interconnect said internal components to
implement said user circuit; generating a programming bitstream
defining said user circuit; and programming said FPGA functional
unit with said bitstream to implement said user circuit.
3. A method of providing a freeway interconnect structure in a FPGA
comprising: providing a plurality of FPGA tiles; providing a
plurality of functional groups (FGs) arranged in rows and columns
on each said FPGA tile; providing a plurality of interface groups
(IGs) surrounding said plurality of FGs such that one IG is
positioned at each end of each row and column, each of the IGs
having a first, second and third set of input ports and a first,
second and third set of output ports; providing a freeway set of
routing conductors configured to transfer signals to said first,
second and third input ports of IGs of one FPGA tile, and
configured to transfer signals from said first, second and third
output ports of IGs of all other FPGA tiles; said act of providing
a freeway set of routing conductors comprising: providing a
plurality of vertical conductors that form intersections with a
plurality of horizontal conductors; and providing programmable
interconnect elements located at said intersections in a diagonal
orientation on said FPGA tile.
4. The method of claim 3 further comprising: providing at least one
other FPGA tile configured in the same manner as said first FPGA;
and connecting said freeway set of routing conductors of each FPGA
tile to any adjacent FPGA tile's freeway set of routing
conductors.
5. The method of claim 4, further comprising: providing
programmable interconnect elements located at said connections
between adjacent FPGA tiles.
6. The method of claim 3, further comprising configuring said
freeway set of routing conductors to also transfer signals from
output ports of at least one IO.
7. The method of claim 3, further comprising configuring said
freeway set of routing conductors to also transfer signals from
output ports of at least one RAM.
8. An apparatus for routing the internal components in a FPGA tile
comprising: means for inputting a function netlist defining a user
circuit; means for optimizing said user circuit; means for placing
user cells defining said user circuit into said FPGA internal
components; means for using a first set of routing conductors to
route said user circuit to interconnect said internal components to
implement said user circuit; means for determining whether the
routing requirements of said user circuit have been met using said
first set of routing conductors; means for engaging a freeway set
of routing conductors to meet said user circuit routing
requirements; means for generating a programming bitstream defining
said user circuit; and means for programming said FPGA functional
unit with said bitstream to implement said user circuit.
9. An apparatus for routing the internal components in a FPGA tile
comprising: means for inputting a function netlist defining a user
circuit; means for optimizing said user circuit; means for placing
user cells defining said user circuit into said FPGA internal
components; means for using a first set of routing conductors and a
freeway set of routing conductors to route said user circuit to
interconnect said internal components to implement said user
circuit; means for generating a programming bitstream defining said
user circuit; and means for programming said FPGA functional unit
with said bitstream to implement said user circuit.
Description
PRIORITY CLAIM
[0001] This application a divisional of co-pending U.S. patent
application Ser. No. 10/077,189, filed Feb. 15, 2002, which is a
continuation-in-part of U.S. patent application Ser. No.
09/654,240, filed on Sep. 2, 2000, now issued as U.S. Pat. No.
6,476,636, which are hereby incorporated by reference as if set
forth herein.
BACKGROUND OF THE DISCLOSED SYSTEM
[0002] 1. Field of the Disclosed System
[0003] The present disclosed system relates to field-programmable
gate arrays, and more particularly, to a freeway architecture for
tileable field-programmable gate arrays.
[0004] 2. Description of the Related Art
[0005] A field-programmable gate array (FPGA) is an integrated
circuit (IC) that includes a two-dimensional array of
general-purpose logic circuits, called cells or logic blocks, whose
functions are programmable. The cells are linked to one another by
programmable buses. The cell types may be small multifunction
circuits (or configurable functional blocks or groups) capable of
realizing all Boolean functions of a few variables. The cell types
are not restricted to gates. For example, configurable functional
groups typically include memory cells and connection transistors
that may be used to configure logic functions such as addition,
subtraction, etc., inside of the FPGA. A cell may also contain one
or two flip-flops. Two types of logic cells found in FPGAs are
those based on multiplexers and those based on programmable read
only memory (PROM) table-lookup memories. Erasable FPGAs can be
reprogrammed many times. This technology is especially convenient
when developing and debugging a prototype design for a new product
and for small-scale manufacture.
[0006] FPGAs typically include a physical template that includes an
array of circuits, sets of uncommitted routing interconnects, and
sets of user programmable switches associated with both the
circuits and the routing interconnects. When these switches are
properly programmed (set to on or off states), the template or the
underlying circuit and interconnect of the FPGA is customized or
configured to perform specific customized functions. By
reprogramming the on-off states of these switches, an FPGA can
perform many different functions. Once a specific configuration of
an FPGA has been decided upon, it can be configured to perform that
one specific function.
[0007] The user programmable switches in an FPGA can be implemented
in various technologies, such as ONO antifuse, M-M antifuse, SRAM
memory cell, Flash EPROM memory cell, and EEPROM memory cell. FPGAs
that employ fuses or antifuses as switches can be programmed only
once. A memory cell controlled switch implementation of an FPGA can
be reprogrammed repeatedly. In this scenario, an NMOS transistor is
typically used as the switch to either connect or disconnect two
selected points (A, B) in the circuit. The NMOS' source and drain
nodes are connected to points A, B respectively, and its gate node
is directly or indirectly connected to the memory cell. By setting
the state of the memory cell to either logical "1" or "0", the
switch can be turned on or off and thus point A and B are either
connected or disconnected. Thus, the ability to program these
switches provides for a very flexible device.
[0008] FPGAs can store the program that determines the circuit to
be implemented in a RAM or PROM on the FPGA chip. The pattern of
the data in this configuration memory CM determines the cells'
functions and their interconnection wiring. Each bit of CM controls
a transistor switch in the target circuit that can select some cell
function or make (or break) some connection. By replacing the
contents of CM, designers can make design changes or correct design
errors. The CM can be downloaded from an external source or stored
on-chip. This type of FPGA can be reprogrammed repeatedly, which
significantly reduces development and manufacturing costs.
[0009] In general, an FPGA is one type of programmable logic device
(PLD), i.e., a device that contains many gates or other
general-purpose cells whose interconnections can be configured or
"programmed" to implement any desired combinational or sequential
function. As its name implies, an FPGA is "field-programmable",
meaning that the device is generally programmed by designers or end
users "in the field" via small, low-cost programming units. This is
in contrast to mask programmable devices which require special
steps in the IC chip-manufacturing process.
[0010] A field-programming unit typically uses design software to
program the FPGA. The design software compiles a specific user
design, i.e., a specific configuration of the programmable switches
desired by the end-user, into FPGA configuration data. The design
software assembles the configuration data into a bit stream, i.e.,
a stream of ones and zeros, that is fed into the FPGA and used to
program the configuration memories for the programmable switches.
The bit stream creates the pattern of the data in the configuration
memory ("CM") that determines whether each memory cell stores a "1"
or a "0". The stored bit in each CM controls whether its associated
transistor switch is turned on or off. End users typically use
design software to test different designs and run simulations for
FPGAs.
[0011] When an FPGA that has been programmed to perform one
specific function is compared to an application specific integrated
circuit (ASIC) that has been designed and manufactured to perform
that same specific function, the FPGA will necessarily be a larger
device than the ASIC. This is because FPGAs are very flexible
devices that are capable of implementing many different functions,
and as such, they include a large amount of excess circuitry that
is either not used or could be replaced with hard-wired connections
when performing one specific function. Such excess circuitry
generally includes the numerous programmable transistor switches
and corresponding memory cells that are not used in implementing
the one specific function, the memory cells inside of functional
groups, and the FPGA programming circuitry. This excess circuitry
is typically eliminated in the design of an ASIC which makes the
ASIC a smaller device. An ASIC, on the other hand, is not a
flexible device. In other words, once an ASIC has been designed and
manufactured it cannot be reconfigured to perform a different
function like is possible with an FPGA.
[0012] Designers of FPGAs (as well as other PLDs) often provide
their circuit designs to IC manufacturers who typically manufacture
the FPGAs in two different ways. First, an FPGA design may be
manufactured as its own chip with no other devices being included
in the IC package. Second, an FPGA design may be embedded into a
larger IC. An example of such a larger IC is a system on a chip
(SOC) that includes the embedded FPGA as well as several other
components. The several other components may include, for example,
a microprocessor, memory, arithmetic logic unit (ALU), state
machine, etc. In this scenario the embedded FPGA may be only a
small part of the whole SOC.
[0013] Whether an FPGA is to be manufactured as its own IC or
embedded into a larger IC (e.g., an SOC), the intended
application/use of the IC will determine the size and complexity of
the FPGA that is needed. In some scenarios a large FPGA is needed,
and in other scenarios a small FPGA is needed. Because conventional
FPGAs are typically designed for their intended application/use, an
FPGA designed to fulfill a need for a small FPGA must be
substantially redesigned for use where a larger FPGA is needed.
Therefore, it would be highly advantageous to have an FPGA
apparatus and method that could be easily adapted for use in both
ICs requiring large FPGAs and ICs requiring small FPGAs.
Furthermore, it would be highly advantageous if such FPGA apparatus
and method could be used in both the scenario where the FPGA is to
be manufactured as its own IC and the scenario where the FPGA is to
be embedded into a larger IC.
BRIEF SUMMARY OF THE DISCLOSED SYSTEM
[0014] The disclosed system relates to a freeway routing system for
a field programmable gate array (FPGA). The system comprising a
first FPGA tile. The first FPGA tile comprising a plurality of
functional groups (FGs) arranged in rows and columns; a plurality
of interface groups (IGs) surrounding the plurality of FGs such
that one IG is positioned at each end of each row and column, each
of the IGs having a first, second and third set of input ports and
a first, second and third set of output ports; a freeway set of
routing conductors configured to transfer signals to said first,
second and third input ports, and configured to transfer signals
from said first, second and third output ports; said freeway set of
routing conductors comprising: a plurality of vertical conductors
that form intersections with a plurality of horizontal conductors;
and programmable interconnect elements located at said
intersections in a diagonal orientation on said FPGA tile.
[0015] A better understanding of the features and advantages of the
present disclosed system will be obtained by reference to the
following detailed description of the disclosed system and
accompanying drawings which set forth an illustrative embodiment in
which the principles of the disclosed system are utilized.
BRIEF DESCRIPTION OF THE DRAWINGS
[0016] FIG. 1 is a block diagram illustrating an FPGA tile in
accordance with the present disclosed system.
[0017] FIGS. 2, 3A, 3B and 4 are block diagrams illustrating
various configurations of FPGA tiles in accordance with the present
disclosed system.
[0018] FIG. 5 is a block diagram illustrating in further detail the
FPGA tile shown in FIG. 1.
[0019] FIG. 6 is a block diagram illustrating in further detail one
of the functional groups (FGs) shown in FIG. 5.
[0020] FIG. 7 is a schematic diagram illustrating in further detail
the FG shown in FIG. 6.
[0021] FIG. 8 is a schematic diagram illustrating in further detail
the LGG selection circuit shown in FIG. 7.
[0022] FIG. 9 is a schematic diagram illustrating in further detail
the C/E/P/C selection circuit shown in FIG. 7.
[0023] FIG. 10 is a schematic diagram illustrating in further
detail one of the logic units (LU) shown in FIG. 7.
[0024] FIG. 11 is a block diagram illustrating in further detail
one of the interface groups (IGs) shown in FIG. 5.
[0025] FIG. 12 is a block diagram illustrating in further detail an
alternative version of one of the interface groups (IGs) shown in
FIG. 5.
[0026] FIG. 13 is a schematic diagram illustrating in further
detail a portion of the FPGA tile shown in FIG. 5.
[0027] FIG. 14 is a schematic diagram illustrating in further
detail a portion of the first set of routing conductors shown in
FIG. 13.
[0028] FIG. 15 is a schematic diagram illustrating in further
detail a portion of the first set of routing conductors shown in
FIG. 14.
[0029] FIGS. 16A and 16B are schematic diagrams illustrating the
second set of routing conductors included in the FPGA tile shown in
FIG. 5.
[0030] FIG. 17 is a schematic diagram illustrating in further
detail the global signal routing structure shown in FIG. 4.
[0031] FIG. 18 is a schematic diagram illustrating an optional
method of coupling two FPGA tiles together.
[0032] FIG. 19 is a simplified schematic illustrating the disclosed
freeway routing system.
[0033] FIG. 20 is a schematic drawing of one embodiment of the
disclosed system showing the logic symbols connecting two IGs on
two different FPGA tiles.
[0034] FIG. 21 is a flowchart illustrating one embodiment of the
disclosed method of routing an FPGA using the freeway routing
system.
DETAILED DESCRIPTION OF THE DISCLOSED SYSTEM
[0035] Referring to FIG. 1, there is illustrated a
field-programmable gate array (FPGA) tile 20 in accordance with the
present disclosed system. The FPGA tile 20 overcomes many of the
disadvantages of conventional FPGAs in that it can be easily
adapted for use in both integrated circuits (ICs) requiring large
FPGAs and ICs requiring small FPGAs. Furthermore, the FPGA tile 20
can be used where the FPGA is to be manufactured as its own IC and
where the FPGA is to be embedded into a larger IC (e.g., a system
on a chip (SOC)).
[0036] One feature of the FPGA tile 20 that makes it such a
flexible and adaptable device is that it is "tileable". As used
herein, the term "tileable" means that the FPGA tile 20 can be
combined with other FPGA tiles to form a larger FPGA. For example,
FIG. 2 illustrates an FPGA 22 that is formed by combining two FPGA
tiles 20. The two FPGA tiles 20 work together and communicate with
each other to form the larger FPGA 22. It should be well understood
that any number of FPGA tiles 20 may be combined in accordance with
the present disclosed system to form a larger FPGA. For example,
FIG. 3A illustrates an FPGA 24 that is formed by combining four
FPGA tiles 20.
[0037] In accordance with the present disclosed system, FPGA tiles
20 may be combined to form a larger FPGA that is to be manufactured
as its own IC or that is to be embedded into a larger IC. For
example, with respect to the later scenario, the FPGAs 22, 24 may
be embedded into SOCs. FIG. 3B shows an SOC 25 having the FPGA 24
embedded therein. The SOC 25 includes several other components. The
other components may include, for example, a read only memory (ROM)
27, a random access memory (RAM) 29, a microprocessor 31, and any
other components 33. It should be well understood that the specific
types of other components and the number of other components
included on the SOC 25 will vary greatly depending on the
particular application. With respect to the former scenario, FIG. 4
illustrates an FPGA 26 that has been manufactured as its own IC.
Specifically, the FPGA 26 includes four FPGA tiles 20 and four pad
rings 28, 30, 32, 34. The pad rings 28, 30, 32, 34 are used to
couple the FPGA tiles 20 to the IC package pins of the FPGA 26.
[0038] Also illustrated in FIG. 4 is a global signal routing
structure 36. The global signal routing structure 36 will be
described in more detail below, but in general, it is used to route
inter-tile global signals between the FPGA tiles 20. It should be
understood that the global signal routing structure 36 may be
included in any combination of FPGA tiles 20, including for example
the FPGAs 22, 24, in accordance with the present disclosed system.
Furthermore, the global signal routing structure 36 may be used
whether the combined FPGA tiles 20 are manufactured as their own IC
or embedded into a larger IC.
[0039] The FPGA tiles that are combined may be identical (as are
the tiles in the FPGAs 22, 24, 26), or of different sizes and
designs in accordance with the present disclosed system. An
advantage of using identical FPGA tiles is that it provides an
economical solution for providing FPGAs having sizes that are
appropriate for the intended uses/applications. Such a solution is
economical because only one FPGA tile needs to be designed, and
then the necessary number of tiles are combined to form an FPGA.
Additionally, it should be understood that an "FPGA tile" is
considered herein to be an FPGA. In other words, a single FPGA tile
20 can be used by itself to form an FPGA.
[0040] Referring to FIG. 5, there is illustrated some of the
internal components of the FPGA tile 20. Specifically, the FPGA
tile 20 includes several functional groups (FGs) 40 that are
surrounded by several interface groups (IGs) 42. The FGs 40 are
small multifunction circuits that are capable of realizing many or
all Boolean functions. The FGs 40 include look-up tables (LUTs) and
other circuits capable of realizing Boolean functions, as well as
memory cells that are used to configure logic functions such as
addition, subtraction, etc. The IGs 42 are used for interfacing the
FPGA tile 20 to other FPGA tiles or devices, or to pad rings for
connecting the FPGA tile 20 to IC package pins. In general, the
logic structure of the FPGA tile 20 is provided by the FGs 40 and
the IGs 42. Also included in the FPGA tile 20, but not shown in
FIG. 5, are several horizontal and vertical regular routing buses,
routing interconnect areas, switching transistors, and global
routing structure, all of which will be discussed below.
[0041] Referring to FIG. 6, an exemplary version of the FG 40
includes first set of inputs and output ports 44, intra-tile global
input and output ports 46, and inter-tile global input port 48. The
first set of inputs and output ports 44 carry input signals
EUI[0:4] (upper input) and EBI[0:4] (bottom input). These are the
basic inputs on which the Boolean functions and logic operation of
the FG 40 are performed. The first set of inputs and output ports
44 also include output signals Y[0:4]. These are the basic outputs
which carry the result of the Boolean functions and logic operation
of the FG 40. The first set of inputs and output ports 44 route
signals that are carried within the FPGA tile 20 on horizontal and
vertical regular routing buses and routing interconnect areas. If
any of the signals sent via first inputs and output ports 44 are to
be sent to a different FPGA tile, they are passed through an IG 42
as shown in FIG. 5.
[0042] The intra-tile global input and output ports 46 carry input
signals LGG[0:5] and output signal LINT. The LINT signal is carried
via a second set of routing resources. Specifically, in some
situations the first set of routing output signals Y[0:4] cannot be
sent to the intended FG 40 because the first set of routing
conductors and routing interconnect areas do not provide the
necessary connections. Or, in other situations, it may be desirable
not to use the system central processing unit (CPU) time to send a
signal through the first set of routing conductors and routing
interconnect areas. In these situations, the needed one of the
regular routing output signals Y[0:4] can be selected as the LINT
signal. The LINT signal is routed around the FPGA tile 20 by a
routing structure that is separate from the first set of routing
conductors and routing interconnect areas used to route the first
set of output signals Y[0:4]. Therefore, the LINT signal can be
sent to any FG 40 or IG 42 regardless of whether the first set of
routing conductors and routing interconnect areas provide the
necessary connections. The LINT signals are received by the FG 40
via input ports LGG[0:5] which are part of the second set of
routing conductors carrying the LINT signals. As its name implies,
the intra-tile global input and output port 46 carry signals that
are routed within the boundaries of the FPGA tile 20 and are
preferably not routed between FPGA tiles. The intra-tile global
inputs and output ports 46 and the generation and use of the LINT
signal will be discussed in more detail below.
[0043] The inter-tile global input port 48 carry the input signals
GG[0:7]. These signals are sent to every FG 40 in all FPGA tiles.
As will be discussed below, selected ones of the input signals
GG[0:7] are used to control the clock/enable/preset/clear (C/E/P/C)
inputs of flip-flops included in each FG 40.
[0044] Each FG 40 also includes a CL input 47 and a CO output 45.
The purpose of these input and output ports is to implement a carry
chain for faster utilization of logic resources.
[0045] Referring to FIG. 7, each FG 40 preferably includes four
logic units (LU) 50, 52, 54, 56. The LUs 50, 52, 54, 56 provide the
Boolean functions and logic operations of the FG 40. Each of the
LUs 50, 52, 54, 56 includes several inputs on which Boolean
functions and logic operations are performed. As shown, each of the
LUs 50, 52, 54, 56 includes twenty such inputs, but it should be
understood that the number of inputs may vary in accordance with
the present disclosed system. Specifically, each of the LUs 50, 52,
54, 56 receives signals through input ports UI[0:4] and BI[0:4]
which correspond to signals received through regular input ports
EUI[0:4] and EBI[0:4] discussed above. Furthermore, each of the LUs
50, 52, 54, 56 receives signals through input port GI[0:1]. The
input signals GI[0:1] are generated by the LGG selection circuit 58
which selects two of the input signals LGG[0:5]. As mentioned
above, the input port LGG[0:5] carries selected ones of the signals
traveling via the LINT bus. Finally, each of the LUs 50, 52, 54, 56
receives signals via input port JI[0:7]. The input signals via
input port JI[0:7] include two output signals from each of the LUs
50, 52, 54, 56. Thus, two output signals of each of the LUs 50, 52,
54, 56 are fed back to the inputs by way of JI[0:7].
[0046] Each of the LUs 50, 52, 54, 56 also includes a
clock/enable/preset/clear (C/E/P/C) input. This input is used to
control a flip-flop included inside each of the LUs 50, 52, 54, 56.
The C/E/P/C input is generated by a C/E/P/C selection circuit 60.
The C/E/P/C selection circuit 60 receives inputs EUI[0:4],
EBI[0:4], JI[0:7], GI[0:1], and GG[0:7]. From these signals, the
C/E/P/C selection circuit 60 selects four signals to be used as the
C/E/P/C signals.
[0047] Each of the LUs 50, 52, 54, 56 includes three outputs: Y,
JPO, and JO. These outputs carry the result of the Boolean
functions and logic operations performed by the LU. As already
mentioned, the JPO and JO outputs from each of the LUs 50, 52, 54,
56 are grouped together to form the JI[0:7] bus which is fed back
into the inputs of the LUs 50, 52, 54, 56. The Y output from each
of the LUs 50, 52, 54, 56 are grouped together to form Y[0:3] of
the Y[0:4] bus. The Y[0:4] signal is selected using a multiplexer
(or selection circuit) 62 to select from the JI[0:7] bus. An
advantage of selecting the Y[0:4] signal from the JI[0:7] bus is
that it adds flexibility to the device. In other words, the JO or
JPO output of any of the LUs 50, 52, 54, 56 can be chosen as the
Y[0:4] signal.
[0048] The LINT signal can be selected to be any one of the Y[0:4]
signals using a multiplexer 64. The use of the LINT signal adds a
tremendous amount of flexibility to the FPGA tile 20 because the
LINT signal can be sent to any of the FGs 40 or IGs 42. This is
because the LINT signal is routed around the FPGA tile 20 using a
routing structure that is separate and independent from that of the
Y[0:4] bus. In those situations where one of the signals on the
Y[0:4] bus cannot be sent to the desired destination or CPU time
needs to be conserved, the multiplexer 64 can be used to select
that one of the Y[0:4] signals as the LINT signal in order to send
the signal to the desired destination.
[0049] Referring to FIG. 8, one exemplary version of the LGG
selection circuit 58 includes two six-to-one multiplexers 66, 68.
Each multiplexer 66, 68 selects one of the input signals LGG[0:5].
The signal selected by multiplexer 66 becomes the signal GI[0], and
the signal selected by multiplexer 68 becomes the signal GI[1].
Because the LGG[0:5] bus is supplied to both multiplexers 66, 68,
it is possible for the signals GI[0] and GI[1] to be the same
signal. As mentioned above, the LGG[0:5] bus is a way for LINT
signals from any FG 40 or IG 42 to be sent to any FG 40 or IG 42.
The exemplary version of the LGG selection circuit 58 shown can
select any two of these LINT signals for sending to the LUs 50, 52,
54, 56 via the GI[0:1] bus. It should be understood, however, that
various different designs of the LGG selection circuit 58 may be
used to select various different numbers of signals from the
LGG[0:5] bus for the LUs 50, 52, 54, 56 in accordance with the
present disclosed system.
[0050] Referring to FIG. 9, there is illustrated an exemplary
version of the C/E/P/C selection circuit 60. The circuit 60
includes two twenty-to-one multiplexers 70, 72. Each multiplexer
70, 72 selects one signal from the buses EUI[0:4], EBI[0:4],
JI[0:7], and GI[0:1]. The signal selected by multiplexer 70 becomes
the signal GX[0], and the signal selected by multiplexer 72 becomes
the signal GX[1]. The bus GX[0:1] is supplied to the inputs of four
eleven-to-one multiplexers 74, 76, 78, 80. Also supplied to the
inputs of the four multiplexers 74, 76, 78, 80 are the GG[0:7] bus
and a ground signal bus. The signal selected by multiplexer 74
becomes the clock signal CLK, the signal selected by multiplexer 76
becomes the enable signal E, the signal selected by multiplexer 78
becomes the preset signal PRSTN, and the signal selected by
multiplexer 80 becomes the clear signal CLRN. The use of the four
multiplexers 74, 76, 78, 80 allows any of the signals GX[0:1],
GG[0:7], and ground to be selected as one of the C/E/P/C
signals.
[0051] As discussed above, the GG[0:7] bus is an inter-tile global
bus that is sent to every FG 40 in all FPGA tiles. The signals in
the GG[0:7] bus are often selected as the C/E/P/C signals. In
addition, the C/E/P/C selection circuit 60 advantageously allows
the two signals GX[0:1] to be selected as the C/E/P/C signals. And
the two signals in the GX[0:1] bus can be selected from any of the
buses EUI[0:4], EBI[0:4], JI[0:7], and GI[0:1]. Therefore, the
C/E/P/C selection circuit 60 allows numerous different signals to
be selected as the C/E/P/C signals which provides for a very
flexible device. It should be well understood, however, that the
illustrated C/E/P/C selection circuit 60 is just one exemplary
version of such a selection circuit and that various different
designs of the C/E/P/C selection circuit 60 may be used to select
various different signals in accordance with the present disclosed
system.
[0052] Referring to FIG. 10, there is illustrated an exemplary
version of the LU 50. The LUs 50, 52, 54, 56 are preferably all of
the same design, but it should be understood that such is not
required in accordance with the present disclosed system. The LU 50
includes two look-up tables (LUT) 82, 84. Each LUT 82, 84 includes
three inputs A, B, C, an output Y, and several internal memory
cells (not shown). The LUTs 82, 84 are configured by programming
the internal memory cells, and the specific setting of the internal
memory cells taken together provides a specific configuration for
each of the LUTs 82, 84. The configuration data used to program the
internal memory cells is generated by design software. Once a
specific configuration of the internal memory cells is decided
upon, the inputs A, B, C may be used to generate the output Y in
accordance with the desired logic function.
[0053] The inputs A, B, C of the LUT 82 are provided by the
twenty-to-one multiplexers 86, 88, 90, respectively, and the inputs
A, B, C of the LUT 84 are provided by the twenty-to-one
multiplexers 92, 94, 96, respectively. Each of the multiplexers 86,
88, 90, 92, 94, 96 receives as inputs the four buses EUI[0:4],
EBI[0:4], JI[0:7], and GI[0:1]. Therefore, three signals are
selected from these twenty signals as the inputs A, B, C for each
of the LUTs 82, 84.
[0054] When only a three input LUT is needed, the LUT 82 can be
used by itself and the LUT 84 is not needed. The Y output of the
LUT 82 can be sent directly to the JO output of the LU 50, or the Y
output of the LUT 82 can be sent to the Y output of the LU 50 by
using the two-to-one multiplexer 104 to select the Y output of the
LUT 82. Additionally, the Y output of the LUT 82 can be sent to the
JPO output of the LU 50 by using the two-to-one multiplexer 98 to
select the Y output of the LUT 82 and the two-to-one multiplexer
102 to select the output of the multiplexer 98. Thus, the
multiplexers 98, 102, 104 can be used to send the Y output of the
LUT 82 to any of the outputs Y, JO, JPO of the LU 50.
[0055] One purpose of including two LUTs 82, 84 in the LU 50 is so
that they can be used together to provide a four-input LUT.
Specifically, the Y output of the LUT 82 and the Y output of the
LUT 84 are connected to the inputs of the two-to-one multiplexer
98. The multiplexer 98 is controlled by the twenty-to-one
multiplexer 100 which receives as its inputs the four buses
EUI[0:4], EBI[0:4], JI[0:7], and GI[0:1]. The LUTs 82, 84 both
receive the first, second and third inputs at their A, B, C inputs,
and the multiplexer 100 is programmed to select the fourth input
and provide it to the control input of the multiplexer 98.
According to well-known Boolean logic techniques and the Shannon
Expansion, connecting the three-input LUTs 82, 84 in this manner
will simulate a single four-input LUT with the result being
generated at the output of the multiplexer 98. The output of the
multiplexer 98 can be provided to the JPO output of the LU 50 by
way of the multiplexer 102 or to the Y output of the LU 50 by way
of the multiplexers 102, 104.
[0056] A flip-flop 106 is preferably also included in the LU 50.
Specifically, the D input of the flip-flop 106 is connected to the
output of the multiplexer 98, and the Q output of the flip-flop 106
is connected to one of the inputs of the multiplexer 102. The
clock, enable, set and reset inputs of the flip-flop 106 are
connected to the corresponding signals of the C/E/P/C bus. One
purpose of the flip-flop 106 is to store the output data of the
multiplexer 98. This data can be stored and later sent to the JPO
output of the LU 50 by selecting the Q output with the multiplexer
102. The stored data can also be sent to the Y output of the LU 50
by selecting the JPO signal with the multiplexer 104. The inclusion
of the flip-flop 106 in the LU 50 adds to the flexibility of the
device in that output data of the LU 50 can be stored and used at a
later time.
[0057] Referring to FIG. 11, there is illustrated the internal
components of an exemplary version of one of the IGs 42. As
mentioned above, the IGs 42 are used for interfacing the FPGA tile
20 to other FPGA tiles or devices, or to pad rings for connecting
the FPGA tile 20 to IC package pins. The PI[0:9] bus is used to
receive data from outside of the FPGA tile 20 and pass the data to
the first set of routing conductors inside of the FPGA tile 20 via
the CI[0:9] bus. The CO[0:9] bus is used to receive data from the
first set of routing conductors inside of the FPGA tile 20 and pass
the data to outside of the FPGA tile 20 via the PO[0:9] bus.
[0058] Similar to the FG 40, the IG 42 also includes receives LINT
signals via the second set of routing conductors. Specifically, for
signals coming into the FPGA tile 20, the PI[0:9] bus is coupled to
ten, twelve-to-one multiplexers 110 that select the signals which
form the CI[0:9] bus. If, however, the first set of routing
conductors that is coupled to the CI[0:9] bus is unable to route a
signal to the desired location within the FPGA tile 20, the signal
can be selected as the "bLINT" signal by the twelve-to-one
multiplexer 112. The bLINT signal is routed by the same second set
of routing conductors that is used to the route the LINT signals
generated by the FGs 40. As such, the bLINT signal can be routed
along this second set of routing conductors to any of the FGs 40
and/or IGs 42 in the FPGA tile 20. This provides a way to route any
of the incoming signals PI[0:9] to any destination within the FPGA
tile 20 even if the first set of routing conductors carrying the
CI[0:9] bus does not provide a path to that destination.
[0059] Similarly, for signals leaving the FPGA tile 20, the CO[0:9]
bus is coupled to ten, twelve-to-one multiplexers 114 that select
the signals which form the PO[0:9] bus. If, however, the first set
of routing conductors that are coupled to the PO[0:9] bus are
unable to route a signal to the desired location outside of the
FPGA tile 20 (e.g., in a neighboring FPGA tile), the signal can be
selected as the "tLINT" signal by the twelve-to-one multiplexer
116. The tLINT signal is routed by a second set of routing
conductors that is used to route the signals from a second output
port LINT in the neighboring FPGA tile, and as such, the tLINT
signal can be routed to any of the FGs and/or IGs in the
neighboring FPGA tile. This provides a way to route any of the
outgoing signals CO[0:9] to any destination within the neighboring
FPGA tile even if the first set of routing conductors carrying the
PO[0:9] bus does not provide a path to that destination.
[0060] As mentioned above, the second set of routing conductors
within the FPGA tile 20 that carries LINT signals includes the
LGG[0:5] bus. Specifically, several LINT signals that need to be
routed around the FPGA tile 20 are grouped together and travel via
the LGG[0:5] bus. The LGG[0:5] bus is provided to every FG 40 and
IG 42 so that LINT signals can be sent to every device. The IGs 42
receive the LGG[0:5] bus from inside of the FPGA tile 20 at input
bLGG[0:5]. The bLGG[0:5] input is coupled to the six-to-one
multiplexers 118, 120, which have their outputs coupled to the
multiplexers 114, 116. In this way, any LINT signal generated
within the FPGA tile 20 can be sent outside of the FPGA tile 20 on
the PO[0:9] bus or as the tLINT signal by programming the
appropriate multiplexers 114, 116 to select the outputs of the
appropriate multiplexers 118, 120.
[0061] Similarly, an LGG bus in a neighboring FPGA tile can be
connected to the tLGG[0:5] input of the IG 42. The tLGG[0:5] input
is coupled to the six-to-one multiplexers 122, 124, which have
their outputs coupled to the multiplexers 110, 112. In this way,
any LINT signal generated outside of the FPGA tile 20 can be sent
inside the FPGA tile 20 on the CI[0:9] bus or as the bLINT signal
by programming the appropriate multiplexers 110, 112 to select the
outputs of the appropriate multiplexers 122, 124.
[0062] It should be understood that in certain situations the tLINT
signal and tLGG[0:5] bus may not be needed and can be eliminated
from the IG 42 in accordance with the present disclosed system.
This is illustrated in FIG. 12 which shows an alternative IG 42'
having no tLINT or tLGG[0:5] inputs. An example of a situation
where the tLINT signal and tLGG[0:5] bus are not needed is where
the IG 42' is used to couple the FPGA tile 20 to a pad ring, such
as one of the pad rings 28, 30, 32, 34. In this scenario the
PO[0:9] outputs and the PI[0:9] inputs will be coupled through the
pad ring to the IC package I/Os (i.e., the IC package input/output
pins). This is illustrated in the figure for the PI[0:9] bus in
that the PI[0:9] bus is coupled to several I/Os 101, 103, 105, 107,
109. There will typically be no second set of routing conductors in
the pad rings to make use of the tLINT signal and tLGG[0:5] bus.
The multiplexers 116, 122, 124 are eliminated, and the multiplexers
110, 112 are replaced with ten-to-one multiplexers 126, 128.
[0063] FIG. 12 also illustrates another important feature of the
present disclosed system. Specifically, in the scenario where a
side of the FPGA tile 20 is to be coupled to a pad ring for I/O
purposes, the I/Os 101, 103, 105, 107, 109 may be directly coupled
to the IG 42'. Furthermore, the I/Os 101, 103, 105, 107, 109 may be
directly coupled to the multiplexers 126, 128. In other words, the
I/Os 101, 103, 105, 107, 109 can be directly coupled to the
multiplexers 126, 128 without first connecting to a routing
channel. The connection to a routing channel is made after the IG
42' and multiplexers 126, 128. Thus, in this scenario, I/Os are
directly coupled to the multiplexers 126, 128 and then go on to the
routing channel or other routing resources.
[0064] It should also be understood that the IGs of two neighboring
FPGA tiles may be combined into one IG in accordance with the
present disclosed system. For example, with the IG 42 shown in FIG.
11, the PO[0:9], PI[0:9], tLGG[0:5] buses and the tLINT signal will
typically not be coupled to a separate IG of a neighboring tile,
but rather, these signals will be coupled into the routing
structures of the neighboring FPGA tile and the IG 42 will also
serve as the IG of the neighboring tile.
[0065] By way of example, any of the multiplexers (selection
circuits) discussed herein, such as for example multiplexers 86,
88, 90, 92, 94, 96, 98, 100, 102, 104, may comprise any of the
selection circuits described in copending U.S. patent application
Ser. No. 09/250,781, filed Feb. 12, 1999, now abandoned, entitled
"MULTI-DIMENSIONAL PROGRAMMABLE INPUT SELECTION APPARATUS AND
METHOD", invented by Chung-Yuan Sun, and commonly assigned
herewith, the full disclosure of which is hereby incorporated into
the present application by reference.
[0066] Referring to FIG. 13, there is illustrated a more detailed
diagram showing approximately one-quarter of an exemplary version
of the FPGA tile 20. The portion of the FPGA tile 20 that is
illustrated is designated by 129 in FIG. 5. It will be appreciated
by those of ordinary skill in the art that the remaining portions
of the FPGA tile 20 are mirror images of the illustrated portion
129.
[0067] FIG. 13 illustrates the first set of routing conductors of
the FPGA tile 20 that is used to route signals via input and output
ports 44 of the FGs 40. As discussed above, the input and output
ports 44 carry the signals to first input ports EUI[0:4], EBI[0:4],
and the signals from first output ports Y[0:4]. The first set of
routing conductors of the FPGA tile 20 also handles routing of the
CO[0:9] and CI[0:9] buses to and from the IGs 42.
[0068] The first set of routing conductors of the FPGA tile 20
includes first horizontal routing buses 150, 152, 154, 156 and
several vertical regular routing buses 158, 160, 162. By way of
example, the horizontal routing buses 150, 152, 154, 156 may each
include X number of lines, the horizontal routing bus 164 may
include A number of lines, the vertical routing buses 160, 162 may
each include Y number of lines, and the vertical routing bus 158
may include B number of lines. By way of further example, the
horizontal routing buses 150, 152, 154, 156 may each include 50
lines, the horizontal routing bus 164 may include 70 lines, the
vertical routing buses 160, 162 may each include 60 lines, and the
vertical routing bus 158 may include 70 lines.
[0069] In order to transfer data from one routing bus to another
routing bus or to an FG 40 or an IG 42, several routing
interconnect areas 130, 132, 134, 136, 138, 140, 142, 144, 146, 148
are included in the FPGA tile 20. The routing interconnect areas
130, 138, 144, 146 are used to transfer data from one of the
vertical routing buses to one of the horizontal routing buses. The
other routing interconnect areas 132, 134, 136, 140, 142, 148 are
used to transfer data to or from one of the IGs 42 or one of the
FGs 40 to or from one of the vertical routing buses or one of the
horizontal routing buses. In general, the routing buses and the
routing interconnect areas form the regular routing structure of
the FPGA tile 20.
[0070] FIG. 14 illustrates an exemplary structure for the routing
interconnect areas 130, 132, 134. In this example, the horizontal
routing bus 152 includes 50 lines and the vertical routing bus 160
includes 60 lines. It should be well understood, however, that the
specific number of lines in any of the routing buses may vary in
accordance with the present disclosed system. Furthermore, it
should be well understood that the specific number of lines in any
of the signal buses, such as for example EUI[0:4], EBI[0:4],
Y[0:4], LGG[0:5], GG[0:7], JI[0:7], GI[0:1], CO[0:9], CI[0:9],
PO[0:9], PI[0:9], may vary in accordance with the present disclosed
system.
[0071] Each of the routing interconnect areas 130, 132, 134
includes several transistor switches and corresponding memory cells
which are used for making the connections between the various
buses. Each transistor switch and memory cell is illustrated in the
figure as a circle (or bubble) drawn at the intersection of signal
lines to be coupled together. In order to illustrate this, FIG. 15
shows a detail of the circles designated by 170. The circles 172,
174, 176, 178, 180 includes transistor switches M2, M4, M6, M8,
M10, respectively. Each of the transistor switches M2, M4, M6, M8,
M10 has its source and drain coupled to intersecting signal lines
and its gate coupled to a corresponding memory cell 182, 184, 186,
188, 190. Each of the memory cells stores one bit of configuration
data to control whether or not its corresponding transistor switch
is turned on or off. When a transistor switch is turned on, the
lines to which it is connected are coupled together.
[0072] Referring back to FIG. 14, the operation of the first set of
routing conductors and the routing interconnect areas will be
described in further detail. One of the FGs 40 and its nearby
routing interconnect areas 130, 132, 134 are illustrated. The
Y[0:4] output port of the FG 40 is coupled to the routing
interconnect area 134, and the EBI[0:4] input port of the FG 40 is
coupled to the routing interconnect area 132. In a typical
scenario, the FG 40 outputs data onto the Y[0:4] bus and the
routing interconnect area 134 is used to transfer that data onto
bus 160. This is done by turning on the transistor switch inside
the illustrated circle (or bubble) at the appropriate intersection
of signal lines. Each transistor switch is turned on by programming
its corresponding memory cell. Similarly, the routing interconnect
area 132 is used to transfer data from bus 152 onto the EBI[0:4]
bus of the FG 40. Again, this is accomplished by programming the
memory cell to turn on the transistor switch at the appropriate
intersection. The routing interconnect area 130 is used to transfer
data from bus 160 onto bus 152, again by programming the memory
cell to turn on the transistor switch at the appropriate
intersection.
[0073] As illustrated, the routing interconnect areas 130, 132, 134
include transistor switches and memory cells at many intersections
of signal lines, but not at all intersections. (Again, the
transistor switches and memory cells are inside the illustrated
circles or bubbles). When a transistor switch and memory cell is
included at every intersection of signal lines, this is known as a
"fully populated" routing interconnect portion. A fully populated
routing interconnect portion is shown in the routing interconnect
area 132 at 192. It should be well understood that the specific
intersections chosen to have a transistor switch and memory cell,
and which areas are fully populated (if any), may vary widely in
accordance with the present disclosed system. In other words, many
different patterns of transistor switches and memory cells may be
used in the routing interconnect areas 130, 132, 134 in accordance
with the present disclosed system.
[0074] The other routing interconnect areas 136, 138, 140, 142,
144, 146, 148 in the FPGA tile 20 are similar to the routing
interconnect areas 130, 132, 134. Some, however, will have
different numbers of signal lines and intersections. For example,
the routing interconnect areas 136, 144 may have a greater number
of signal lines in the horizontal bus 164 due in part to ten
signals (instead of five) being transferred to the CO[0:9] bus of
the IGs 42. Similarly, the routing interconnect areas 146, 148 will
have fewer inputs and/or outputs because they are located at the
end of a row.
[0075] The number of transistor switches used and their positioning
in the FPGA tile 20 can change in accordance with the present
disclosed system. The specific arrangement and positioning of IGs,
FGs, routing buses, routing interconnect areas, and switching
transistors within routing interconnect areas will vary greatly
depending on the particular application. It should be understood
that the configurations illustrated in the figures herein are
example configurations.
[0076] FIGS. 16A and 16B illustrate the second set of routing
conductors of the FPGA tile 20. As discussed above, the second set
of routing conductors is separate from the first set of routing
conductors and routing interconnect areas used to route the output
signals Y[0:4]. The second set of routing conductors is used for
routing signals via input and output ports 46 which include input
port LGG[0:5] and output port LINT. The LINT routing structure is a
second set of routing conductors that can be used to send a signal
in situations when the first set of routing conductors cannot be
used to send a signal to the intended destination. This may occur
because a transistor switch and memory cell may not have been
placed at the needed intersection of signal lines in one or more of
the first set of routing conductors regular routing interconnect
areas 130, 132, 134, 136, 138, 140, 142, 144, 146, 148. If the
needed connections cannot be made with the first set of routing
conductors interconnect areas, the signal can be sent to any of the
FGs 40 and/or IGs 42 by selecting the needed one of the output
signals Y[0:4] as the LINT signal as described above and sending it
over the second set of routing conductors.
[0077] The signals sent via the LINT output port of six devices,
which can be any combination of FGs 40 and/or IGs 42, are assembled
to form the LGG[0:5] bus. While the LGG[0:5] bus is illustrated as
a six-signal bus, it should be well understood that the number of
signals in the LGG bus may vary in accordance with the present
disclosed system. Furthermore, the LGG bus is made up of LINT
signals from the FGs 40 and bLINT signals from the IGs 42. As
discussed above, the "b" designation on the bLINT signals of the
IGs 42 indicates that these signals are internal to the FPGA tile
20 as opposed to the external tLINT signals. Therefore, when
discussing the formation of the LGG[0:5] bus, use of the term
"LINT" will generally be intended to cover both the LINT signal
generated by the FGs 40 and the bLINT signal generated by the IGs
42.
[0078] The LGG[0:5] bus is assembled as follows. The first column
of IGs 42 has their bLINT outputs coupled to an eight-signal bus
200. Six, eight-to-one multiplexers 202 are coupled to bus 200. The
output of each of the multiplexers 202 is coupled to a
corresponding tri-state buffer 204. The outputs of the tri-state
buffers 204 are coupled to the LGG[0:5] bus. In the second column
of FGs 40 and two IGs 42, the LINT output of each FG 40 and the
bLINT output of each IG 42 are coupled to a ten-signal bus 206.
Six, ten-to-one multiplexers 208 are coupled to bus 206. The output
of each of the multiplexers 208 is coupled to a corresponding
tri-state buffer 204, which in turn are coupled to the LGG[0:5]
bus.
[0079] In a similar manner, the last column of IGs 42 has their
bLINT outputs coupled to an eight-signal bus 210. Six, eight-to-one
multiplexers 202 and tri-state buffers 204 couple bus 210 to the
LGG[0:5] bus. In the second to last column of FGs 40 and two IGs
42, the LINT output of each FG 40 and the bLINT output of each IG
42 are coupled to a ten-signal bus 212, which in turn is coupled to
the LGG[0:5] bus via six, ten-to-one multiplexers 208 and tri-state
buffers 204. It should be understood that the rest of the FGs 40
and IGs 42 in the FPGA tile 20 that are not shown in FIGS. 16A and
16B are connected to the LGG[0:5] bus in a similar manner.
[0080] During operation, each of the multiplexers 202, 208 selects
a LINT signal from its input bus, that is, the respective one of
buses 200, 206, 210, 212. Up to six of these selected LINT signals
may be placed onto the LGG[0:5] bus. This is done by placing six of
the tri-state buffers 204 into a conducting state and placing the
remaining tri-state buffers into a non-conducting state. The six
tri-state buffers 204 that are placed into a conducting state
should correspond to the multiplexers 202, 208 that have selected
the desired LINT signals.
[0081] The LGG[0:5] bus is routed to all of the FGs 40 and IGs 42
in the FPGA tile 20. In this way, a LINT signal from any of the FGs
40 and IGs 42 can be sent to any of the FGs 40 and IGs 42,
independent of the first set of routing conductors.
[0082] Referring back to FIGS. 16A and 16B, FIGS. 16A and 16B also
show the routing of the GG[0:7] bus. As discussed above, the
GG[0:7] bus forms the inter-tile global signals 48. These signals
are sent to every FG 40 in all FPGA tiles. Thus, the GG[0:7] bus
extends through the border of the FPGA tile 20 as indicated at 214
so that it can go to other FPGA tiles. The GG[0:7] bus extends
through the border of the FPGA tile 20 without going through an IG
42. As discussed above, selected ones of the input signals GG[0:7]
may be used to control the clock/enable/preset/clear (C/E/P/C)
inputs of flip-flops included in each FG 40. It should be
understood that the GG[0:7] bus may include more or fewer signals
in accordance with the present disclosed system.
[0083] Referring to FIG. 17, the global signal routing structure 36
is illustrated in more detail. As mentioned above, the global
signal routing structure 36 is used to route inter-tile global
signals between the FPGA tiles 20. For example, the GG[0:7] bus
(which forms the inter-tile global signals 48) is included in the
global routing structure 36 and is shown connecting to all four
FPGA tiles 20. The GG[0:7] bus can be coupled to inputs 220, 222 to
send signals that are to be sent on the GG[0:7] bus. Selected ones
of the inputs 220, 222 can be coupled to the GG[0:7] bus by means
of transistor switches and memory cells (such as is described
above), examples of which are indicated by circles 224, 226.
[0084] As shown, the global signal routing structure 36 also
includes bus 230 to connect to the pad ring.
[0085] When two FPGA tiles 20 are coupled together, the IG outputs
of one tile are typically coupled directly to the IG inputs of the
other tile. Or, as discussed above, the IGs of the two tiles can be
combined as one IG. FIG. 18 illustrates another option for coupling
two FPGA tiles 20 together. Specifically, an intermediate routing
track 240 may be used. The output PO[0:9] bus of the IG 42 of one
tile 20 is coupled to the track 240, and the input PI[0:9] bus of
the IG 42 of the other tile 20 is coupled to the track 240 at a
different location. The connections to the track 240, for example
at points 242, 244, 246, may be by way of hard wired connections
for by way of transistor switches and memory cells as described
above. The later would, of course, be programmable. It should be
understood that the use of the intermediate routing track 240 is
optional.
[0086] The full disclosures of the following copending U.S. patent
applications are hereby incorporated into the present application
by reference: U.S. patent application Ser. No. 09/231,998, filed
Jan. 15, 1999, now abandoned, entitled "STORAGE CELLS UTILIZING
REDUCED PASS GATE VOLTAGES FOR READ AND WRITE OPERATIONS", and
commonly assigned herewith; U.S. patent application Ser. No.
09/281,008, filed Mar. 30, 1999, now issued as U.S. Pat. No.
6,601,696, entitled "METHOD AND APPARATUS FOR INCREASING THE SPEED
OF FIELD-PROGRAMMABLE GATE ARRAYS", and commonly assigned herewith;
U.S. patent application Ser. No. 09/285,563, filed Apr. 2, 1999,
now issued as U.S. Pat. No. 6,446,242, entitled "METHOD AND
APPARATUS FOR STORING A VALIDATION NUMBER IN A FIELD-PROGRAMMABLE
GATE ARRAY", and commonly assigned herewith; and U.S. patent
application Ser. No. 09/318,198, filed May 25, 1999, now issued as
U.S. Pat. No. 6,211,697, entitled "INTEGRATED CIRCUIT THAT INCLUDES
A FIELD-PROGRAMMABLE GATE ARRAY AND A HARD GATE ARRAY HAVING THE
SAME UNDERLYING STRUCTURE", and commonly assigned herewith.
[0087] FIG. 19 illustrates a disclosed "freeway" routing structure.
This disclosed routing structure allows for high performance
routing on long distance nets. FIG. 19 shows the structure of the
freeway.
[0088] FIG. 19 shows the freeway routing structure through a system
of 16 FPGA tiles (which may also be referred to as "PEGs") that may
make up an FPGA. Since this system is tileable, any number of PEGs
may be used. The freeway signals are sent via a set of horizontal
and vertical routing conductors that can be used to send a signal
in situations when the other sets of routing conductors cannot be
used to send a signal to the intended destination. This occurs
because a signal is sent to a FG in another PEG or IO/RAM. If the
needed connections cannot be made with the other sets of routing
conductors, the signal can be sent between the IGs of any of the
PEGs by using the disclosed freeway routing structure illustrated
in FIG. 19. Further, the disclosed freeway routing structure may
also be used to connect the IGs of PEGS to the IGs of IOs or the
IGs of RAMS.
[0089] Referring again to FIG. 19, PEG 252 is one of the 16 PEGs of
the illustrated example FPGA. Arranged in relation to PEG 252 are
multiple freeway programmable interconnects 254 arranged in a
diagonal orientation, arranged from the upper left corner of the
PEG 252 to the lower right corner of the PEG 252. This orientation
may be altered as the need changes. Between each PEG are a row of
programmable vertical interconnects and a column of programmable
horizontal interconnects illustrated by exemplar row 256 of
vertical interconnects and by exemplar column 258 of horizontal
interconnects. The freeway interconnects are arranged in a similar
fashion with respect to all of the PEGs. Two exemplar IGs 260 and
262 are shown on the PEG 252. However, as discussed previously,
each PEG is made up of an array of FGs surrounded by IGs, which are
not shown in this figure for simplicity. At each diagonal
interconnect, a vertical track may be operatively coupled to a
horizontal track when a transistor switch is activated, and/or a
horizontal track may be operatively coupled to a vertical track
when a transistor switch is activated. The vertical interconnects
256 and horizontal interconnects 254 couple IGs of adjacent PEGs,
or other devices, to each other when their transistors switches are
activated.
[0090] As illustrated, the freeway routing conductors interconnect
areas 254, 256, and 258 include transistor switches and memory
cells at many intersections of signal lines, but not at all
intersections. (Again, the transistor switches and memory cells are
inside the illustrated circles or bubbles). When a transistor
switch and memory cell is included at every intersection of signal
lines, this is known as a "fully populated" routing interconnect
portion.
[0091] The number of transistor switches used and their positioning
in the FPGA tile 20 can change in accordance with the present
invention. The specific arrangement and positioning of IGs, FGs,
routing buses, routing interconnect areas, and switching
transistors within routing interconnect areas will vary greatly
depending on the particular application. From this disclosure, it
will be apparent to persons of ordinary skill in the art that the
configurations illustrated in the figures herein are example
configurations.
[0092] FIG. 20 is a schematic drawing showing an embodiment of the
communication structures between two IGs, each on a separate PEG.
The PEG on the left is referred to as the West PEG and the PEG on
the right is referred to as the East PEG. The IG on the West PEG
has a FTOUT[0:9] which is coupled to the freeway tracks. The
freeway tracks are shown as three five channel tracks: PEG FT[0:4],
PEG FT[5:9] and PEG FT[10:14] .These freeway tracks are coupled to
the freeway routing structure shown in FIG. 19. There are shown six
programmable switches, each represent five coupling switches, two
on each of the three sets five channel tracks. The freeway tracks
are coupled to the IG on the East PEG via the FTIN[0:9]. FTIN[0:9]
is coupled to the 24 to 1 multiplexer, which in turn is coupled to
the LINT resource and CI[0:9] resource. Similarly FTOUT[0:9] of the
East PEG IG and FTIN[0:9] of the West PEG IG are coupled to the
freeway tracks.
[0093] Still referring to FIG. 20, the SLINT routing resources or
SL[0:3] is coupled to the 2 to 1 multiplexer. The multiplexer is
coupled to PO[0:13]. PO[0:13] is coupled in parallel to PI[0:13]
and to the 14 to 1 multiplexer. Multiplexer is coupled to
FTOUT[0:9].
[0094] FIG. 21 discloses a method of routing a FPGA, made up of at
least one PEG, using the disclosed freeway routing structure. A
method of routing an FPGA in accordance with the present disclosed
system begins at input act 300. At input act 300, a user inputs a
function netlist that defines a user circuit. The user circuit will
define the programmable connections to be programmed to implement
the desired user function. These programmable connections include
programmable interconnections of the FPGA array, as well as the
connections within internal components included within the
FPGA.
[0095] Internal components, as used in the present invention are
defined as, for example, configurable functional groups, interface
groups, selection circuits, multiplexer circuits, memory cells,
look up tables, PLA blocks, non-volatile blocks, DRAM blocks, ROM
blocks, RAM, FIFO, PLL, DLL, FLASH memory, multipliers, DSP cores,
MPU cores, DAC, ADC, and any other internal components as known by
those skilled in the art. Programming the FPGA causes not only the
programmable interconnections of the FPGA to be configured, but
also causes the connections within the internal components included
within the FPGA to be connected which ultimately results in lines
being coupled together or not being coupled together, due to
transistors being turned on and off.
[0096] At act 304, the user circuit is optimized. Next at act 308,
the user cells defining the optimized user circuit are placed in
the FPGA. At act 312, the circuit is routed. The routing has two
steps. First step is to route all signals among PEGs, IOs and RAMs
ports. The freeway routing conductors are used to make the
connection. The second step is to route signals among FGs and/or
IGs in a PEG. Next, at query 316, it is determined whether the
routing requirements of the user circuit are met using the
previously disclosed set of routing conductors and the freeway
routing conductors. If the user circuit routing requirements are
not met using the previously disclosed set of routing conductors
and the freeway routing conductors, more routing algorithms are
explored back at act 312. The freeway routing conductors are
employed in addition to the previously disclosed set of routing
conductors and may be used when the routing requirements cannot be
met with previously disclosed set of routing conductors or may be
used in addition with the previously disclosed set of routing
conductors.
[0097] Whether the user circuit routing requirements are met using
the previously disclosed set of routing conductors or the freeway
routing conductors, at act 324 the bitstream is generated. At act
328, the FPGA is programmed with the user circuit.
[0098] From this disclosure, it will be apparent to persons of
ordinary skill in the art that various alternatives to the
embodiments of the disclosed system described herein may be
employed in practicing the disclosed system. It is intended that
the following claims define the scope of the disclosed system and
that structures and methods within the scope of these claims and
their equivalents be covered thereby.
* * * * *