Logic block
The main logic resource in Spartan 3 and Virtex 4 devices is the CLB (Configurable Logic Block). It is based on the Virtex 2 CLB, but has significant changes, particularly to the LUT RAM structures.
A CLB corresponds one-to-one with the INT.CLB interconnect tile (on Spartan 3), or to an INT interconnect tile (on Virtex 4). Every CLB has four SLICEs. The SLICEs come in two kinds:
SLICEM: the full-featured version ofSLICE, with LUT RAM capabilitySLICEL: logic-onlySLICE, without LUT RAM capability; it is a strict subset ofSLICEM
The SLICEs within a CLB are organized as follows (this is different from Virtex 2):
SLICE0:SLICEM, on the bottom left of the CLBSLICE1:SLICEL, to the right ofSLICE0SLICE2:SLICEM, aboveSLICE0SLICE3:SLICEL, to the right ofSLICE2and aboveSLICE1
Every slice has:
- two 4-input LUTs, named 
FandG- each of them has four inputs, named 
F[1-4]andG[1-4] - in 
SLICEMs, each LUT can be used as LUT RAM or shift register 
 - each of them has four inputs, named 
 - two "bypass inputs" used for various purposes
BX, associated with theFLUTBY, associated with theGLUT
 - two wide multiplexers
F5, associated with theFLUT, multiplexingFandGFX, associated with theGLUT, multiplexingF5andFXoutputs of this and otherSLICEs
 - carry logic with a carry chain, going vertically upwards through the CLB column
 - two main combinational outputs
X, associated with theFLUTY, associated with theGLUT
 - (Virtex 4 only) two secondary combinational outputs
XMUX, associated with theFLUTYMUX, associated with theGLUT
 - two "bypass" combinational outputs, used for long shift registers and carry chains
XB, associated with theFLUTYB, associated with theGLUT
 - two registers and their outputs
FFXandXQ, associated with theFLUTFFYandYQ, associated with theGLUT
 - shared control inputs:
CLK, the clock inputSR, the set/reset input (also used as LUT RAM write enable inSLICEM)CE, the clock enable input
 
In summary, a single SLICE has the following pins:
F[1-4]andG[1-4]: general interconnect inputs, used as LUT inputs and LUT RAM write addressBXandBY: general interconnect freely-invertible inputs, used for various purposesCLK,SR,CE: general interconnect freely-invertible inputsX,Y,XQ,YQ,XB,YB: general interconnect outputs- (Virtex 4 only) 
XMUX,YMUX: general interconnect outputs COUT: dedicated output (carry output)CIN: dedicated input (carry input), routed fromCOUTof the slice belowSHIFTOUT: dedicated output (shift register output)SHIFTIN: dedicated input (shift register input), routed fromSHIFTOUTof the previous slice in sequenceF5andFX: dedicated outputs (wide multiplexer outputs)FXINAandFXINB: dedicated inputs (wide multiplexer inputs), routed fromF5andFXof neighbouring slicesDIG: dedicated output (SLICEMonly)ALTDIG: dedicated input (SLICEMonly)
Additionally, some pins and circuitry are shared between SLICEMs within the same CLB.
Note that on Virtex 4, the CLB tile is interconnect-limitted: only up to 16 out of the [XY]Q, [XY]MUX, and [XY]B outputs within a single CLB can be used at a time due to the OMUX bottleneck. The main [XY] outputs don't count towards that limit, since they can use other interconnect resources.
The CLK, SR, and CE inputs are invertible on the interconnect level.
The BX and BY inputs are invertible within the CLB. The BXINV attribute, if set, inverts the BX signal from the interconnect. Likewise, BYINV inverts the BY signal.
LUTs
There are two 4-input LUTs in each slice, F and G. The F LUT has inputs F[1-4], with F1 being the LSB and F4 being the MSB. The G LUT likewise has inputs G[1-4].
The initial LUT contents are determined by the F and G attributes in the bitstream.
The LUT outputs go to:
- (Spartan 3) the 
FXMUXandGYMUXmultiplexers - (Virtex 4) the 
Foutput goes directly to theXoutput; theGoutput goes directly to theYoutput - (Virtex 4) the 
FFXandFFYregisters, viaDXMUXandDYMUXmultiplexers - the carry logic
 - the 
