Configurable Logic Block
The main logic resource in Virtex 2 devices is the CLB (Configurable Logic Block). It corresponds one-to-one with the INT.CLB interconnect tile.  Every CLB has:
- four 
SLICEs, numberedSLICE0throughSLICE3 - four horizontal tristate buses, going horizontally through the whole row of CLBs
 - two tristate buffers, 
TBUF0andTBUF1, driving the tristate buses 
The slices are organized as follows:
SLICE0is on the bottom left of the CLBSLICE1is aboveSLICE0SLICE2is to the right ofSLICE0SLICE3is aboveSLICE2and to the right ofSLICE1
Every slice has:
- two 4-input LUTs, named 
FandG- each of them has four inputs, named 
F[1-4]andG[1-4] - every 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
 - sum of products logic, going horizontally rightwards through the CLB row
 - two main combinational outputs
X, associated with theFLUTY, 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)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 outputsCOUT: 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 sequenceSOPOUT: dedicated output (sum of products output)SOPIN: dedicated output (sum of products input), routed fromSOPOUTof the slice to the leftF5andFX: dedicated outputs (wide multiplexer outputs)FXINAandFXINB: dedicated inputs (wide multiplexer inputs), routed fromF5andFXof neighbouring slicesDIG: dedicated outputALTDIG: dedicated input
Additionally, some pins and circuitry are shared between SLICEs within the same CLB.
The CLK, CE, SR, BX, and BY inputs are invertible on the interconnect level. The CE and SR inputs are further inverted once within the CLB, which should be compensated for with interconnect inversion.
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:
- the 
FXMUXandGYMUXmultiplexers - the carry logic
 - the 
F5wide multiplexer 
LUT RAM
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 enableWF[1-4]andWG[1-4]are write address for theFandGLUTs, respectivelyDIFandDIGare the data input for theFandGLUTs, respectivelySLICEWE0: bit 4 of the write address, when enabledSLICEWE1: bit 5 of the write address, when enabledSLICEWE2: bit 6 of the write address, when enabled
The write address is routed as follows:
SLICE0.W[FG][1-4]is routed fromSLICE0.[FG][1-4]SLICE1.W[FG][1-4]is routed fromSLICE1.[FG][1-4]SLICE2.W[FG][1-4]is routed fromSLICE0.[FG][1-4]SLICE3.W[FG][1-4]is routed fromSLICE1.[FG][1-4]
Thus, SLICE[01] can be used alone to implement single-port RAM, or together with SLICE[23] to implement dual port or larger RAM.
The DIF_MUX determines the value of DIF:
BX: use theBXpin (used for 16×X RAMs)ALT: use theDIGvalue (used for 32×X and larger RAMs)
The DIG_MUX determines the value of DIG:
BY: use theBYpinALT: use theALTDIGvalue
ALTDIG is determined as follows:
SLICE0.ALTDIGis connected toSLICE1.DIGSLICE1.ALTDIGis connected toSLICE3.DIGSLICE2.ALTDIGis connected toSLICE3.DIGSLICE3.ALTDIGis connected toSLICE3.DIGof the CLB above
Note that DI[FG]_MUX attributes are also used in the shift register mode, but with different meaning.
The SLICEWE0 signals are routed as follows:
SLICE0.SLICEWE0 = SLICE0.BXSLICE1.SLICEWE0 = SLICE1.BXSLICE2.SLICEWE0 = SLICE0.BXSLICE3.SLICEWE0 = SLICE1.BX
When SLICEWE0USED is set, the SLICEWE0 signal is used within the slice. 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.
The SLICEWE1 and SLICEWE2 signals are routed as follows:
SLICE0.SLICEWE1 = SLICE0.BYSLICE1.SLICEWE1 = !SLICE0.BYSLICE2.SLICEWE1 = SLICE0.BYSLICE3.SLICEWE1 = !SLICE0.BYSLICE0.SLICEWE2 = SLICE1.BYSLICE1.SLICEWE2 = SLICE1.BYSLICE2.SLICEWE2 = !SLICE1.BYSLICE3.SLICEWE2 = !SLICE1.BY
If SLICE0.BYOUTUSED is set, all SLICEs 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.
If SLICE1.BYOUTUSED is set, all SLICEs within the CLB will use their SLICEWE2 signal as a write enable — the LUTs are only written when SLICEWE2 is 1. Otherwise, all SLICEWE2 signals are ignored.
TODO: SLICE2 and SLICE3 also have BYOUTUSED bits — what do they do, if anything?
Single-port 16×X RAM
Single-port 16×X RAM can be implemented as follows:
- pick a slice
SLICE0andSLICE1can always be usedSLICE2can be used ifSLICE0is also used with the same addressSLICE3can be used ifSLICE1is 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 pair of slices: either 
SLICE0andSLICE2orSLICE1andSLICE3 - connect 
CLKto write clock - connect 
SRto write enable - for the 16×1 slice in 
FLUTs:- connect 
F[1-4]onSLICE[01]to the write address - connect 
F[1-4]onSLICE[23]to the read address - connect 
BXof both slices to write data - set 
DIF_MUXtoBX - use 
Foutputs as read data 
 - connect 
 - for the 16×1 slice in 
