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
SLICE
s, numberedSLICE0
throughSLICE3
four horizontal tristate buses, going horizontally through the whole row of CLBs
two tristate buffers,
TBUF0
andTBUF1
, driving the tristate buses
The slices are organized as follows:
SLICE0
is on the bottom left of the CLBSLICE1
is aboveSLICE0
SLICE2
is to the right ofSLICE0
SLICE3
is aboveSLICE2
and to the right ofSLICE1
Every slice has:
two 4-input LUTs, named
F
andG
each of them has four inputs, named
F[1-4]
andG[1-4]
every LUT can be used as LUT RAM or shift register
two “bypass inputs” used for various purposes
BX
, associated with theF
LUTBY
, associated with theG
LUT
two wide multiplexers
F5
, associated with theF
LUT, multiplexingF
andG
FX
, associated with theG
LUT, multiplexingF5
andFX
outputs of this and otherSLICE
s
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 theF
LUTY
, associated with theG
LUT
two “bypass” combinational outputs, used for long shift registers and carry chains
XB
, associated with theF
LUTYB
, associated with theG
LUT
two registers and their outputs
FFX
andXQ
, associated with theF
LUTFFY
andYQ
, associated with theG
LUT
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 addressBX
andBY
: 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 fromCOUT
of the slice belowSHIFTOUT
: dedicated output (shift register output)SHIFTIN
: dedicated input (shift register input), routed fromSHIFTOUT
of the previous slice in sequenceSOPOUT
: dedicated output (sum of products output)SOPIN
: dedicated output (sum of products input), routed fromSOPOUT
of the slice to the leftF5
andFX
: dedicated outputs (wide multiplexer outputs)FXINA
andFXINB
: dedicated inputs (wide multiplexer inputs), routed fromF5
andFX
of neighbouring slicesDIG
: dedicated outputALTDIG
: dedicated input
Additionally, some pins and circuitry are shared between SLICE
s 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
FXMUX
andGYMUX
multiplexersthe carry logic
the
F5
wide 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:
CLK
is the write clockSR
is the write enableWF[1-4]
andWG[1-4]
are write address for theF
andG
LUTs, respectivelyDIF
andDIG
are the data input for theF
andG
LUTs, 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 theBX
pin (used for 16×X RAMs)ALT
: use theDIG
value (used for 32×X and larger RAMs)
The DIG_MUX
determines the value of DIG
:
BY
: use theBY
pinALT
: use theALTDIG
value
ALTDIG
is determined as follows:
SLICE0.ALTDIG
is connected toSLICE1.DIG
SLICE1.ALTDIG
is connected toSLICE3.DIG
SLICE2.ALTDIG
is connected toSLICE3.DIG
SLICE3.ALTDIG
is connected toSLICE3.DIG
of 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.BX
SLICE1.SLICEWE0 = SLICE1.BX
SLICE2.SLICEWE0 = SLICE0.BX
SLICE3.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.BY
SLICE1.SLICEWE1 = !SLICE0.BY
SLICE2.SLICEWE1 = SLICE0.BY
SLICE3.SLICEWE1 = !SLICE0.BY
SLICE0.SLICEWE2 = SLICE1.BY
SLICE1.SLICEWE2 = SLICE1.BY
SLICE2.SLICEWE2 = !SLICE1.BY
SLICE3.SLICEWE2 = !SLICE1.BY
If SLICE0.BYOUTUSED
is set, all SLICE
s 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 SLICE
s 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
SLICE0
andSLICE1
can always be usedSLICE2
can be used ifSLICE0
is also used with the same addressSLICE3
can be used ifSLICE1
is also used with the same address
connect
CLK
to write clockconnect
SR
to write enablefor the 16×1 slice in
F
LUT:connect
F[1-4]
to the read/write addressconnect
BX
to write dataset
DIF_MUX
toBX
use
F
output as read data
for the 16×1 slice in
G
LUT:connect
G[1-4]
to the read/write addressconnect
BY
to write dataset
DIG_MUX
toBY
use
G
output as read data
Dual-port 16×X RAM
Dual-port 16×X RAM can be implemented as follows:
pick a pair of slices: either
SLICE0
andSLICE2
orSLICE1
andSLICE3
connect
CLK
to write clockconnect
SR
to write enablefor the 16×1 slice in
F
LUTs:connect
F[1-4]
onSLICE[01]
to the write addressconnect
F[1-4]
onSLICE[23]
to the read addressconnect
BX
of both slices to write dataset
DIF_MUX
toBX
use
F
outputs as read data
for the 16×1 slice in
G
LUTs:connect
G[1-4]
onSLICE[01]
to the write addressconnect
G[1-4]
onSLICE[23]
to the read addressconnect
BY
of both slices to write dataset
DIG_MUX
toBY
use
G
outputs as read data
Single-port 32×X RAM
Single-port 32×X RAM can be implemented as follows:
pick a slice
SLICE0
andSLICE1
can always be usedSLICE2
can be used ifSLICE0
is also used with the same addressSLICE3
can be used ifSLICE1
is also used with the same address
connect
CLK
to write clockconnect
SR
to write enableF
LUT corresponds to addresses0x1X
G
LUT corresponds to addresses0x0X
connect
F[1-4]
andG[1-4]
to low 4 bits of the read/write addressconnect
BX
to bit 4 of read/write addressset
SLICEWE0USED
connect
BY
to write dataset
DIF_MUX
toALT
set
DIG_MUX
toBY
use
F5
output 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+SLICE2
orSLICE1+SLICE3
connect
CLK
to write clockconnect
SR
to write enableF
LUTs correspond to addresses0x1X
G
LUTs correspond to addresses0x0X
connect
F[1-4]
andG[1-4]
ofSLICE[01]
to low 4 bits of the write addressconnect
F[1-4]
andG[1-4]
ofSLICE[23]
to low 4 bits of the read addressconnect
SLICE[01].BX
to bit 4 of write addressconnect
SLICE[23].BX
to bit 4 of read addressset
SLICEWE0USED
connect
BY
of both slices to write dataset
DIF_MUX
toALT
set
DIG_MUX
toBY
use
F5
outputs as read data
Single-port 64×X RAM
pick a pair of slices
SLICE0+SLICE1
can always be usedSLICE2+SLICE3
can also be used ifSLICE0+SLICE1
is used with the same address
connect
CLK
to write clockconnect
SR
to write enableSLICE[13].G
corresponds to addresses0x0X
SLICE[13].F
corresponds to addresses0x1X
SLICE[02].G
corresponds to addresses0x2X
SLICE[02].F
corresponds to addresses0x3X
connect
F[1-4]
andG[1-4]
to low 4 bits of the addressconnect
BX
to bit 4 of the addressset
SLICEWE0USED
connect
SLICE[02].BY
to bit 5 of the addressset
SLICE0.BYOUTUSED
connect
SLICE[13].BY
to write dataset
DIF_MUX
toALT
set
SLICE[02].DIG_MUX
toALT
set
SLICE[13].DIG_MUX
toBY
use
SLICE[02].FX
as read data
Dual-port 64×1 RAM
use the whole CLB
connect
CLK
to write clockconnect
SR
to write enableSLICE[13].G
corresponds to addresses0x0X
SLICE[13].F
corresponds to addresses0x1X
SLICE[02].G
corresponds to addresses0x2X
SLICE[02].F
corresponds to addresses0x3X
connect
SLICE[01].F[1-4]
andSLICE[01].G[1-4]
to low 4 bits of the write addressconnect
SLICE[23].F[1-4]
andSLICE[23].G[1-4]
to low 4 bits of the read addressconnect
SLICE[01].BX
to bit 4 of the write addressconnect
SLICE[23].BX
to bit 4 of the read addressset
SLICEWE0USED
connect
SLICE0.BY
to bit 5 of the write addressconnect
SLICE2.BY
to bit 5 of the read addressset
SLICE0.BYOUTUSED
connect
SLICE[13].BY
to write dataset
DIF_MUX
toALT
set
SLICE[02].DIG_MUX
toALT
set
SLICE[13].DIG_MUX
toBY
use
SLICE[02].FX
as read data
Single-port 128×1 RAM
use the whole CLB
connect
CLK
to write clockconnect
SR
to write enableSLICE3.G
corresponds to addresses0x0X
SLICE3.F
corresponds to addresses0x1X
SLICE2.G
corresponds to addresses0x2X
SLICE2.F
corresponds to addresses0x3X
SLICE1.G
corresponds to addresses0x4X
SLICE1.F
corresponds to addresses0x5X
SLICE0.G
corresponds to addresses0x6X
SLICE0.F
corresponds to addresses0x7X
connect
F[1-4]
andG[1-4]
to low 4 bits of the addressconnect
BX
to bit 4 of the addressset
SLICEWE0USED
connect
SLICE[02].BY
to bit 5 of the addressset
SLICE0.BYOUTUSED
connect
SLICE1.BY
to bit 6 of the addressset
SLICE1.BYOUTUSED
connect
SLICE3.BY
to write dataset
DIF_MUX
toALT
set
SLICE[012].DIG_MUX
toALT
set
SLICE3.DIG_MUX
toBY
use
SLICE1.FX
as 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:
CLK
is the write clockSR
is the write enableDIF
andDIG
are the data input for theF
andG
LUTs, 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 theBX
pinALT
: use theGMC15
value
The DIG_MUX
determines the value of DIG
:
BY
: use theBY
pinALT
: use theSHIFTIN
pin
SHIFTIN
is routed as follows:
SLICE0.SHIFTIN = SLICE1.SHIFTOUT = SLICE1.FMC15
SLICE1.SHIFTIN = SLICE2.SHIFTOUT = SLICE2.FMC15
SLICE2.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 : G
FX = 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:
|
|
|
effective primitive |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 fromCOUT
of theSLICE
belowBX
The CYSELF
mux determines the “propagate” (or select) input of the lower MUXCY
:
F
: propagate is connected toF
LUT output1
: propagate is connected to const-1 (ie. theMUXCY
is effectively skipped from the chain)
The CY0F
mux determines the “generate” input of the lower MUXCY
:
0
(constant)1
(constant)F1
F2
BX
PROD
: equal toF1 & F2
, implementing theMULT_AND
primitive
The CYSELG
mux determines the “propagate” (or select) input of the upper MUXCY
:
G
: propagate is connected toG
LUT output1
: propagate is connected to const-1 (ie. theMUXCY
is effectively skipped from the chain)
The CY0G
mux determines the “generate” input of the upper MUXCY
:
0
(constant)1
(constant)G1
G2
BY
PROD
: equal toG1 & G2
, implementing theMULT_AND
primitive
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.COUT
of CLB belowSLICE1.CIN
: fromSLICE0.COUT
SLICE2.CIN
: fromSLICE3.COUT
of 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 firstSLICE
in 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.SOPOUT
of the CLB to the leftSLICE1.SOPIN
:SLICE3.SOPOUT
of the CLB to the leftSLICE2.SOPIN
:SLICE0.SOPOUT
SLICE3.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)F5
FXOR
The GYMUX
multiplexer controls the Y
output. It has four inputs:
G
(the LUT output)FX
GXOR
SOPOUT
The XBMUX
multiplexer controls the XB
output. It has two inputs:
FCY
FMC15
: 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
(theFXMUX
output)BX
The DYMUX
mulitplexer controls the FFY
data input. It has two inputs:
Y
(theGYMUX
output)BY
Registers
A SLICE
contains two registers:
FFX
, with input determined byDXMUX
and output connected toXQ
FFY
, with input determined byDYMUX
and 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 andCLK
behaves as active-low gate; otherwise, the registers are flip-flops andCLK
is a posedge-triggered clockFF_SYNC
: if set, theSR
andBY
(if enabled) implement synchronous set/reset (with priority overCE
); otherwise, they implement asynchronous set/reset; should not be set together withFF_LATCH
FF[XY]_INIT
: determines the initial or captured value of given registerwhen the global
GSR
signal is pulsed (for example, as part of the configuration process), the register is set to the value of this bitwhen the global
GCAP
signal is pulsed (for example, by theCAPTURE
primitive), this bit captures the current state of the register
FF[XY]_SRVAL
: determines the set/reset value of given registerFF_SR_EN
: if set,SR
is used as the set/reset signal for both registers, setting them to theirFF[XY]_SRVAL
FF_REV_EN
: if set,BY
behaves as secondary set/reset signal for both registers, setting them to the opposite of theirFF[XY]_SRVAL
Tristate buses and TBUF
s
Todo
document this insanity
Bitstream
The data for a CLB is located in the same bitstream tile as the associated INT.CLB
tile.
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: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:CYINIT | [0, 0, 2] |
---|---|
SLICE1:CYINIT | [0, 0, 42] |
SLICE2:CYINIT | [0, 3, 2] |
SLICE3:CYINIT | [0, 3, 42] |
BX | 0 |
CIN | 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: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:CYSELF | [0, 0, 5] |
---|---|
SLICE1:CYSELF | [0, 0, 45] |
SLICE2:CYSELF | [0, 3, 5] |
SLICE3:CYSELF | [0, 3, 45] |
1 | 0 |
F | 1 |
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:DYMUX | [0, 0, 12] |
---|---|
SLICE1:DYMUX | [0, 0, 52] |
SLICE2:DYMUX | [0, 0, 27] |
SLICE3:DYMUX | [0, 0, 67] |
BY | 0 |
Y | 1 |
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:CYSELG | [0, 0, 18] |
---|---|
SLICE1:CYSELG | [0, 0, 58] |
SLICE2:CYSELG | [0, 3, 18] |
SLICE3:CYSELG | [0, 3, 58] |
1 | 0 |
G | 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: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:SOPEXTSEL | [0, 0, 32] |
---|---|
SLICE1:SOPEXTSEL | [0, 0, 72] |
SLICE2:SOPEXTSEL | [0, 0, 31] |
SLICE3:SOPEXTSEL | [0, 0, 71] |
0 | 0 |
SOPIN | 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:YBMUX | [0, 0, 34] |
---|---|
SLICE1:YBMUX | [0, 0, 74] |
SLICE2:YBMUX | [0, 3, 34] |
SLICE3:YBMUX | [0, 3, 74] |
GCY | 0 |
GMC15 | 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: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] |