F5wide multiplexer 
LUT RAM
This section is only applicable to SLICEM. SLICELs don't have LUT RAM capability.
The F_RAM and G_RAM attributes, when set, turn F and G (respectively) into LUT RAM mode.
The signals used in RAM mode are:
CLKis the write clockSRis the write enableG[1-4]are write address for both theFandGLUTsDIFandDIGare the data input for theFandGLUTs, respectivelyBX: bit 4 of the write address, when enabledSLICEWE1: bit 5 of the write address, when enabled
The DIF_MUX determines the value of DIF:
BX: use theBXpin (used for 16×X single-port RAMs)ALT: use theDIGvalue (used for dual-port RAMs, 32×X RAMs, or 64×1 RAMs)
The DIG_MUX determines the value of DIG:
BY: use theBYpin (used for 16×X and 32×X RAMs andSLICE2in 64×X RAMs)ALT: use theALTDIGvalue (used forSLICE0in 64×1 RAMs)
ALTDIG is determined as follows:
SLICE0.ALTDIGis connected toSLICE2.DIGSLICE2.ALTDIGis indeterminate (and should not be used)
Note that DI[FG]_MUX attributes are also used in the shift register mode, but with different meaning.
On Spartan 3, when SLICEWE0USED is set, the BX signal is used as bit 4 of write address. The F LUT is written when it is 1, the G LUT is written when it is 0. Otherwise, the signal is ignored, and both LUTs are written at the same time.
On Virtex 4, the attribute is replaced with F_SLICEWE0USED and G_SLICEWE0USED, which are per-LUT.
The SLICEWE1 signal is routed as follows:
SLICE0.SLICEWE1 = SLICE0.BYSLICE2.SLICEWE1 = !SLICE0.BY
On Spartan 3, if SLICE0.SLICEWE1USED is set, both SLICEMs within the CLB will use their SLICEWE1 signal as a write enable — the LUTs are only written when SLICEWE1 is 1. Otherwise, all SLICEWE1 signals are ignored.
Note that SLICE2 doesn't have a SLICEWE1USED bit — it is controlled by the same configuration bit as SLICE0.
On Virtex 4, the attribute is replaced with F_SLICEWE1USED and G_SLICEWE1USED, which are per-LUT, and appear in both slices.
Single-port 16×X RAM
Single-port 16×X RAM can be implemented as follows:
- pick a 
SLICEM - pick a LUT within the slice for each 16×1 subblock
Gcan always be usedFcan be used ifGis also used with the same address
 - connect 
CLKto write clock - connect 
SRto write enable - for the 16×1 slice in 
FLUT:- connect 
F[1-4]to the read/write address - connect 
BXto write data - set 
DIF_MUXtoBX - use 
Foutput as read data 
 - connect 
 - for the 16×1 slice in 
GLUT:- connect 
G[1-4]to the read/write address - connect 
BYto write data - set 
DIG_MUXtoBY - use 
Goutput as read data 
 - connect 
 