GLUTs:- connect 
G[1-4]onSLICE[01]to the write address - connect 
G[1-4]onSLICE[23]to the read address - connect 
BYof both slices to write data - set 
DIG_MUXtoBY - use 
Goutputs as read data 
 - connect 
 
Single-port 32×X RAM
Single-port 32×X RAM can be implemented as follows:
- pick a slice
SLICE0andSLICE1can always be usedSLICE2can be used ifSLICE0is also used with the same addressSLICE3can be used ifSLICE1is also used with the same address
 - connect 
CLKto write clock - connect 
SRto write enable FLUT corresponds to addresses0x1XGLUT corresponds to addresses0x0X- 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 
Dual-port 32×X RAM
Dual-port 32×X RAM can be implemented as follows:
- pick a pair of slices: either 
SLICE0+SLICE2orSLICE1+SLICE3 - connect 
CLKto write clock - connect 
SRto write enable FLUTs correspond to addresses0x1XGLUTs correspond to addresses0x0X- connect 
F[1-4]andG[1-4]ofSLICE[01]to low 4 bits of the write address - connect 
F[1-4]andG[1-4]ofSLICE[23]to low 4 bits of the read address - connect 
SLICE[01].BXto bit 4 of write address - connect 
SLICE[23].BXto bit 4 of read address - set 
SLICEWE0USED - connect 
BYof both slices to write data - set 
DIF_MUXtoALT - set 
DIG_MUXtoBY - use 
F5outputs as read data 
Single-port 64×X RAM
- pick a pair of slices
SLICE0+SLICE1can always be usedSLICE2+SLICE3can also be used ifSLICE0+SLICE1is used with the same address
 - connect 
CLKto write clock - connect 
SRto write enable SLICE[13].Gcorresponds to addresses0x0XSLICE[13].Fcorresponds to addresses0x1XSLICE[02].Gcorresponds to addresses0x2XSLICE[02].Fcorresponds to addresses0x3X- connect 
F[1-4]andG[1-4]to low 4 bits of the address - connect 
BXto bit 4 of the address - set 
SLICEWE0USED - connect 
SLICE[02].BYto bit 5 of the address - set 
SLICE0.BYOUTUSED - connect 
SLICE[13].BYto write data - set 
DIF_MUXtoALT - set 
SLICE[02].DIG_MUXtoALT - set 
SLICE[13].DIG_MUXtoBY - use 
SLICE[02].FXas read data 
Dual-port 64×1 RAM
- use the whole CLB
 - connect 
CLKto write clock - connect 
SRto write enable SLICE[13].Gcorresponds to addresses0x0XSLICE[13].Fcorresponds to addresses0x1XSLICE[02].Gcorresponds to addresses0x2XSLICE[02].Fcorresponds to addresses0x3X- connect 
SLICE[01].F[1-4]andSLICE[01].G[1-4]to low 4 bits of the write address - connect 
SLICE[23].F[1-4]andSLICE[23].G[1-4]to low 4 bits of the read address - connect 
SLICE[01].BXto bit 4 of the write address - connect 
SLICE[23].BXto bit 4 of the read address - set 
SLICEWE0USED - connect 
SLICE0.BYto bit 5 of the write address - connect 
SLICE2.BYto bit 5 of the read address - set 
SLICE0.BYOUTUSED - connect 
SLICE[13].BYto write data - set 
DIF_MUXtoALT - set 
SLICE[02].DIG_MUXtoALT - set 
SLICE[13].DIG_MUXtoBY - use 
SLICE[02].FXas read data 
Single-port 128×1 RAM
- use the whole CLB
 - connect 
