[ < Prev | Up | Next > ]   Node: Supported Boards

hexforge / supported boards

Supported boards

Two device families are described well enough to build for, and nine boards have been tried. Status here means what someone observed on hardware, not what ought to work.

Follow a board name for its full detail - device resources and how the eight examples fit - or take the whole matrix as boards.json and boards.csv.

Board matrix

Verified means a named person loaded a bitstream from this version or the previous one and watched the design run.
BoardDeviceLUT4StatusVerifiedNotes
Pebble-25T4-25K24 576full0.7.2Reference board. All eight examples build and run; every release is tested here before tagging.
Pebble-12T4-12K12 288full0.7.2Same family, smaller part. The vga_bars example fits with 71% occupancy and routes in 21 s.
Fenwick A2T4-25K24 576full0.7.1Needs --config-mode spi-x1; the default four-bit mode is wired differently on this board and configuration simply fails.
openbench-t4T4-25K24 576full0.7.2Community design with published schematics, which is why its pin map in boards/ is trustworthy.
Marl-45T4-45K45 056partial0.7.0Builds and runs, but block RAM cascades are not supported, so no single memory above 4 kbit. Routing a half-full part takes minutes.
Crofter LiteM1-8K7 680partial0.7.1No PLL on the part and DDR input registers are unimplemented, so anything above the 25 MHz oscillator is out of reach.
Thistle EdgeT4-12K12 288partial0.6.0Only the internal oscillator is mapped; the external clock pin is on a bank the device file describes incorrectly. Known bug, not yet fixed.
Dunlin M1M1-8K7 680none-Bitstreams build correctly but cannot be loaded: the board's configuration bridge uses an undocumented protocol and nobody has reverse-engineered it.
Harrow XGX-2-none-Third device family entirely. No device file exists and writing one is a months-long measurement job, so this is not planned.

What the three statuses mean

full
All eight bundled examples compile, route, pack and run on the board. A named person confirmed this on the current or previous release. Pin map and configuration mode are in the tree.
partial
The board works for designs that avoid a specific missing feature. The missing feature is named in the table, not left as "some limitations apply".
none
Do not spend an evening on it. The reason is given so you can judge whether it is worth fixing.

Device families

PLL counts are what the silicon has, not what the toolchain can use - see the note below.
PartLUT4FFBRAM ×4 kbitPLLIOBitstream
T4-12K12 28812 2883219672 704 B
T4-25K24 57624 576642128141 312 B
T4-45K45 05645 0561082192258 048 B
M1-8K7 6807 6801606446 080 B

Hard blocks are mostly off limits. Block RAM is inferred only for a single-port synchronous array whose depth is a multiple of 512 and whose width is 1, 2, 4, 8 or 16 bits; anything else becomes flip-flops, silently and expensively. PLLs are never inferred - instantiate HX_PLL by hand with the divider values you worked out yourself, because the tool will not compute them for you. There is no DSP or multiplier primitive at all; a * operator builds an array multiplier out of LUTs and eats the device.

Pin maps

Each supported board has a file in boards/ listing its physical pins, the configuration mode and the on-board clock frequency. A pin map is a plain list, so adapting one for a revision of the same board usually means editing two or three lines:

# boards/pebble-25.board
device      T4-25K
config_mode spi-x4
osc         12.0MHz  pin A7
led         0  pin B3
led         1  pin B4
button      0  pin C9
pmod_a      0..7  pins D1 D2 D3 D4 E1 E2 E3 E4

Those names are what set_io in your constraints file refers to. Using a raw pin designator works too, and is the only option on a board without a map.

Getting a board added

Three things make a board report usable, and they take about an hour to produce:

  1. Which of the eight bundled examples built, and which of those actually ran on the hardware.
  2. The exact hxpack invocation that produced a loadable bitstream, including the configuration mode, plus what the board's own loader printed.
  3. A pin map in the format above, or a link to the board's published schematic so one can be written.

Three of the four full-support boards got there this way. Send reports to hexforge@hexforge.cloud; a board that only ever got a "works for me" message stays off the table, because that sentence has never once been enough.

[ < Prev | Up | Next > ]   Next node: Timing Analysis
supported boards · matrix reviewed 2026-10-03 · see also: limitations