Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Global interconnect

The SiliconBlue devices have 8 global nets, GLOBAL.[0-7], that can be used to distribute clocks, clock enables, resets, and other high-fanout signals.

Global net sources

Each global net can be driven by one of two possible sources:

  • fabric (driven from an IMUX.IO.EXTRA wire in a particular IOI tile)

  • IO, which can resolve to:

    • HSOSC (for GLOBAL.4 on iCE40R04)
    • LSOSC (for GLOBAL.5 on iCE40R04)
    • HFOSC (for GLOBAL.4 on iCE40T0*)
    • LFOSC (for GLOBAL.5 on iCE40T0*)
    • PLL output (effectively overrides an IO pad or two when enabled)
    • direct input from IO pad (if none of the above apply)

The rough locations of global net sources for iCE65* and iCE40P0* are:

wirefabric sourceIO padPLL output
GLOBAL.0south edge middle (eastern)east edge middle (southern)-
GLOBAL.1north edge middle (eastern)west edge middle (southern)-
GLOBAL.2east edge middle (northern)north edge middle (eastern)north B
GLOBAL.3west edge middle (northern)south edge middle (eastern)south B
GLOBAL.4north edge middle (western)west edge middle (northern)-
GLOBAL.5south edge middle (western)east edge middle (northern)-
GLOBAL.6west edge middle (southern)south edge middle (western)south A
GLOBAL.7east edge middle (southern)north edge middle (western)north A

And for iCE40R04 and iCE40T0*:

wirefabric sourceIO padPLL output
GLOBAL.0south edge middle (eastern)south edge east quarter-
GLOBAL.1north edge middle (eastern)south edge west quarter-
GLOBAL.2north edge east quarternorth edge middle (eastern)north B
GLOBAL.3north edge west quartersouth edge middle (eastern)south B
GLOBAL.4north edge middle (western)HSOSC / HFOSC-
GLOBAL.5south edge middle (western)LSOSC / LFOSC-
GLOBAL.6south edge west quartersouth edge middle (western)south A
GLOBAL.7south edge east quarternorth edge middle (western)north A

The exact locations of fabric and IO pad sources can be obtained from the GB{i}_FABRIC and GB{i}_IO extra nodes in the database.

The 8 muxes selecting the active global net sources are located in a special GB_ROOT tile located in the very center of the device.

Column buffers

On most SiliconBlue devices, the global nets are not connected directly to the IMUX and GOUT multiplexers within interconnect tiles — they pass through “column buffers” instead. Such column buffers have to be enabled via bitstream bits when necessary.

Every interconnect column is partitioned into two or three “clock columns”. Each clock column is further partitioned into two “clock sub-columns” around the middle. The middle row of the clock column contains two sets of column buffers, driving the GLOBAL wires in the sourthern and northern sub-columns.

The rows_colbuf field of a chip in the database describes how columns are divided into clock columns. Every clock column is defined by three rows:

  • the middle row M
  • the start row B
  • the end row T

Rows B..M make up the southern clock sub-column of the given clock column, and rows M..E make up the northern clock sub-column. The column buffers driving the southern sub-column are located in row M - 1, except for BRAM columns on iCE65L01 and iCE40P01 where they are located in row M - 2 instead. The column buffers driving the northern sub-column are located in row M.

The following devices do not have column buffers:

  • iCE65L04
  • iCE65L08
  • iCE65P04
  • iCE40P03

On these devices, the global nets are permanently connected to all consumers, and the column buffer enable bits don’t have to be set.

Tile GB_ROOT_L04

Cells: 8

Switchbox GB_ROOT