CLKto write clock - connect 
SRto write enable SLICE3.Gcorresponds to addresses0x0XSLICE3.Fcorresponds to addresses0x1XSLICE2.Gcorresponds to addresses0x2XSLICE2.Fcorresponds to addresses0x3XSLICE1.Gcorresponds to addresses0x4XSLICE1.Fcorresponds to addresses0x5XSLICE0.Gcorresponds to addresses0x6XSLICE0.Fcorresponds to addresses0x7X- connect 
F[1-4]andG[1-4]to low 4 bits of the address - connect 
BXto bit 4 of the address - set 
SLICEWE0USED - connect 
SLICE[02].BYto bit 5 of the address - set 
SLICE0.BYOUTUSED - connect 
SLICE1.BYto bit 6 of the address - set 
SLICE1.BYOUTUSED - connect 
SLICE3.BYto write data - set 
DIF_MUXtoALT - set 
SLICE[012].DIG_MUXtoALT - set 
SLICE3.DIG_MUXtoBY - use 
SLICE1.FXas read data 
Shift registers
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 = SLICE1.SHIFTOUT = SLICE1.FMC15SLICE1.SHIFTIN = SLICE2.SHIFTOUT = SLICE2.FMC15SLICE2.SHIFTIN = SLICE3.SHIFTOUT = SLICE3.FMC15
SLICE3.SHIFTIN is 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 | SLICE1.F5 | MUXF6 | 
SLICE1 | SLICE0.FX | SLICE2.FX | MUXF7 | 
SLICE2 | SLICE2.F5 | SLICE3.F5 | MUXF6 | 
SLICE3 | SLICE1.FX | SLICE1.FX, from CLB above | MUXF8 | 
The FX output isn't connected across the PowerPC hole — a MUXF8 cannot be made of two CLBs separated by a PowerPC.
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
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)
The CY0F mux determines the "generate" input of the lower MUXCY:
0(constant)1(constant)F1F2BXPROD: equal toF1 & F2, implementing theMULT_ANDprimitive
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)
The CY0G mux determines the "generate" input of the upper MUXCY:
0(constant)1(constant)G1G2BYPROD: equal toG1 & G2, implementing theMULT_ANDprimitive
The hardwired logic implemented is:
FCY = CYSELF ? CY0F : CIN(lowerMUXCY)COUT = GCY = CYSELG ? CY0G : FCY(upperMUXCY)FXOR = F ^ CIN(lowerXORCY)GXOR = G ^ FCY(upperXORCY)
The dedicated CIN input is routed from:
SLICE0.CIN: fromSLICE1.COUTof CLB belowSLICE1.CIN: fromSLICE0.COUTSLICE2.CIN: fromSLICE3.COUTof CLB belowSLICE3.CIN: fromSLICE2.COUT
The carry chains are not connected over PowerPC holes. The SLICE[02].CIN inputs in the row above bottom IOI and in tiles directly above PowerPC are indeterminate.
Sum of products
The carry logic can be used to implement fast wide AND gates (ie. products). Each SLICE also contains a dedicated ORCY primitive that allows combining multiple carry chains into a sum-of-products function.
The SOPEXTSEL mux determines the starting point of the ORCY chain:
0: const 0 (this is the firstSLICEin the chain)SOPIN(this is not the firstSLICE)
The dedicated ORCY primitive implements simple hardwired logic:
SOPOUT = SOPEXTSEL | COUT
The SOPIN pin is routed as follows:
SLICE0.SOPIN:SLICE2.SOPOUTof the CLB to the leftSLICE1.SOPIN:SLICE3.SOPOUTof the CLB to the leftSLICE2.SOPIN:SLICE0.SOPOUTSLICE3.SOPIN:SLICE1.SOPOUT
The SOPOUT chain is connected across BRAM columns, but is not connected over PowerPC holes.
Output multiplexers
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 four inputs:
G(the LUT output)FXGXORSOPOUT
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
Registers
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
Tristate buses and TBUFs
TODO: document this insanity
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.S0.BX | 
| BY | input | IMUX.S0.BY | 
| CE | input | IMUX.CE0 | 
| CLK | input | IMUX.CLK0 | 
| F1 | input | IMUX.S0.F1 | 
| F2 | input | IMUX.S0.F2 | 
| F3 | input | IMUX.S0.F3 | 
| F4 | input | IMUX.S0.F4 | 
| G1 | input | IMUX.S0.G1 | 
| G2 | input | IMUX.S0.G2 | 
| G3 | input | IMUX.S0.G3 | 
| G4 | input | IMUX.S0.G4 | 
| SR | input | IMUX.SR0 | 
| WF1 | input | IMUX.S0.F1 | 
| WF2 | input | IMUX.S0.F2 | 
| WF3 | input | IMUX.S0.F3 | 
| WF4 | input | IMUX.S0.F4 | 
| WG1 | input | IMUX.S0.G1 | 
| WG2 | input | IMUX.S0.G2 | 
| WG3 | input | IMUX.S0.G3 | 
| WG4 | input | IMUX.S0.G4 | 
| X | output | OUT.FAN0 | 
| XB | output | OUT.SEC17 | 
| XQ | output | OUT.SEC20 | 
| Y | output | OUT.FAN4 | 
| YB | output | OUT.SEC8 | 
| YQ | output | OUT.SEC15 | 
Bel SLICE1
| Pin | Direction | Wires | 
|---|---|---|
| BX | input | IMUX.S1.BX | 
| BY | input | IMUX.S1.BY | 
| CE | input | IMUX.CE1 | 
| CLK | input | IMUX.CLK1 | 
| F1 | input | IMUX.S1.F1 | 
| F2 | input | IMUX.S1.F2 | 
| F3 | input | IMUX.S1.F3 | 
| F4 | input | IMUX.S1.F4 | 
| G1 | input | IMUX.S1.G1 | 
| G2 | input | IMUX.S1.G2 | 
| G3 | input | IMUX.S1.G3 | 
| G4 | input | IMUX.S1.G4 | 
| SR | input | IMUX.SR1 | 
| WF1 | input | IMUX.S1.F1 | 
| WF2 | input | IMUX.S1.F2 | 
| WF3 | input | IMUX.S1.F3 | 
| WF4 | input | IMUX.S1.F4 | 
| WG1 | input | IMUX.S1.G1 | 
| WG2 | input | IMUX.S1.G2 | 
| WG3 | input | IMUX.S1.G3 | 
| WG4 | input | IMUX.S1.G4 | 
| X | output | OUT.FAN1 | 
| XB | output | OUT.SEC12 | 
| XQ | output | OUT.SEC21 | 
| Y | output | OUT.FAN5 | 
| YB | output | OUT.SEC9 | 
| YQ | output | OUT.SEC16 | 
Bel SLICE2
| Pin | Direction | Wires | 
|---|---|---|
| BX | input | IMUX.S2.BX | 
| BY | input | IMUX.S2.BY | 
| CE | input | IMUX.CE2 | 
| CLK | input | IMUX.CLK2 | 
| F1 | input | IMUX.S2.F1 | 
| F2 | input | IMUX.S2.F2 | 
| F3 | input | IMUX.S2.F3 | 
| F4 | input | IMUX.S2.F4 | 
| G1 | input | IMUX.S2.G1 | 
| G2 | input | IMUX.S2.G2 | 
| G3 | input | IMUX.S2.G3 | 
| G4 | input | IMUX.S2.G4 | 
| SR | input | IMUX.SR2 | 
| WF1 | input | IMUX.S0.F1 | 
| WF2 | input | IMUX.S0.F2 | 
| WF3 | input | IMUX.S0.F3 | 
| WF4 | input | IMUX.S0.F4 | 
| WG1 | input | IMUX.S0.G1 | 
| WG2 | input | IMUX.S0.G2 | 
| WG3 | input | IMUX.S0.G3 | 
| WG4 | input | IMUX.S0.G4 | 
| X | output | OUT.FAN2 | 
| XB | output | OUT.SEC13 | 
| XQ | output | OUT.SEC22 | 
| Y | output | OUT.FAN6 | 
| YB | output | OUT.SEC11 | 
| YQ | output | OUT.SEC18 | 
Bel SLICE3
| Pin | Direction | Wires | 
|---|---|---|
| BX | input | IMUX.S3.BX | 
| BY | input | IMUX.S3.BY | 
| CE | input | IMUX.CE3 | 
| CLK | input | IMUX.CLK3 | 
| F1 | input | IMUX.S3.F1 | 
| F2 | input | IMUX.S3.F2 | 
| F3 | input | IMUX.S3.F3 | 
| F4 | input | IMUX.S3.F4 | 
| G1 | input | IMUX.S3.G1 | 
| G2 | input | IMUX.S3.G2 | 
| G3 | input | IMUX.S3.G3 | 
| G4 | input | IMUX.S3.G4 | 
| SR | input | IMUX.SR3 | 
| WF1 | input | IMUX.S1.F1 | 
| WF2 | input | IMUX.S1.F2 | 
| WF3 | input | IMUX.S1.F3 | 
| WF4 | input | IMUX.S1.F4 | 
| WG1 | input | IMUX.S1.G1 | 
| WG2 | input | IMUX.S1.G2 | 
| WG3 | input | IMUX.S1.G3 | 
| WG4 | input | IMUX.S1.G4 | 
| X | output | OUT.FAN3 | 
| XB | output | OUT.SEC14 | 
| XQ | output | OUT.SEC23 | 
| Y | output | OUT.FAN7 | 
| YB | output | OUT.SEC10 | 
| YQ | output | OUT.SEC19 | 
Bel TBUF0
| Pin | Direction | Wires | 
|---|---|---|
| I | input | IMUX.TI0 | 
| T | input | IMUX.TS0 | 
Bel TBUF1
| Pin | Direction | Wires | 
|---|---|---|
| I | input | IMUX.TI1 | 
| T | input | IMUX.TS1 | 
Bel TBUS
| Pin | Direction | Wires | 
|---|---|---|
| OUT | output | OUT.TBUS | 
Bel wires
| Wire | Pins | 
|---|---|
| IMUX.CLK0 | SLICE0.CLK | 
| IMUX.CLK1 | SLICE1.CLK | 
| IMUX.CLK2 | SLICE2.CLK | 
| IMUX.CLK3 | SLICE3.CLK | 
| IMUX.SR0 | SLICE0.SR | 
| IMUX.SR1 | SLICE1.SR | 
| IMUX.SR2 | SLICE2.SR | 
| IMUX.SR3 | SLICE3.SR | 
| IMUX.CE0 | SLICE0.CE | 
| IMUX.CE1 | SLICE1.CE | 
| IMUX.CE2 | SLICE2.CE | 
| IMUX.CE3 | SLICE3.CE | 
| IMUX.TI0 | TBUF0.I | 
| IMUX.TI1 | TBUF1.I | 
| IMUX.TS0 | TBUF0.T | 
| IMUX.TS1 | TBUF1.T | 
| IMUX.S0.F1 | SLICE0.F1, SLICE0.WF1, SLICE2.WF1 | 
| IMUX.S0.F2 | SLICE0.F2, SLICE0.WF2, SLICE2.WF2 | 
| IMUX.S0.F3 | SLICE0.F3, SLICE0.WF3, SLICE2.WF3 | 
| IMUX.S0.F4 | SLICE0.F4, SLICE0.WF4, SLICE2.WF4 | 
| IMUX.S0.G1 | SLICE0.G1, SLICE0.WG1, SLICE2.WG1 | 
| IMUX.S0.G2 | SLICE0.G2, SLICE0.WG2, SLICE2.WG2 | 
| IMUX.S0.G3 | SLICE0.G3, SLICE0.WG3, SLICE2.WG3 | 
| IMUX.S0.G4 | SLICE0.G4, SLICE0.WG4, SLICE2.WG4 | 
| IMUX.S0.BX | SLICE0.BX | 
| IMUX.S0.BY | SLICE0.BY | 
| IMUX.S1.F1 | SLICE1.F1, SLICE1.WF1, SLICE3.WF1 | 
| IMUX.S1.F2 | SLICE1.F2, SLICE1.WF2, SLICE3.WF2 | 
| IMUX.S1.F3 | SLICE1.F3, SLICE1.WF3, SLICE3.WF3 | 
| IMUX.S1.F4 | SLICE1.F4, SLICE1.WF4, SLICE3.WF4 | 
| IMUX.S1.G1 | SLICE1.G1, SLICE1.WG1, SLICE3.WG1 | 
| IMUX.S1.G2 | SLICE1.G2, SLICE1.WG2, SLICE3.WG2 | 
| IMUX.S1.G3 | SLICE1.G3, SLICE1.WG3, SLICE3.WG3 | 
| IMUX.S1.G4 | SLICE1.G4, SLICE1.WG4, SLICE3.WG4 | 
| IMUX.S1.BX | SLICE1.BX | 
| IMUX.S1.BY | SLICE1.BY | 
| IMUX.S2.F1 | SLICE2.F1 | 
| IMUX.S2.F2 | SLICE2.F2 | 
| IMUX.S2.F3 | SLICE2.F3 | 
| IMUX.S2.F4 | SLICE2.F4 | 
| IMUX.S2.G1 | SLICE2.G1 | 
| IMUX.S2.G2 | SLICE2.G2 | 
| IMUX.S2.G3 | SLICE2.G3 | 
| IMUX.S2.G4 | SLICE2.G4 | 
| IMUX.S2.BX | SLICE2.BX | 
| IMUX.S2.BY | SLICE2.BY | 
| IMUX.S3.F1 | SLICE3.F1 | 
| IMUX.S3.F2 | SLICE3.F2 | 
| IMUX.S3.F3 | SLICE3.F3 | 
| IMUX.S3.F4 | SLICE3.F4 | 
| IMUX.S3.G1 | SLICE3.G1 | 
| IMUX.S3.G2 | SLICE3.G2 | 
| IMUX.S3.G3 | SLICE3.G3 | 
| IMUX.S3.G4 | SLICE3.G4 | 
| IMUX.S3.BX | SLICE3.BX | 
| IMUX.S3.BY | SLICE3.BY | 
| 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.SEC8 | SLICE0.YB | 
| OUT.SEC9 | SLICE1.YB | 
| OUT.SEC10 | SLICE3.YB | 
| OUT.SEC11 | SLICE2.YB | 
| OUT.SEC12 | SLICE1.XB | 
| OUT.SEC13 | SLICE2.XB | 
| OUT.SEC14 | SLICE3.XB | 
| OUT.SEC15 | SLICE0.YQ | 
| OUT.SEC16 | SLICE1.YQ | 
| OUT.SEC17 | SLICE0.XB | 
| OUT.SEC18 | SLICE2.YQ | 
| OUT.SEC19 | SLICE3.YQ | 
| OUT.SEC20 | SLICE0.XQ | 
| OUT.SEC21 | SLICE1.XQ | 
| OUT.SEC22 | SLICE2.XQ | 
| OUT.SEC23 | SLICE3.XQ | 
| OUT.TBUS | TBUS.OUT | 
Bitstream
| SLICE0:BYOUTUSED | 0.0.22 | 
|---|---|
| SLICE0:FF_LATCH | 0.0.4 | 
| SLICE0:FF_REV_ENABLE | 0.0.11 | 
| SLICE0:FF_SR_SYNC | 0.0.16 | 
| SLICE0:F_RAM | 0.1.18 | 
| SLICE0:F_SHIFT | 0.1.16 | 
| SLICE0:G_RAM | 0.1.20 | 
| SLICE0:G_SHIFT | 0.1.21 | 
| SLICE0:SLICEWE0USED | 0.0.17 | 
| SLICE1:BYOUTUSED | 0.0.62 | 
| SLICE1:FF_LATCH | 0.0.44 | 
| SLICE1:FF_REV_ENABLE | 0.0.51 | 
| SLICE1:FF_SR_SYNC | 0.0.56 | 
| SLICE1:F_RAM | 0.1.58 | 
| SLICE1:F_SHIFT | 0.1.56 | 
| SLICE1:G_RAM | 0.1.60 | 
| SLICE1:G_SHIFT | 0.1.61 | 
| SLICE1:SLICEWE0USED | 0.0.57 | 
| SLICE2:BYOUTUSED | 0.3.22 | 
| SLICE2:FF_LATCH | 0.0.35 | 
| SLICE2:FF_REV_ENABLE | 0.0.28 | 
| SLICE2:FF_SR_SYNC | 0.0.23 | 
| SLICE2:F_RAM | 0.2.18 | 
| SLICE2:F_SHIFT | 0.2.16 | 
| SLICE2:G_RAM | 0.2.20 | 
| SLICE2:G_SHIFT | 0.2.21 | 
| SLICE2:SLICEWE0USED | 0.3.17 | 
| SLICE3:BYOUTUSED | 0.3.62 | 
| SLICE3:FF_LATCH | 0.0.75 | 
| SLICE3:FF_REV_ENABLE | 0.0.68 | 
| SLICE3:FF_SR_SYNC | 0.0.63 | 
| SLICE3:F_RAM | 0.2.58 | 
| SLICE3:F_SHIFT | 0.2.56 | 
| SLICE3:G_RAM | 0.2.60 | 
| SLICE3:G_SHIFT | 0.2.61 | 
| SLICE3:SLICEWE0USED | 0.3.57 | 
| TBUF0:OUT_A | 0.0.19 | 
| TBUF0:OUT_B | 0.0.59 | 
| TBUF1:OUT_A | 0.0.20 | 
| TBUF1:OUT_B | 0.0.37 | 
| TBUS:JOINER_R | 0.0.60 | 
| non-inverted | [0] | 
| SLICE0:CY0F | 0.0.10 | 0.0.9 | 0.0.13 | 
|---|---|---|---|
| SLICE1:CY0F | 0.0.50 | 0.0.49 | 0.0.53 | 
| SLICE2:CY0F | 0.3.10 | 0.3.9 | 0.3.13 | 
| SLICE3:CY0F | 0.3.50 | 0.3.49 | 0.3.53 | 
| 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.0.29 | 0.0.30 | 0.0.26 | 
|---|---|---|---|
| SLICE1:CY0G | 0.0.69 | 0.0.70 | 0.0.66 | 
| SLICE2:CY0G | 0.3.29 | 0.3.30 | 0.3.26 | 
| SLICE3:CY0G | 0.3.69 | 0.3.70 | 0.3.66 | 
| 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.0.2 | 
|---|---|
| SLICE1:CYINIT | 0.0.42 | 
| SLICE2:CYINIT | 0.3.2 | 
| SLICE3:CYINIT | 0.3.42 | 
| BX | 0 | 
| CIN | 1 | 
| SLICE0:CYSELF | 0.0.5 | 
|---|---|
| SLICE1:CYSELF | 0.0.45 | 
| SLICE2:CYSELF | 0.3.5 | 
| SLICE3:CYSELF | 0.3.45 | 
| 1 | 0 | 
| F | 1 | 
| SLICE0:CYSELG | 0.0.18 | 
|---|---|
| SLICE1:CYSELG | 0.0.58 | 
| SLICE2:CYSELG | 0.3.18 | 
| SLICE3:CYSELG | 0.3.58 | 
| 1 | 0 | 
| G | 1 | 
| SLICE0:DIF_MUX | 0.0.1 | 
|---|---|
| SLICE1:DIF_MUX | 0.0.41 | 
| SLICE2:DIF_MUX | 0.3.1 | 
| SLICE3:DIF_MUX | 0.3.41 | 
| ALT | 0 | 
| BX | 1 | 
| SLICE0:DIG_MUX | 0.0.38 | 
|---|---|
| SLICE1:DIG_MUX | 0.0.78 | 
| SLICE2:DIG_MUX | 0.3.38 | 
| SLICE3:DIG_MUX | 0.3.78 | 
| ALT | 0 | 
| BY | 1 | 
| SLICE0:DXMUX | 0.0.3 | 
|---|---|
| SLICE1:DXMUX | 0.0.43 | 
| SLICE2:DXMUX | 0.0.36 | 
| SLICE3:DXMUX | 0.0.76 | 
| BX | 0 | 
| X | 1 | 
| SLICE0:DYMUX | 0.0.12 | 
|---|---|
| SLICE1:DYMUX | 0.0.52 | 
| SLICE2:DYMUX | 0.0.27 | 
| SLICE3:DYMUX | 0.0.67 | 
| BY | 0 | 
| Y | 1 | 
| SLICE0:F | 0.1.0 | 0.1.1 | 0.1.2 | 0.1.3 | 0.1.4 | 0.1.5 | 0.1.6 | 0.1.7 | 0.1.8 | 0.1.9 | 0.1.10 | 0.1.11 | 0.1.12 | 0.1.13 | 0.1.14 | 0.1.15 | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SLICE0:G | 0.1.39 | 0.1.38 | 0.1.37 | 0.1.36 | 0.1.35 | 0.1.34 | 0.1.33 | 0.1.32 | 0.1.31 | 0.1.30 | 0.1.29 | 0.1.28 | 0.1.27 | 0.1.26 | 0.1.25 | 0.1.24 | 
| SLICE1:F | 0.1.40 | 0.1.41 | 0.1.42 | 0.1.43 | 0.1.44 | 0.1.45 | 0.1.46 | 0.1.47 | 0.1.48 | 0.1.49 | 0.1.50 | 0.1.51 | 0.1.52 | 0.1.53 | 0.1.54 | 0.1.55 | 
| SLICE1:G | 0.1.79 | 0.1.78 | 0.1.77 | 0.1.76 | 0.1.75 | 0.1.74 | 0.1.73 | 0.1.72 | 0.1.71 | 0.1.70 | 0.1.69 | 0.1.68 | 0.1.67 | 0.1.66 | 0.1.65 | 0.1.64 | 
| SLICE2:F | 0.2.0 | 0.2.1 | 0.2.2 | 0.2.3 | 0.2.4 | 0.2.5 | 0.2.6 | 0.2.7 | 0.2.8 | 0.2.9 | 0.2.10 | 0.2.11 | 0.2.12 | 0.2.13 | 0.2.14 | 0.2.15 | 
| SLICE2:G | 0.2.39 | 0.2.38 | 0.2.37 | 0.2.36 | 0.2.35 | 0.2.34 | 0.2.33 | 0.2.32 | 0.2.31 | 0.2.30 | 0.2.29 | 0.2.28 | 0.2.27 | 0.2.26 | 0.2.25 | 0.2.24 | 
| SLICE3:F | 0.2.40 | 0.2.41 | 0.2.42 | 0.2.43 | 0.2.44 | 0.2.45 | 0.2.46 | 0.2.47 | 0.2.48 | 0.2.49 | 0.2.50 | 0.2.51 | 0.2.52 | 0.2.53 | 0.2.54 | 0.2.55 | 
| SLICE3:G | 0.2.79 | 0.2.78 | 0.2.77 | 0.2.76 | 0.2.75 | 0.2.74 | 0.2.73 | 0.2.72 | 0.2.71 | 0.2.70 | 0.2.69 | 0.2.68 | 0.2.67 | 0.2.66 | 0.2.65 | 0.2.64 | 
| inverted | ~[15] | ~[14] | ~[13] | ~[12] | ~[11] | ~[10] | ~[9] | ~[8] | ~[7] | ~[6] | ~[5] | ~[4] | ~[3] | ~[2] | ~[1] | ~[0] | 
| SLICE0:FFX_INIT | 0.1.17 | 
|---|---|
| SLICE0:FFX_SRVAL | 0.0.0 | 
| SLICE0:FFY_INIT | 0.2.17 | 
| SLICE0:FFY_SRVAL | 0.0.15 | 
| SLICE0:FF_SR_ENABLE | 0.1.22 | 
| SLICE1:FFX_INIT | 0.1.57 | 
| SLICE1:FFX_SRVAL | 0.0.40 | 
| SLICE1:FFY_INIT | 0.2.57 | 
| SLICE1:FFY_SRVAL | 0.0.55 | 
| SLICE1:FF_SR_ENABLE | 0.1.62 | 
| SLICE2:FFX_INIT | 0.1.19 | 
| SLICE2:FFX_SRVAL | 0.0.39 | 
| SLICE2:FFY_INIT | 0.2.19 | 
| SLICE2:FFY_SRVAL | 0.0.24 | 
| SLICE2:FF_SR_ENABLE | 0.2.22 | 
| SLICE3:FFX_INIT | 0.1.59 | 
| SLICE3:FFX_SRVAL | 0.0.79 | 
| SLICE3:FFY_INIT | 0.2.59 | 
| SLICE3:FFY_SRVAL | 0.0.64 | 
| SLICE3:FF_SR_ENABLE | 0.2.62 | 
| inverted | ~[0] | 
| SLICE0:FXMUX | 0.0.14 | 0.0.6 | 
|---|---|---|
| SLICE1:FXMUX | 0.0.54 | 0.0.46 | 
| SLICE2:FXMUX | 0.3.14 | 0.3.6 | 
| SLICE3:FXMUX | 0.3.54 | 0.3.46 | 
| F | 0 | 0 | 
| F5 | 0 | 1 | 
| FXOR | 1 | 1 | 
| SLICE0:GYMUX | 0.0.25 | 0.0.33 | 
|---|---|---|
| SLICE1:GYMUX | 0.0.65 | 0.0.73 | 
| SLICE2:GYMUX | 0.3.25 | 0.3.33 | 
| SLICE3:GYMUX | 0.3.65 | 0.3.73 | 
| G | 0 | 0 | 
| FX | 0 | 1 | 
| SOPOUT | 1 | 0 | 
| GXOR | 1 | 1 | 
| SLICE0:SOPEXTSEL | 0.0.32 | 
|---|---|
| SLICE1:SOPEXTSEL | 0.0.72 | 
| SLICE2:SOPEXTSEL | 0.0.31 | 
| SLICE3:SOPEXTSEL | 0.0.71 | 
| 0 | 0 | 
| SOPIN | 1 | 
| SLICE0:XBMUX | 0.0.21 | 
|---|---|
| SLICE1:XBMUX | 0.0.61 | 
| SLICE2:XBMUX | 0.3.21 | 
| SLICE3:XBMUX | 0.3.61 | 
| FCY | 0 | 
| FMC15 | 1 | 
| SLICE0:YBMUX | 0.0.34 | 
|---|---|
| SLICE1:YBMUX | 0.0.74 | 
| SLICE2:YBMUX | 0.3.34 | 
| SLICE3:YBMUX | 0.3.74 | 
| GCY | 0 | 
| GMC15 | 1 |