Dual-port 16×X RAM
Dual-port 16×X RAM can be implemented as follows:
- pick a 
SLICEM - connect 
CLKto write clock - connect 
SRto write enable - connect 
G[1-4]to the write address - connect 
F[1-4]to the read address - connect 
BYto write data - set 
DIF_MUXtoALT - set 
DIG_MUXtoBY - use 
FandGoutputs as read data 
Single-port 32×X RAM
Single-port 32×X RAM can be implemented as follows:
- pick a 
SLICEM - connect 
CLKto write clock - connect 
SRto write enable FLUT corresponds to addresses0x0XGLUT corresponds to addresses0x1X- connect 
F[1-4]andG[1-4]to low 4 bits of the read/write address - connect 
BXto bit 4 of read/write address - set 
SLICEWE0USED - connect 
BYto write data - set 
DIF_MUXtoALT - set 
DIG_MUXtoBY - use 
F5output as read data 
Single-port 64×1 RAM
Single-port 64×1 RAM can be implemented as follows:
- use both 
SLICE0andSLICE2 - connect 
CLKto write clock - connect 
SRto write enable SLICE0.GLUT corresponds to addresses0x0XSLICE0.FLUT corresponds to addresses0x1X- connect 
F[1-4]andG[1-4]to low 4 bits of the read/write address - connect both 
BXto bit 4 of read/write address - set 
SLICEWE0USED - connect 
SLICE0.BYto bit 5 of read/write address - set 
SLICE0.SLICEWE1USED - connect 
SLICE2.BYto write data - set 
DIF_MUXtoALT - set 
SLICE2.DIG_MUXtoBY - set 
SLICE0.DIG_MUXtoALT - use 
SLICE0.FXoutput as read data 
Shift registers
This section is only applicable to SLICEM. SLICELs don't have LUT RAM capability.
The F_SHIFT and G_SHIFT attributes, when set, turn F and G (respectively) into shift register mode.
The signals used in shift register mode are:
CLKis the write clockSRis the write enableDIFandDIGare the data input for theFandGLUTs, respectively
The LUTs in shift register mode have shift-out outputs, FMC15 and GMC15, which are the next bit to be shifted out. They can be connected to another LUT's data input to assemble larger shift registers.
The DIF_MUX determines the value of DIF:
BX: use theBXpinALT: use theGMC15value
The DIG_MUX determines the value of DIG:
BY: use theBYpinALT: use theSHIFTINpin
SHIFTIN is routed as follows:
SLICE0.SHIFTIN = SLICE2.SHIFTOUT = SLICE2.FMC15SLICE2.SHIFTINis indeterminate.
Note that DI[FG]_MUX attributes are also used in the LUT RAM mode, but with different meaning.
The external write data is written to bit 0 of the LUT. Bit 15 is shifted out.
TODO: do LUT RAM and shift register modes interfere within a SLICE?
Wide multiplexers
Every SLICE has two wide multiplexers: F5 and FX, used to combine smaller LUTs into larger LUTs. Their function is hardwired:
F5 = BX ? F : GFX = BY ? FXINA : FXINB
The F5 output goes to the FXMUX multiplexer, and further wide multiplexers. The FX output goes to the GYMUX multiplexer, and further wide multiplexers.
The FXINA and FXINB inputs are routed as follows:
SLICE | FXINA | FXINB | effective primitive | 
|---|---|---|---|
SLICE0 | SLICE0.F5 | SLICE2.F5 | MUXF6 | 
SLICE1 | SLICE1.F5 | SLICE3.F5 | MUXF6 | 
SLICE2 | SLICE0.FX | SLICE1.FX | MUXF7 | 
SLICE3 | SLICE2.FX | SLICE2.FX, from CLB above | MUXF8 | 
The FX output isn't connected across any interconnect holes — a MUXF8 cannot be made of two CLBs separated by a hole.
Carry logic
The carry logic implements the MUXCY and XORCY primitives described in Xilinx documentation. There are several bitstream attributes controlling carry logic operation.
The CYINIT mux determines the start of the carry chain in the slice:
CIN: connected fromCOUTof theSLICEbelowBX
On Spartan 3, the CYSELF mux determines the "propagate" (or select) input of the lower MUXCY:
F: propagate is connected toFLUT output1: propagate is connected to const-1 (ie. theMUXCYis effectively skipped from the chain)
On Virtex 4, the CYSELF mux doesn't exist, and the propagate signal is hardwired to F output.
The CY0F mux determines the "generate" input of the lower MUXCY:
0(constant)1(constant)- (Spartan 3) 
F1 F2- (Virtex 4) 
F3 BX- (Spartan 3) 
PROD: equal toF1 & F2, implementing theMULT_ANDprimitive - (Virtex 4) 
PROD: equal toF2 & F3, implementing theMULT_ANDprimitive 
On Spartan 3, the CYSELG mux determines the "propagate" (or select) input of the upper MUXCY:
G: propagate is connected toGLUT output1: propagate is connected to const-1 (ie. theMUXCYis effectively skipped from the chain)
On Virtex 4, the CYSELG mux doesn't exist, and the propagate signal is hardwired to F output.
The CY0G mux determines the "generate" input of the upper MUXCY:
0(constant)1(constant)- (Spartan 3) 
G1 G2- (Virtex 4) 
G3 BY- (Spartan 3) 
PROD: equal toG1 & G2, implementing theMULT_ANDprimitive - (Virtex 4) 
PROD: equal toG2 & G3, implementing theMULT_ANDprimitive 
The hardwired logic implemented is:
- (Spartan 3) 
FCY = CYSELF ? CY0F : CIN(lowerMUXCY) - (Spartan 3) 
COUT = GCY = CYSELG ? CY0G : FCY(upperMUXCY) - (Virtex 4) 
FCY = F ? CY0F : CIN(lowerMUXCY) - (Virtex 4) 
COUT = GCY = G ? CY0G : FCY(upperMUXCY) FXOR = F ^ CIN(lowerXORCY)GXOR = G ^ FCY(upperXORCY)
The dedicated CIN input is routed from:
SLICE0.CIN: fromSLICE2.COUTof CLB belowSLICE1.CIN: fromSLICE3.COUTof CLB belowSLICE2.CIN: fromSLICE0.COUTSLICE3.CIN: fromSLICE1.COUT
The carry chains are not connected over interconnect holes. The SLICE[01].CIN inputs in the row above bottom IOI or any kind of interconnect hole are indeterminate.
The sum-of-products feature of Virtex 2 no longer exists on Spartan 3 and Virtex 4.
Output multiplexers — Spartan 3
The Spartan 3 output multiplexers are unchanged from Virtex 2, except for SOPOUT removal.
The FXMUX multiplexer controls the X output. It has three inputs:
F(the LUT output)F5FXOR
The GYMUX multiplexer controls the Y output. It has three inputs:
G(the LUT output)FXGXOR
The XBMUX multiplexer controls the XB output. It has two inputs:
FCYFMC15: shift register output ofF
The YBMUX multiplexer controls the YB output. It has two inputs:
GCY(equal toCOUT)GMC15: shift register output ofG
The DXMUX mulitplexer controls the FFX data input. It has two inputs:
X(theFXMUXoutput)BX
The DYMUX mulitplexer controls the FFY data input. It has two inputs:
Y(theGYMUXoutput)BY
Output multiplexers — Virtex 4
The FXMUX multiplexer controls the XMUX output. It has two inputs:
F5FXOR
The GYMUX multiplexer controls the YMUX output. It has two inputs:
FXGXOR
The X output is directly connected to F output and doesn't have a mux. Likewise, Y output is directly connected to G output.
The XBMUX multiplexer controls the XB output. It has two inputs:
FCYFMC15: shift register output ofF
The YBMUX multiplexer controls the YB output. It has two inputs:
GCY(equal toCOUT)GMC15: shift register output ofG
The DXMUX mulitplexer controls the FFX data input. It has five inputs:
X(theFoutput)F5FXORXBBX
The DYMUX mulitplexer controls the FFY data input. It has five inputs:
Y(theGoutput)FXGXORYBBY
Registers
The registers are unchanged from Virtex 2.
A SLICE contains two registers:
FFX, with input determined byDXMUXand output connected toXQFFY, with input determined byDYMUXand output connected toYQ
Both registers share the same control signals:
CLK: posedge-triggered clock in FF mode or active-low gate in latch modeCE: active-high clock or gate enableSR: ifFF_SR_EN, the set/reset signalBY: ifFF_REV_EN, the alternate set/reset signal
The following attributes determine register function:
FF_LATCH: if set, the registers are latches andCLKbehaves as active-low gate; otherwise, the registers are flip-flops andCLKis a posedge-triggered clockFF_SYNC: if set, theSRandBY(if enabled) implement synchronous set/reset (with priority overCE); otherwise, they implement asynchronous set/reset; should not be set together withFF_LATCHFF[XY]_INIT: determines the initial or captured value of given register- when the global 
GSRsignal is pulsed (for example, as part of the configuration process), the register is set to the value of this bit - when the global 
GCAPsignal is pulsed (for example, by theCAPTUREprimitive), this bit captures the current state of the register 
- when the global 
 FF[XY]_SRVAL: determines the set/reset value of given registerFF_SR_EN: if set,SRis used as the set/reset signal for both registers, setting them to theirFF[XY]_SRVALFF_REV_EN: if set,BYbehaves as secondary set/reset signal for both registers, setting them to the opposite of theirFF[XY]_SRVAL