siliconblue GB_ROOT_L04 switchbox GB_ROOT muxes GLOBAL_ROOT
BitsDestination
CLK[0][15][0]SE.GLOBAL_ROOT[0]-------
CLK[0][15][1]-SE.GLOBAL_ROOT[1]------
CLK[1][1][0]--SE.GLOBAL_ROOT[2]-----
CLK[1][1][1]---SE.GLOBAL_ROOT[3]----
CLK[1][0][0]----SE.GLOBAL_ROOT[4]---
CLK[1][0][1]-----SE.GLOBAL_ROOT[5]--
CLK[0][14][0]------SE.GLOBAL_ROOT[6]-
CLK[0][14][1]-------SE.GLOBAL_ROOT[7]
Source
0SE.IMUX_IO_EXTRANE.IMUX_IO_EXTRAEN.IMUX_IO_EXTRAWN.IMUX_IO_EXTRANW.IMUX_IO_EXTRASW.IMUX_IO_EXTRAWS.IMUX_IO_EXTRAES.IMUX_IO_EXTRA
1ES.IO_GLOBALWS.IO_GLOBALNE.IO_GLOBALSE.IO_GLOBALWN.IO_GLOBALEN.IO_GLOBALSW.IO_GLOBALNW.IO_GLOBAL

Bitstream

siliconblue GB_ROOT_L04 rect CLK[0]
FrameBit
B0 B1
F0 - -
F1 - -
F2 - -
F3 - -
F4 - -
F5 - -
F6 - -
F7 - -
F8 - -
F9 - -
F10 - -
F11 - -
F12 - -
F13 - -
F14 GB_ROOT: mux SE.GLOBAL_ROOT[6] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[7] bit 0
F15 GB_ROOT: mux SE.GLOBAL_ROOT[0] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[1] bit 0
siliconblue GB_ROOT_L04 rect CLK[1]
FrameBit
B0 B1
F0 GB_ROOT: mux SE.GLOBAL_ROOT[4] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[5] bit 0
F1 GB_ROOT: mux SE.GLOBAL_ROOT[2] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[3] bit 0
F2 - -
F3 - -
F4 - -
F5 - -
F6 - -
F7 - -
F8 - -
F9 - -
F10 - -
F11 - -
F12 - -
F13 - -
F14 - -
F15 - -

Tile GB_ROOT_L08

Cells: 8

Switchbox GB_ROOT

siliconblue GB_ROOT_L08 switchbox GB_ROOT muxes GLOBAL_ROOT
BitsDestination
CLK[0][14][0]SE.GLOBAL_ROOT[0]-------
CLK[0][14][1]-SE.GLOBAL_ROOT[1]------
CLK[1][0][0]--SE.GLOBAL_ROOT[2]-----
CLK[1][0][1]---SE.GLOBAL_ROOT[3]----
CLK[1][1][0]----SE.GLOBAL_ROOT[4]---
CLK[1][1][1]-----SE.GLOBAL_ROOT[5]--
CLK[0][15][0]------SE.GLOBAL_ROOT[6]-
CLK[0][15][1]-------SE.GLOBAL_ROOT[7]
Source
0SE.IMUX_IO_EXTRANE.IMUX_IO_EXTRAEN.IMUX_IO_EXTRAWN.IMUX_IO_EXTRANW.IMUX_IO_EXTRASW.IMUX_IO_EXTRAWS.IMUX_IO_EXTRAES.IMUX_IO_EXTRA
1ES.IO_GLOBALWS.IO_GLOBALNE.IO_GLOBALSE.IO_GLOBALWN.IO_GLOBALEN.IO_GLOBALSW.IO_GLOBALNW.IO_GLOBAL

Bitstream

siliconblue GB_ROOT_L08 rect CLK[0]
FrameBit
B0 B1
F0 - -
F1 - -
F2 - -
F3 - -
F4 - -
F5 - -
F6 - -
F7 - -
F8 - -
F9 - -
F10 - -
F11 - -
F12 - -
F13 - -
F14 GB_ROOT: mux SE.GLOBAL_ROOT[0] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[1] bit 0
F15 GB_ROOT: mux SE.GLOBAL_ROOT[6] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[7] bit 0
siliconblue GB_ROOT_L08 rect CLK[1]
FrameBit
B0 B1
F0 GB_ROOT: mux SE.GLOBAL_ROOT[2] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[3] bit 0
F1 GB_ROOT: mux SE.GLOBAL_ROOT[4] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[5] bit 0
F2 - -
F3 - -
F4 - -
F5 - -
F6 - -
F7 - -
F8 - -
F9 - -
F10 - -
F11 - -
F12 - -
F13 - -
F14 - -
F15 - -

