Device geometry
Spartan 3 geometry is largely the same as Virtex 2. The changes are:
in addition to the primary vertical clock spine, there are now two secondary vertical clock spines that distribute clocks to
GCLKH
tiles; there is also the new horizontal clock spine that connects them togetherthe
TERM.*
tiles no longer have multiplexers, and thus are no longer present in the bitstreamwhen more than 2 BRAM columns are present, only the leftmost and rightmost ones have DCMs; the others have empty DCM stubs
the
CLKB
andCLKT
tiles contain 4BUFGMUX
primitives each, making for 8 global clocks total; this eliminates muxes from clock distributionPCILOGIC
is removed
Spartan 3E includes more changes:
BRAM columns no longer take up the whole height of the device; instead, a BRAM column is a 4-CLBs-wide hole in the CLB grid which spans most of the height of the device
DCMs are no longer located at the top and bottom of BRAM columns; instead, they are located in 4×4 holes in the CLB grid, close to the
CLK[LRTB]
tilesin addition to the
CLKB
andCLKT
tiles, there are newCLKL
andCLKR
tiles, with 8BUFGMUX
each, located on the ends of the horizontal clock spine; the clocks are usable only in the left and right half of the device, respectively; theGCLKVM
tiles now contain per-device-quadrant muxes that can select 8 clocks from the set of clocks driven byCLK[LR]
andCLK[BT]
tilesthe
CLK[LR]
tiles also contain the newPCILOGICSE
primitive that contains a bit of hard logic helping with PCI implementationon larger devices, the
LV.*
andLH.*
long lines are optionally split in the middle; newLLV.*
andLLH.*
tiles are added that contain the buffers that can optionally join the two segments together; they are located on the horizontal clock spine and primary vertical clock spine
Spartan 3A includes the following changes to Spartan 3E geometry:
the BRAM columns now span almost the entire height of the device, with no CLBs above or below, but with IOI tiles still present
the 4×4 DCM holes are sometimes located within BRAM columns instead of CLB grid; a DCM replaces one BRAM
The xc3s50a
is a special small Spartan 3A device with unusual geometry:
there are no secondary clock spines
there is only one clock row
the role of
GCLKVM
multiplexer tiles is taken by the newCLKC_50A
tile in the middle of the device, which directly drives the single clock row
Spartan 3A DSP includes the following changes to Spartan 3A geometry:
BRAM columns are now 3 IOI tiles wide instead of 4
a new type of column is introduced, the DSP column; like BRAM, it has IOI tiles on top and bottom, but is only one IOI tile wide; a DSP column is always located immediately to the right of BRAM column
the DCM holes in BRAM column also extend to the DSP column
General structure
The Spartan 3 devices are made of a rectangular grid of interconnect tiles.
Interconnect rows come in three kinds:
bottom IOI row (the bottommost row)
top IOI row (the topmost row)
general row (all other rows)
Interconnect columns come in several kinds:
left IOI column (the leftmost column)
contains
INT.CNR
and theLL
(lower left) corner tile in the bottom IOI rowcontains
INT.CNR
and theUL
(upper left) corner tile in the top IOI rowcontains
INT.IOI
and anIOI
tile in remaining rows
right IOI column (the rightmost column)
contains
INT.CNR
and theLR
(lower right) corner tile in the bottom IOI rowcontains
INT.CNR
and theUR
(upper right) corner tile in the top IOI rowcontains
INT.IOI
and anIOI
tile in remaining rows
CLB columns (most of the inner columns)
contains
INT.IOI
and anIOI
IO tile in the bottom and top IOI rowscontains
INT.CLB
and aCLB
tile in the remaining rows (except for holes on Spartan 3E and up)
(plain Spartan 3) BRAM columns (some of the inner columns)
contains
INT.DCM.*
and aDCM
tile in the bottom and top IOI rowscontains
INT.BRAM.S3
in the remaining rows, and aBRAM
tile every 4 rows
(Spartan 3E) BRAM columns, which actually take up 4 interconnect columns
the top and bottom of each of the 4 interconnect columns is identical to a CLB column
the bottom BRAM row contains nothing in the leftmost column (vertical and horizontal interconnect lines pass right through it), and
TERM.BRAM.N
in the other 3 columns, terminating the vertical interconnect but passing through horizontal interconnectlikewise, the top BRAM row contains nothing in the leftmost column, and
TERM.BRAM.S
in the other 3 columnsthe rows between the bottom and top BRAM row contain
INT.BRAM.S3E
tiles in each row of the leftmost column, and aBRAM
tile every 4 rows
(Spartan 3A) BRAM columns, which actually take up 4 interconnect columns
the top IOI and bottom IOI row of each of the 4 interconnect columns contains an
INT.IOI
andIOI
tiles just like CLB columnsthe remaining rows contain
INT.BRAM.S3A.*
in every row of the leftmost column, andBRAM
every 4 rows (except for DCM holes)
(Spartan 3A DSP) BRAM columns, which actually take up 3 interconnect columns
like Spartan 3A, but with only 3 columns instead of 4 and with
INT.BRAM.S3ADSP
tiles
(Spartan 3A DSP) DSP columns
contains
INT.IOI
and anIOI
IO tile in the bottom and top IOI rowscontains
INT.BRAM.S3ADSP
in the remaining rows, and aDSP
tile every 4 rows
The interconnect contains holes; depending on the type of the hole, some interconnect lines are either bounced back at the edges (via TERM.*
tiles), or pass through the hole unaffected. Whenever interconnect skips across a hole, the hole is not counted towards the conceptual length of the interconnect lines — eg. a HEX
line will always span the distance of 6 INT.*
tiles, even if it takes 9 interconnect columns because of a 3 tile wide hole in the middle. Likewise, LV.*
and LH.*
lines are only rotated when crossing an actual INT.*
tile.
Spartan 3E BRAM columns
A BRAM column makes a hole in the interconnect structure. The hole works as follows:
the 3 interconnect columns to the right of an
INT.BRAM.*
tile contain no interconnect tiles; horizontal interconnect passes through them to the nextINT.CLB
tile in the rowthe bottom and top row of the column contain no interconnect tiles - horizontal interconnect passes through them (directly between the
INT.CLB
to the left and to the right of the column) - vertical interconnect passes through the leftmost tile in the row (directly betweenINT.CLB
andINT.BRAM.*
) - the remaining 3 tiles containTERM.BRAM.[NS]
terminators that bounce most of the vertical interconnect back; long lines (LV.*
andLH.*
) are an exception, and pass the whole height of the BRAM column
Spartan 3A and 3A DSP BRAM columns
A BRAM column makes a hole in the interconnect structure. The hole works as follows:
the 3 (Spartan 3A) or 2 (Spartan 3A DSP) columns to the right of an
INT.BRAM.*
tile contain no interconnect tiles; horizontal interconnect passes through themvertical interconnect doesn’t pass through the 3 or 2 rightmost columns — the
INT.IOI
tiles on the top and bottom of the column aren’t connected by vertical interconnect in any way
Spartan 3E DCMs
Spartan 3E devices can have 2, 4, or 8 DCMs:
the devices with 2 DCMs have one DCM at the top, close to
CLKT
, and one DCM at the bottom, close toCLKB
the devices with 4 DCMs have two DCMs at the top, close to
CLKT
, and two DCMs at the bottom, close toCLKB
the devices with 8 DCMs have the 4 DCMs above, and also two DCMs on the left, close to
CLKL
, and two DCMs on the right, close toCLKR
Spartan 3E DCMs are designed to work in pairs, with some shared circuitry between them. The devices with 2 DCMs instead contain single DCMs. The single DCMs are actually a cut-down version of a DCM pair, and contain a stub DCM tile.
The top and bottom holes work as follows:
the DCM hole spans the bottom 4 or top 4 general rows (displacing some CLBs but not IOIs)
on devices with 2 DCMs, the DCM hole spans 5 columns, from the column immediately to the left of the clock spine, to the 4th column right from the primary clock spine
on devices with 4 or more DCMs, the DCM hole spans 8 columns, from the 4th column to the left of the clock spine, to the 4th column right from the primary clock spine
the two tiles closest to the
CLKB
/CLKT
containINT.DCM.*
interconnect tiles; the remaining tiles contain noINT.*
tiles and interconnect passes right through themon devices with 2 DCMs, the
INT.DCM.*
tile to the right is associated with aDCM
tile; the tile to the left is a stubon other devices, both
INT.DCM.*
tiles are associated with a DCM
The left and right holes (present only on devices with 8 DCMs) work as follows:
the hole spans 4 columns and 8 rows
the hole spans rows from the 4th row below the horizontal clock spine to the 4th row above the horizontal clock spine
the left hole spans from column 9 to column 12 (there is a space of 8 columns between the DCM and the left IOIs)
the right hole spans from column
width - 13
towidth - 10
(there is likewise a space of 8 columns between the DCM and the right IOIs)the hole contains two
INT.DCM.*
tiles in the column closest to the IOIs, in the two rows closest to the horizontal clock spine; each of them is associated with aDCM
tileremaining tiles of the hole have no
INT.*
tiles and interconnect passes right through them
Spartan 3A DCMs
Spartan 3A (and 3A DSP) devices have 2, 4, or 8 DCMs:
the devices with 2 DCMs have two DCMs at the top, close to
CLKT
the devices with 4 DCMs have two DCMs at the top, close to
CLKT
, and two DCMs at the bottom, close toCLKB
(like Spartan 3E)the devices with 8 DCMs have the 4 DCMs above, and also two DCMs on the left, close to
CLKL
, and two DCMs on the right, close toCLKR
The placement of the top and bottom holes is identical to Spartan 3E, except that devices with 2 DCMs have both DCMs in the top hole (which is 8×4 tiles), and no bottom hole. On the smallest device, the top DCM hole displaces BRAM tiles instead of CLB tiles.
The left and right holes (present only on devices with 8 DCMs) work as follows:
the hole spans 4 columns and 8 rows
the hole spans rows from the 4th row below the horizontal clock spine to the 4th row above the horizontal clock spine
the left hole spans from column 3 to column 6 (there is a space of 2 CLB columns between the DCM and the left IOIs)
the right hole spans from column
width - 7
towidth - 4
(there is likewise a space of 2 CLB columns between the DCM and the right IOIs)the hole is always placed in the middle of a BRAM column (or, for Spartan 3A DSP devices, a BRAM column and a DSP column)
the hole contains two
INT.DCM.*
tiles in the leftmost column, in the two rows closest to the horizontal clock spine; each of them is associated with aDCM
tileremaining tiles of the hole have no
INT.*
tiles and interconnect passes right through them
Clock rows
The device has some amount of clock rows. They exist in between interconnect rows, and are not counted in the coordinate system. Each clock row provides dedicated clock routing to some range of interconnect rows.
On the intersection of every clock row and interconnect column there is a GCLKH.*
tile, which distributes the clocks vertically to some segment of interconnect tiles.
The horizontal clock lines in the clock row are driven from GCLKVC.*
tiles at the intersections with the secondary vertical clock spines.
The xc3s50a
device is an exception — on that device, there is only one clock row (colocated with horizontal clock spine), and it is driven from the CLKC_50A
tile at the intersection with primary vertical clock spine.
Primary vertical clock spine
The device has a special column, called the primary vertical clock spine. It is located in between two interconnect columns, somewhere in the middle of the device. It is not counted in the coordinate system.
The clock spine has special tiles dealing with clock interconnect:
the bottom IOI row has the
CLKB.*
tile, with 4BUFGMUX
primitivesthe top IOI row has the
CLKT.*
tile, with 4BUFGMUX
primitivesthe intersection with horizontal clock spine has the
CLKC
tile, which buffers the vertical clock lines onto horizontal clock lines, going toGCLKVM
tileson
xc3s50a
, theCLKC
tile is replaced with theCLKC_50A
tile, which instead multiplexes the vertical and horizontal clock lines (from the horizontal clock spine) directly onto the clock row
Horizontal clock spine
The device has a special row, called the horizontal clock spine. It is located in between two interconnect rows, exactly in the middle of the device. It is not counted in the coordinate system.
The horizontal clock spine has special tiles dealing with clock interconnect:
the left IOI column has the
CLKL.*
tile, with 8BUFGMUX
primitives and aPCILOGICSE
primitivethe right IOI column has the
CLKR.*
tile, with 8BUFGMUX
primitives and aPCILOGICSE
primitivethe intersection with the primary vertical clock spine has the
CLKC
tile, which buffers the vertical clock lines onto horizontal clock linesthe intersections with the secondary vertical clock spines have
GCLKVM
tiles, which multiplex between clock signals fromCLKC
andCLKL
orCLKR
, and drive vertical clock lines towardsGCLKVC
tileson
xc3s50a
, there are noGCLKVM
tiles, and theCLKC
tile is replaced withCLKC_50A
that multiplexes the clocks and drives the clock row directly
Secondary vertical clock spines
The device has two special columns, the left and right secondary vertical clock spines. Like the primary clock spine, they are located in between two interconnect columns and don’t count towards the coordinate system. The secondary clock spines are located somewhere to the left and to the right of the primary clock spine, and together with the primary clock spine divide the device roughly in 4 equal parts.
The secondary clock spines have special tiles dealing with clock interconnect:
the intersection with the horizontal clock spine has a
GCLKVM
tile that multiplexes clocks signals and drives the vertical clock lines in the columnthe intersections with the clock rows have
GCLKVC
tiles that drive the horizontal clock signals in the clock row
The xc3s50a
device is special and doesn’t have secondary clock spines.
IO banks and IO buffers
Spartan 3 devices have 8 IO banks, numbered 0 through 7 in clockwise fashion:
0: top IO row, to the left of primary clock spine
1: top IO row, to the right of primary clock spine
2: right IO column, top half
3: right IO column, bottom half
4: bottom IO row, to the right of primary clock spine
5: bottom IO row, to the left of primary clock spine
6: left IO column, bottom half
7: left IO column, top half
Spartan 3E and 3A devices have 4 IO banks, numbered 0 through 3 in clockwise fashion:
0: top IO row
1: right IO column
2: bottom IO row
3: left IO column
The edges of the device have IOI.*
tiles, each of which contains 3 or 2 IOI
(IO interface) primitives that implement IO registers. However, not all IOI
primitives have an associated IO buffer.
The IO buffers live in special IOBS.*
tiles, contained in:
top IOB row, above the top IOI row
bottom IOB row, below the bottom IOI row
left IOB column, to the left of the left IOI column
right IOB column, to the right of the right IOI column
The IOBS.*
tiles come in multiple variants, and can span one or two IOI
tiles.
Todo
more details
Bitstream geometry
The bitstream is made of frames, which come in three types:
0: main area
1: BRAM data area
2: BRAM interconnect area
Frames are identified by their type, major and minor numbers. The major number identifies a column (interconnect column, clock spine, or IOB column), and the minor number identifies a frame within a column. The major numbers are counted separately for each type of frame.
The main area contains the following columns, in order (with major numbers assigned sequentially from 0, one for each column):
a special column for the vertical clock spines (2, 3, or 4 frames)
Spartan 3 devices and Spartan 3E devices without
LL*
tiles have 3 framesframe 0 corresponds to left secondary clock spine
frame 1 corresponds to right secondary clock spine
frame 2 corresponds to primary clock spine
Spartan 3E devices with
LL*
tiles and Spartan 3A devices other thanxc3s50a
have 4 framesframes 0-1 are allocated as above
frames 2-3 correspond to primary clock spine
the
xc3s50a
device has 2 frames, corresponding to the primary clock spine
the left IOB column (2 frames)
the left IOI column (19 frames)
the CLB and DSP columns, in order (19 frames each)
the right IOI column (19 frames)
the right IOB column (2 frames)
The BRAM data area contains 76 frames for each BRAM column, in order from left. The major numbers are assigned sequentially for each BRAM column starting from 0.
The BRAM interconnect area contains 19 frames for each BRAM column, in order from left. The major numbers are assigned sequentially for each BRAM column starting from 0.
On Spartan 3E and 3A, the BRAM tiles are special in that they span several interconnect columns. The data for interconnect columns is placed as follows:
the leftmost interconnect column (which has
INT.*
for (almost) the whole height of the device) is placed in the BRAM interconnect areathe remaining interconnect columns, where they have
INT.*
tiles, are placed in the BRAM data area (which, in the relevant rows, is not used for actual BRAM data):column 1 of the hole is placed in frames 0-18 of the BRAM data area
column 2 of the hole is placed in frames 19-37 of the BRAM data area
column 3 of the hole (on devices other than Spartan 3A DSP) is placed in frames 38-56 of the BRAM data area
For example, xc3s100e
has the following frames (type.major.minor
):
0.0.0-2
: clock spines0.1.0-1
: left IOB column0.2.0-18
: left IOI column (interconnect X == 0)0.3.0-18
: CLB column 1 (interconnect X == 1)0.4.0-18
: CLB column 2 (interconnect X == 2)0.5.0-18
: CLB column 3 (interconnect X == 7)0.6.0-18
: CLB column 4 (interconnect X == 8)0.7.0-18
: CLB column 5 (interconnect X == 9)0.8.0-18
: CLB column 6 (interconnect X == 10)0.9.0-18
: CLB column 7 (interconnect X == 11)0.10.0-18
: CLB column 8 (interconnect X == 12)0.11.0-18
: CLB column 9 (interconnect X == 13)0.12.0-18
: CLB column 10 (interconnect X == 14)0.13.0-18
: CLB column 11 (interconnect X == 15)0.14.0-18
: CLB column 12 (interconnect X == 16)0.15.0-18
: right IOI column (interconnect X == 17)0.16.0-1
: right IOB column1.0.0-75
: BRAM column 1 data1.0.0-18
: data for CLBs in interconnect X == 41.0.18-37
: data for CLBs in interconnect X == 51.0.38-56
: data for CLBs in interconnect X == 6
2.0.0-18
: BRAM column 1 interconnect (interconnect X == 3)
Each bitstream frame within a device has the same size. The size is 32 + num_interconnect_rows * 64
bits. The bits are, in order:
16 special bits, assigned as follows:
Spartan 3 and Spartan 3E:
bits 0-3: clock rows in bottom half of the device (one bit per clock row, in order from bottom), then one bit for
LLV
tiles (if any)bits 7-11: bottom IOB row
Spartan 3A (and 3A DSP):
bits 0-5: bottom IOB row
bits 11-15: clock rows in bottom half of the device (one bit per clock row, in order from bottom)
64 bits for every interconnect row, in order
16 special bits, assigned as follows:
Spartan 3 and Spartan 3E:
bits 0-4: bottom IOB row
bits 12-15 (devices without
LLV
tiles): clock rows in top half of the device (one bit per clock row, in order from top)bits 11-15 (devices with
LLV
tiles): clock rows in top half of the device (one bit per clock row, in order from top), then two bits forLLV
tiles
Spartan 3A (and 3A DSP):
bits 0-5: bottom IOB row
bits 8-10:
LLV
tilesbits 11-15: clock rows in top half of the device (one bit per clock row, in order from top)
Thus, every interconnect tile corresponds to a bitstream tile of 19×64 bits. Such bitstream tiles are shared between the interconnect tiles and their associated primitives.
The IOB row tiles are 19×5 or 19×6 bits, and belong to IOBS.*
tiles. Likewise, IOB column tiles are 2×64 bits and are belong to IOBS.*
. The corner tiles also reuse some tiles in IOB area with the same dimensions.
Blockram data tiles are 76×256 bits (corresponding to 4 interconnect rows). The blockram data frame space to non-BRAM rows is repurposed for interconnect tile storage as described above.
The space in the intersection of IOB columns and IOB or clock rows is unused.
On Spartan 3E, the LLV
tiles are split in two parts, a 19×1 one in the low special area, and a 19×2 one in the high special area. On Spartan 3A, LLV
tiles are 19×3 bits.
The GCLKH
tiles have 19×1 bits.