Bitstream
The data for a CLB is located in the same bitstream tile as the associated INT.CLB tile.
Tile CLB
Cells: 1
Bel SLICE0
| Pin | Direction | Wires | 
|---|---|---|
| BX | input | IMUX.FAN.BX0 | 
| BY | input | IMUX.FAN.BY0 | 
| CE | input | IMUX.CE0 | 
| CLK | input | IMUX.CLK0 | 
| F1 | input | IMUX.DATA0 | 
| F2 | input | IMUX.DATA4 | 
| F3 | input | IMUX.DATA8 | 
| F4 | input | IMUX.DATA12 | 
| G1 | input | IMUX.DATA16 | 
| G2 | input | IMUX.DATA20 | 
| G3 | input | IMUX.DATA24 | 
| G4 | input | IMUX.DATA28 | 
| SR | input | IMUX.SR0 | 
| X | output | OUT.FAN0 | 
| XB | output | OUT.SEC0 | 
| XQ | output | OUT.SEC8 | 
| Y | output | OUT.FAN4 | 
| YB | output | OUT.SEC4 | 
| YQ | output | OUT.SEC12 | 
Bel SLICE1
| Pin | Direction | Wires | 
|---|---|---|
| BX | input | IMUX.FAN.BX1 | 
| BY | input | IMUX.FAN.BY1 | 
| CE | input | IMUX.CE1 | 
| CLK | input | IMUX.CLK1 | 
| F1 | input | IMUX.DATA1 | 
| F2 | input | IMUX.DATA5 | 
| F3 | input | IMUX.DATA9 | 
| F4 | input | IMUX.DATA13 | 
| G1 | input | IMUX.DATA17 | 
| G2 | input | IMUX.DATA21 | 
| G3 | input | IMUX.DATA25 | 
| G4 | input | IMUX.DATA29 | 
| SR | input | IMUX.SR1 | 
| X | output | OUT.FAN1 | 
| XB | output | OUT.SEC1 | 
| XQ | output | OUT.SEC9 | 
| Y | output | OUT.FAN5 | 
| YB | output | OUT.SEC5 | 
| YQ | output | OUT.SEC13 | 
Bel SLICE2
| Pin | Direction | Wires | 
|---|---|---|
| BX | input | IMUX.FAN.BX2 | 
| BY | input | IMUX.FAN.BY2 | 
| CE | input | IMUX.CE2 | 
| CLK | input | IMUX.CLK2 | 
| F1 | input | IMUX.DATA2 | 
| F2 | input | IMUX.DATA6 | 
| F3 | input | IMUX.DATA10 | 
| F4 | input | IMUX.DATA14 | 
| G1 | input | IMUX.DATA18 | 
| G2 | input | IMUX.DATA22 | 
| G3 | input | IMUX.DATA26 | 
| G4 | input | IMUX.DATA30 | 
| SR | input | IMUX.SR2 | 
| X | output | OUT.FAN2 | 
| XB | output | OUT.SEC2 | 
| XQ | output | OUT.SEC10 | 
| Y | output | OUT.FAN6 | 
| YB | output | OUT.SEC6 | 
| YQ | output | OUT.SEC14 | 
Bel SLICE3
| Pin | Direction | Wires | 
|---|---|---|
| BX | input | IMUX.FAN.BX3 | 
| BY | input | IMUX.FAN.BY3 | 
| CE | input | IMUX.CE3 | 
| CLK | input | IMUX.CLK3 | 
| F1 | input | IMUX.DATA3 | 
| F2 | input | IMUX.DATA7 | 
| F3 | input | IMUX.DATA11 | 
| F4 | input | IMUX.DATA15 | 
| G1 | input | IMUX.DATA19 | 
| G2 | input | IMUX.DATA23 | 
| G3 | input | IMUX.DATA27 | 
| G4 | input | IMUX.DATA31 | 
| SR | input | IMUX.SR3 | 
| X | output | OUT.FAN3 | 
| XB | output | OUT.SEC3 | 
| XQ | output | OUT.SEC11 | 
| Y | output | OUT.FAN7 | 
| YB | output | OUT.SEC7 | 
| YQ | output | OUT.SEC15 | 
Bel wires
| Wire | Pins | 
|---|---|
| IMUX.SR0 | SLICE0.SR | 
| IMUX.SR1 | SLICE1.SR | 
| IMUX.SR2 | SLICE2.SR | 
| IMUX.SR3 | SLICE3.SR | 
| IMUX.CLK0 | SLICE0.CLK | 
| IMUX.CLK1 | SLICE1.CLK | 
| IMUX.CLK2 | SLICE2.CLK | 
| IMUX.CLK3 | SLICE3.CLK | 
| IMUX.CE0 | SLICE0.CE | 
| IMUX.CE1 | SLICE1.CE | 
| IMUX.CE2 | SLICE2.CE | 
| IMUX.CE3 | SLICE3.CE | 
| IMUX.FAN.BX0 | SLICE0.BX | 
| IMUX.FAN.BX1 | SLICE1.BX | 
| IMUX.FAN.BX2 | SLICE2.BX | 
| IMUX.FAN.BX3 | SLICE3.BX | 
| IMUX.FAN.BY0 | SLICE0.BY | 
| IMUX.FAN.BY1 | SLICE1.BY | 
| IMUX.FAN.BY2 | SLICE2.BY | 
| IMUX.FAN.BY3 | SLICE3.BY | 
| IMUX.DATA0 | SLICE0.F1 | 
| IMUX.DATA1 | SLICE1.F1 | 
| IMUX.DATA2 | SLICE2.F1 | 
| IMUX.DATA3 | SLICE3.F1 | 
| IMUX.DATA4 | SLICE0.F2 | 
| IMUX.DATA5 | SLICE1.F2 | 
| IMUX.DATA6 | SLICE2.F2 | 
| IMUX.DATA7 | SLICE3.F2 | 
| IMUX.DATA8 | SLICE0.F3 | 
| IMUX.DATA9 | SLICE1.F3 | 
| IMUX.DATA10 | SLICE2.F3 | 
| IMUX.DATA11 | SLICE3.F3 | 
| IMUX.DATA12 | SLICE0.F4 | 
| IMUX.DATA13 | SLICE1.F4 | 
| IMUX.DATA14 | SLICE2.F4 | 
| IMUX.DATA15 | SLICE3.F4 | 
| IMUX.DATA16 | SLICE0.G1 | 
| IMUX.DATA17 | SLICE1.G1 | 
| IMUX.DATA18 | SLICE2.G1 | 
| IMUX.DATA19 | SLICE3.G1 | 
| IMUX.DATA20 | SLICE0.G2 | 
| IMUX.DATA21 | SLICE1.G2 | 
| IMUX.DATA22 | SLICE2.G2 | 
| IMUX.DATA23 | SLICE3.G2 | 
| IMUX.DATA24 | SLICE0.G3 | 
| IMUX.DATA25 | SLICE1.G3 | 
| IMUX.DATA26 | SLICE2.G3 | 
| IMUX.DATA27 | SLICE3.G3 | 
| IMUX.DATA28 | SLICE0.G4 | 
| IMUX.DATA29 | SLICE1.G4 | 
| IMUX.DATA30 | SLICE2.G4 | 
| IMUX.DATA31 | SLICE3.G4 | 
| OUT.FAN0 | SLICE0.X | 
| OUT.FAN1 | SLICE1.X | 
| OUT.FAN2 | SLICE2.X | 
| OUT.FAN3 | SLICE3.X | 
| OUT.FAN4 | SLICE0.Y | 
| OUT.FAN5 | SLICE1.Y | 
| OUT.FAN6 | SLICE2.Y | 
| OUT.FAN7 | SLICE3.Y | 
| OUT.SEC0 | SLICE0.XB | 
| OUT.SEC1 | SLICE1.XB | 
| OUT.SEC2 | SLICE2.XB | 
| OUT.SEC3 | SLICE3.XB | 
| OUT.SEC4 | SLICE0.YB | 
| OUT.SEC5 | SLICE1.YB | 
| OUT.SEC6 | SLICE2.YB | 
| OUT.SEC7 | SLICE3.YB | 
| OUT.SEC8 | SLICE0.XQ | 
| OUT.SEC9 | SLICE1.XQ | 
| OUT.SEC10 | SLICE2.XQ | 
| OUT.SEC11 | SLICE3.XQ | 
| OUT.SEC12 | SLICE0.YQ | 
| OUT.SEC13 | SLICE1.YQ | 
| OUT.SEC14 | SLICE2.YQ | 
| OUT.SEC15 | SLICE3.YQ | 
Bitstream
| SLICE0:CY0F | 0.1.10 | 0.1.7 | 0.1.9 | 
|---|---|---|---|
| SLICE1:CY0F | 0.2.10 | 0.2.7 | 0.2.9 | 
| SLICE2:CY0F | 0.1.42 | 0.1.39 | 0.1.41 | 
| SLICE3:CY0F | 0.2.42 | 0.2.39 | 0.2.41 | 
| BX | 0 | 0 | 0 | 
| F2 | 0 | 0 | 1 | 
| F1 | 0 | 1 | 1 | 
| PROD | 1 | 0 | 0 | 
| 1 | 1 | 0 | 1 | 
| 0 | 1 | 1 | 1 | 
| SLICE0:CY0G | 0.1.30 | 0.1.31 | 0.1.29 | 
|---|---|---|---|
| SLICE1:CY0G | 0.2.30 | 0.2.31 | 0.2.29 | 
| SLICE2:CY0G | 0.1.62 | 0.1.63 | 0.1.61 | 
| SLICE3:CY0G | 0.2.62 | 0.2.63 | 0.2.61 | 
| BY | 0 | 0 | 0 | 
| G2 | 0 | 0 | 1 | 
| G1 | 0 | 1 | 1 | 
| PROD | 1 | 0 | 0 | 
| 1 | 1 | 0 | 1 | 
| 0 | 1 | 1 | 1 | 
| SLICE0:CYINIT | 0.1.4 | 
|---|---|
| SLICE1:CYINIT | 0.2.4 | 
| SLICE2:CYINIT | 0.1.36 | 
| SLICE3:CYINIT | 0.2.36 | 
| BX | 0 | 
| CIN | 1 | 
| SLICE0:CYSELF | 0.1.0 | 
|---|---|
| SLICE1:CYSELF | 0.2.0 | 
| SLICE2:CYSELF | 0.1.32 | 
| SLICE3:CYSELF | 0.2.32 | 
| 1 | 0 | 
| F | 1 | 
| SLICE0:CYSELG | 0.1.3 | 
|---|---|
| SLICE1:CYSELG | 0.2.3 | 
| SLICE2:CYSELG | 0.1.35 | 
| SLICE3:CYSELG | 0.2.35 | 
| 1 | 0 | 
| G | 1 | 
| SLICE0:DIF_MUX | 0.1.15 | 
|---|---|
| SLICE2:DIF_MUX | 0.1.47 | 
| ALT | 0 | 
| BX | 1 | 
| SLICE0:DIG_MUX | 0.1.26 | 
|---|---|
| SLICE2:DIG_MUX | 0.1.58 | 
| ALT | 0 | 
| BY | 1 | 
| SLICE0:DXMUX | 0.1.11 | 
|---|---|
| SLICE1:DXMUX | 0.2.11 | 
| SLICE2:DXMUX | 0.1.43 | 
| SLICE3:DXMUX | 0.2.43 | 
| BX | 0 | 
| X | 1 | 
| SLICE0:DYMUX | 0.1.27 | 
|---|---|
| SLICE1:DYMUX | 0.2.27 | 
| SLICE2:DYMUX | 0.1.59 | 
| SLICE3:DYMUX | 0.2.59 | 
| BY | 0 | 
| Y | 1 | 
| SLICE0:F | 0.0.0 | 0.0.1 | 0.0.2 | 0.0.3 | 0.0.4 | 0.0.5 | 0.0.6 | 0.0.7 | 0.0.8 | 0.0.9 | 0.0.10 | 0.0.11 | 0.0.12 | 0.0.13 | 0.0.14 | 0.0.15 | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SLICE0:G | 0.0.16 | 0.0.17 | 0.0.18 | 0.0.19 | 0.0.20 | 0.0.21 | 0.0.22 | 0.0.23 | 0.0.24 | 0.0.25 | 0.0.26 | 0.0.27 | 0.0.28 | 0.0.29 | 0.0.30 | 0.0.31 | 
| SLICE1:F | 0.3.0 | 0.3.1 | 0.3.2 | 0.3.3 | 0.3.4 | 0.3.5 | 0.3.6 | 0.3.7 | 0.3.8 | 0.3.9 | 0.3.10 | 0.3.11 | 0.3.12 | 0.3.13 | 0.3.14 | 0.3.15 | 
| SLICE1:G | 0.3.16 | 0.3.17 | 0.3.18 | 0.3.19 | 0.3.20 | 0.3.21 | 0.3.22 | 0.3.23 | 0.3.24 | 0.3.25 | 0.3.26 | 0.3.27 | 0.3.28 | 0.3.29 | 0.3.30 | 0.3.31 | 
| SLICE2:F | 0.0.32 | 0.0.33 | 0.0.34 | 0.0.35 | 0.0.36 | 0.0.37 | 0.0.38 | 0.0.39 | 0.0.40 | 0.0.41 | 0.0.42 | 0.0.43 | 0.0.44 | 0.0.45 | 0.0.46 | 0.0.47 | 
| SLICE2:G | 0.0.48 | 0.0.49 | 0.0.50 | 0.0.51 | 0.0.52 | 0.0.53 | 0.0.54 | 0.0.55 | 0.0.56 | 0.0.57 | 0.0.58 | 0.0.59 | 0.0.60 | 0.0.61 | 0.0.62 | 0.0.63 | 
| SLICE3:F | 0.3.32 | 0.3.33 | 0.3.34 | 0.3.35 | 0.3.36 | 0.3.37 | 0.3.38 | 0.3.39 | 0.3.40 | 0.3.41 | 0.3.42 | 0.3.43 | 0.3.44 | 0.3.45 | 0.3.46 | 0.3.47 | 
| SLICE3:G | 0.3.48 | 0.3.49 | 0.3.50 | 0.3.51 | 0.3.52 | 0.3.53 | 0.3.54 | 0.3.55 | 0.3.56 | 0.3.57 | 0.3.58 | 0.3.59 | 0.3.60 | 0.3.61 | 0.3.62 | 0.3.63 | 
| inverted | ~[15] | ~[14] | ~[13] | ~[12] | ~[11] | ~[10] | ~[9] | ~[8] | ~[7] | ~[6] | ~[5] | ~[4] | ~[3] | ~[2] | ~[1] | ~[0] | 
| SLICE0:FFX_INIT | 0.1.18 | 
|---|---|
| SLICE0:FFX_SRVAL | 0.1.14 | 
| SLICE0:FFY_INIT | 0.1.21 | 
| SLICE0:FFY_SRVAL | 0.1.24 | 
| SLICE0:FF_SR_ENABLE | 0.1.17 | 
| SLICE0:F_RAM | 0.1.13 | 
| SLICE0:F_SHIFT | 0.1.8 | 
| SLICE0:G_RAM | 0.1.12 | 
| SLICE0:G_SHIFT | 0.1.6 | 
| SLICE1:FFX_INIT | 0.2.18 | 
| SLICE1:FFX_SRVAL | 0.2.14 | 
| SLICE1:FFY_INIT | 0.2.21 | 
| SLICE1:FFY_SRVAL | 0.2.24 | 
| SLICE2:FFX_INIT | 0.1.50 | 
| SLICE2:FFX_SRVAL | 0.1.46 | 
| SLICE2:FFY_INIT | 0.1.53 | 
| SLICE2:FFY_SRVAL | 0.1.56 | 
| SLICE2:FF_SR_ENABLE | 0.1.49 | 
| SLICE2:F_RAM | 0.1.45 | 
| SLICE2:F_SHIFT | 0.1.40 | 
| SLICE2:G_RAM | 0.1.44 | 
| SLICE2:G_SHIFT | 0.1.38 | 
| SLICE3:FFX_INIT | 0.2.50 | 
| SLICE3:FFX_SRVAL | 0.2.46 | 
| SLICE3:FFY_INIT | 0.2.53 | 
| SLICE3:FFY_SRVAL | 0.2.56 | 
| inverted | ~[0] | 
| SLICE0:FF_LATCH | 0.1.22 | 
|---|---|
| SLICE0:FF_REV_ENABLE | 0.1.23 | 
| SLICE0:FF_SR_SYNC | 0.1.19 | 
| SLICE0:INV.BX | 0.5.14 | 
| SLICE0:INV.BY | 0.5.27 | 
| SLICE0:SLICEWE0USED | 0.2.17 | 
| SLICE0:SLICEWE1USED | 0.1.20 | 
| SLICE1:FF_LATCH | 0.2.22 | 
| SLICE1:FF_REV_ENABLE | 0.2.23 | 
| SLICE1:FF_SR_SYNC | 0.2.19 | 
| SLICE1:INV.BX | 0.5.28 | 
| SLICE1:INV.BY | 0.5.31 | 
| SLICE2:FF_LATCH | 0.1.54 | 
| SLICE2:FF_REV_ENABLE | 0.1.55 | 
| SLICE2:FF_SR_SYNC | 0.1.51 | 
| SLICE2:INV.BX | 0.5.32 | 
| SLICE2:INV.BY | 0.5.35 | 
| SLICE2:SLICEWE0USED | 0.2.49 | 
| SLICE3:FF_LATCH | 0.2.54 | 
| SLICE3:FF_REV_ENABLE | 0.2.55 | 
| SLICE3:FF_SR_SYNC | 0.2.51 | 
| SLICE3:INV.BX | 0.5.36 | 
| SLICE3:INV.BY | 0.5.49 | 
| non-inverted | [0] | 
| SLICE0:FXMUX | 0.1.16 | 0.1.2 | 
|---|---|---|
| SLICE1:FXMUX | 0.2.16 | 0.2.2 | 
| SLICE2:FXMUX | 0.1.48 | 0.1.34 | 
| SLICE3:FXMUX | 0.2.48 | 0.2.34 | 
| F | 0 | 0 | 
| F5 | 0 | 1 | 
| FXOR | 1 | 1 | 
| SLICE0:GYMUX | 0.1.28 | 0.1.25 | 
|---|---|---|
| SLICE1:GYMUX | 0.2.28 | 0.2.25 | 
| SLICE2:GYMUX | 0.1.60 | 0.1.57 | 
| SLICE3:GYMUX | 0.2.60 | 0.2.57 | 
| G | 0 | 0 | 
| FX | 0 | 1 | 
| GXOR | 1 | 1 | 
| SLICE0:XBMUX | 0.1.1 | 
|---|---|
| SLICE2:XBMUX | 0.1.33 | 
| FCY | 0 | 
| FMC15 | 1 | 
| SLICE0:YBMUX | 0.1.5 | 
|---|---|
| SLICE2:YBMUX | 0.1.37 | 
| GCY | 0 | 
| GMC15 | 1 | 
RESERVED_ANDOR
TODO: wtf is this even
RANDOR
This tile overlaps IOI.*.
Tile RANDOR
Cells: 0
Bel RANDOR
| Pin | Direction | Wires | 
|---|
Bitstream
| Bit | Frame | |||
|---|---|---|---|---|
| 0 | 1 | 2 | 3 | |
| 19 | - | - | - | RANDOR:MODE[0] | 
| 18 | - | - | - | - | 
| 17 | - | - | - | - | 
| 16 | - | - | - | - | 
| 15 | - | - | - | - | 
| 14 | - | - | - | - | 
| 13 | - | - | - | - | 
| 12 | - | - | - | - | 
| 11 | - | - | - | - | 
| 10 | - | - | - | - | 
| 9 | - | - | - | - | 
| 8 | - | - | - | - | 
| 7 | - | - | - | - | 
| 6 | - | - | - | - | 
| 5 | - | - | - | - | 
| 4 | - | - | - | - | 
| 3 | - | - | - | - | 
| 2 | - | - | - | - | 
| 1 | - | - | - | - | 
| 0 | - | - | - | - | 
| RANDOR:MODE | 0.3.19 | 
|---|---|
| OR | 0 | 
| AND | 1 | 
RANDOR_INIT
This tile overlaps top-left interconnect tile.
Tile RANDOR_INIT
Cells: 0
Bitstream
| Bit | Frame | 
|---|---|
| 0 | |
| 0 | RANDOR_INIT:MODE[0] | 
| RANDOR_INIT:MODE | 0.0.0 | 
|---|---|
| OR | 0 | 
| AND | 1 |