Tile GB_ROOT_R04

Cells: 8

Switchbox GB_ROOT

siliconblue GB_ROOT_R04 switchbox GB_ROOT muxes GLOBAL_ROOT
BitsDestination
CLK[0][14][0]SE.GLOBAL_ROOT[0]-------
CLK[0][14][1]-SE.GLOBAL_ROOT[1]------
CLK[1][0][0]--SE.GLOBAL_ROOT[2]-----
CLK[1][0][1]---SE.GLOBAL_ROOT[3]----
CLK[1][1][0]----SE.GLOBAL_ROOT[4]---
CLK[1][1][1]-----SE.GLOBAL_ROOT[5]--
CLK[0][15][0]------SE.GLOBAL_ROOT[6]-
CLK[0][15][1]-------SE.GLOBAL_ROOT[7]
Source
0SE.IMUX_IO_EXTRANE.IMUX_IO_EXTRAEN.IMUX_IO_EXTRAWN.IMUX_IO_EXTRANW.IMUX_IO_EXTRASW.IMUX_IO_EXTRAWS.IMUX_IO_EXTRAES.IMUX_IO_EXTRA
1ES.IO_GLOBALWS.IO_GLOBALNE.IO_GLOBALSE.IO_GLOBALSE.HSOSC_GLOBALSE.LSOSC_GLOBALSW.IO_GLOBALNW.IO_GLOBAL

Bitstream

siliconblue GB_ROOT_R04 rect CLK[0]
FrameBit
B0 B1
F0 - -
F1 - -
F2 - -
F3 - -
F4 - -
F5 - -
F6 - -
F7 - -
F8 - -
F9 - -
F10 - -
F11 - -
F12 - -
F13 - -
F14 GB_ROOT: mux SE.GLOBAL_ROOT[0] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[1] bit 0
F15 GB_ROOT: mux SE.GLOBAL_ROOT[6] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[7] bit 0
siliconblue GB_ROOT_R04 rect CLK[1]
FrameBit
B0 B1
F0 GB_ROOT: mux SE.GLOBAL_ROOT[2] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[3] bit 0
F1 GB_ROOT: mux SE.GLOBAL_ROOT[4] bit 0 GB_ROOT: mux SE.GLOBAL_ROOT[5] bit 0
F2 - -
F3 - -
F4 - -
F5 - -
F6 - -
F7 - -
F8 - -
F9 - -
F10 - -
F11 - -
F12 - -
F13 - -
F14 - -
F15 - -

Tile COLBUF_L01

Cells: 1

Switchbox COLBUF

siliconblue COLBUF_L01 switchbox COLBUF programmable buffers
DestinationSourceBit
GLOBAL[0]GLOBAL_ROOT[0]MAIN[0][1]
GLOBAL[1]GLOBAL_ROOT[1]MAIN[1][2]
GLOBAL[2]GLOBAL_ROOT[2]MAIN[5][2]
GLOBAL[3]GLOBAL_ROOT[3]MAIN[7][2]
GLOBAL[4]GLOBAL_ROOT[4]MAIN[9][2]
GLOBAL[5]GLOBAL_ROOT[5]MAIN[11][2]
GLOBAL[6]GLOBAL_ROOT[6]MAIN[13][2]
GLOBAL[7]GLOBAL_ROOT[7]MAIN[15][2]

Bitstream

siliconblue COLBUF_L01 rect MAIN
FrameBit
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 B20 B21 B22 B23 B24 B25 B26 B27 B28 B29 B30 B31 B32 B33 B34 B35 B36 B37 B38 B39 B40 B41
F0 - COLBUF: buffer GLOBAL[0] ← GLOBAL_ROOT[0] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F1 - - COLBUF: buffer GLOBAL[1] ← GLOBAL_ROOT[1] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F5 - - COLBUF: buffer GLOBAL[2] ← GLOBAL_ROOT[2] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F7 - - COLBUF: buffer GLOBAL[3] ← GLOBAL_ROOT[3] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F9 - - COLBUF: buffer GLOBAL[4] ← GLOBAL_ROOT[4] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F11 - - COLBUF: buffer GLOBAL[5] ← GLOBAL_ROOT[5] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F13 - - COLBUF: buffer GLOBAL[6] ← GLOBAL_ROOT[6] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F15 - - COLBUF: buffer GLOBAL[7] ← GLOBAL_ROOT[7] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Tile COLBUF_P08

Cells: 1

Switchbox COLBUF

siliconblue COLBUF_P08 switchbox COLBUF programmable buffers
DestinationSourceBit
GLOBAL[0]GLOBAL_ROOT[0]MAIN[9][7]
GLOBAL[1]GLOBAL_ROOT[1]MAIN[8][7]
GLOBAL[2]GLOBAL_ROOT[2]MAIN[11][7]
GLOBAL[3]GLOBAL_ROOT[3]MAIN[10][7]
GLOBAL[4]GLOBAL_ROOT[4]MAIN[13][7]
GLOBAL[5]GLOBAL_ROOT[5]MAIN[12][7]
GLOBAL[6]GLOBAL_ROOT[6]MAIN[15][7]
GLOBAL[7]GLOBAL_ROOT[7]MAIN[14][7]

Bitstream

siliconblue COLBUF_P08 rect MAIN
FrameBit
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 B20 B21 B22 B23 B24 B25 B26 B27 B28 B29 B30 B31 B32 B33 B34 B35 B36 B37 B38 B39 B40 B41
F0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F8 - - - - - - - COLBUF: buffer GLOBAL[1] ← GLOBAL_ROOT[1] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F9 - - - - - - - COLBUF: buffer GLOBAL[0] ← GLOBAL_ROOT[0] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F10 - - - - - - - COLBUF: buffer GLOBAL[3] ← GLOBAL_ROOT[3] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F11 - - - - - - - COLBUF: buffer GLOBAL[2] ← GLOBAL_ROOT[2] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F12 - - - - - - - COLBUF: buffer GLOBAL[5] ← GLOBAL_ROOT[5] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F13 - - - - - - - COLBUF: buffer GLOBAL[4] ← GLOBAL_ROOT[4] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F14 - - - - - - - COLBUF: buffer GLOBAL[7] ← GLOBAL_ROOT[7] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
F15 - - - - - - - COLBUF: buffer GLOBAL[6] ← GLOBAL_ROOT[6] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Tile COLBUF_IO_W

Cells: 1

Switchbox COLBUF

siliconblue COLBUF_IO_W switchbox COLBUF programmable buffers
DestinationSourceBit
GLOBAL[0]GLOBAL_ROOT[0]MAIN[1][8]
GLOBAL[1]GLOBAL_ROOT[1]MAIN[0][8]
GLOBAL[2]GLOBAL_ROOT[2]MAIN[3][8]
GLOBAL[3]GLOBAL_ROOT[3]MAIN[2][8]
GLOBAL[4]GLOBAL_ROOT[4]MAIN[5][8]
GLOBAL[5]GLOBAL_ROOT[5]MAIN[4][8]
GLOBAL[6]GLOBAL_ROOT[6]MAIN[7][8]
GLOBAL[7]GLOBAL_ROOT[7]MAIN[6][8]

Bitstream

siliconblue COLBUF_IO_W rect MAIN
FrameBit
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17
F0 - - - - - - - - COLBUF: buffer GLOBAL[1] ← GLOBAL_ROOT[1] - - - - - - - - -
F1 - - - - - - - - COLBUF: buffer GLOBAL[0] ← GLOBAL_ROOT[0] - - - - - - - - -
F2 - - - - - - - - COLBUF: buffer GLOBAL[3] ← GLOBAL_ROOT[3] - - - - - - - - -
F3 - - - - - - - - COLBUF: buffer GLOBAL[2] ← GLOBAL_ROOT[2] - - - - - - - - -
F4 - - - - - - - - COLBUF: buffer GLOBAL[5] ← GLOBAL_ROOT[5] - - - - - - - - -
F5 - - - - - - - - COLBUF: buffer GLOBAL[4] ← GLOBAL_ROOT[4] - - - - - - - - -
F6 - - - - - - - - COLBUF: buffer GLOBAL[7] ← GLOBAL_ROOT[7] - - - - - - - - -
F7 - - - - - - - - COLBUF: buffer GLOBAL[6] ← GLOBAL_ROOT[6] - - - - - - - - -
F8 - - - - - - - - - - - - - - - - - -
F9 - - - - - - - - - - - - - - - - - -
F10 - - - - - - - - - - - - - - - - - -
F11 - - - - - - - - - - - - - - - - - -
F12 - - - - - - - - - - - - - - - - - -
F13 - - - - - - - - - - - - - - - - - -
F14 - - - - - - - - - - - - - - - - - -
F15 - - - - - - - - - - - - - - - - - -

Tile COLBUF_IO_E

Cells: 1

Switchbox COLBUF

siliconblue COLBUF_IO_E switchbox COLBUF programmable buffers
DestinationSourceBit
GLOBAL[0]GLOBAL_ROOT[0]MAIN[1][9]
GLOBAL[1]GLOBAL_ROOT[1]MAIN[0][9]
GLOBAL[2]GLOBAL_ROOT[2]MAIN[3][9]
GLOBAL[3]GLOBAL_ROOT[3]MAIN[2][9]
GLOBAL[4]GLOBAL_ROOT[4]MAIN[5][9]
GLOBAL[5]GLOBAL_ROOT[5]MAIN[4][9]
GLOBAL[6]GLOBAL_ROOT[6]MAIN[7][9]
GLOBAL[7]GLOBAL_ROOT[7]MAIN[6][9]

Bitstream

siliconblue COLBUF_IO_E rect MAIN
FrameBit
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17
F0 - - - - - - - - - COLBUF: buffer GLOBAL[1] ← GLOBAL_ROOT[1] - - - - - - - -
F1 - - - - - - - - - COLBUF: buffer GLOBAL[0] ← GLOBAL_ROOT[0] - - - - - - - -
F2 - - - - - - - - - COLBUF: buffer GLOBAL[3] ← GLOBAL_ROOT[3] - - - - - - - -
F3 - - - - - - - - - COLBUF: buffer GLOBAL[2] ← GLOBAL_ROOT[2] - - - - - - - -
F4 - - - - - - - - - COLBUF: buffer GLOBAL[5] ← GLOBAL_ROOT[5] - - - - - - - -
F5 - - - - - - - - - COLBUF: buffer GLOBAL[4] ← GLOBAL_ROOT[4] - - - - - - - -
F6 - - - - - - - - - COLBUF: buffer GLOBAL[7] ← GLOBAL_ROOT[7] - - - - - - - -
F7 - - - - - - - - - COLBUF: buffer GLOBAL[6] ← GLOBAL_ROOT[6] - - - - - - - -
F8 - - - - - - - - - - - - - - - - - -
F9 - - - - - - - - - - - - - - - - - -
F10 - - - - - - - - - - - - - - - - - -
F11 - - - - - - - - - - - - - - - - - -
F12 - - - - - - - - - - - - - - - - - -
F13 - - - - - - - - - - - - - - - - - -
F14 - - - - - - - - - - - - - - - - - -
F15 - - - - - - - - - - - - - - - - - -

Tile COLBUF_FIXED

Cells: 1

Switchbox COLBUF

siliconblue COLBUF_FIXED switchbox COLBUF
DestinationSourceKind
GLOBAL[0]GLOBAL_ROOT[0]fixed buffer
GLOBAL[1]GLOBAL_ROOT[1]fixed buffer
GLOBAL[2]GLOBAL_ROOT[2]fixed buffer
GLOBAL[3]GLOBAL_ROOT[3]fixed buffer
GLOBAL[4]GLOBAL_ROOT[4]fixed buffer
GLOBAL[5]GLOBAL_ROOT[5]fixed buffer
GLOBAL[6]GLOBAL_ROOT[6]fixed buffer
GLOBAL[7]GLOBAL_ROOT[7]fixed buffer