https://github.com/fpgadeveloper/board-repo
FPGA Developer board repository
https://github.com/fpgadeveloper/board-repo
fpga fpga-board fpga-soc
Last synced: 2 months ago
JSON representation
FPGA Developer board repository
- Host: GitHub
- URL: https://github.com/fpgadeveloper/board-repo
- Owner: fpgadeveloper
- Created: 2026-03-30T11:30:27.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-06T19:18:10.000Z (2 months ago)
- Last Synced: 2026-04-06T20:25:46.739Z (2 months ago)
- Topics: fpga, fpga-board, fpga-soc
- Homepage: https://boards.fpgadeveloper.com
- Size: 168 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FPGA Board Repository
This repository contains the community-maintained database of FPGA development boards used by [FPGA Board Repository](https://boards.fpgadeveloper.com). Contributions are welcome — if you know of an FPGA board that's missing, you can add it here.
## Files
| Path | Description |
|------|-------------|
| `boards/` | Individual board JSON files, organized by vendor (e.g. `boards/amd-xilinx/ZCU102.json`). |
| `vendors.json` | Centralized registry of board vendors and silicon vendors. |
| `schema.json` | JSON Schema (Draft 2020-12) that validates individual board objects. |
## How to Add a Board
### Option 1: Submit via the Website
The easiest way to add a board is through the **Submit** page on the website:
**[boards.fpgadeveloper.com/submit.html](https://boards.fpgadeveloper.com/submit.html)**
Fill in the form and your submission will be reviewed and added to the database.
### Option 2: Submit a Pull Request
If you prefer, you can add a board directly by creating a new JSON file and opening a pull request.
#### Steps
1. **Fork** this repository.
2. **Create** a new file at `boards//.json` with your board object.
3. **Validate** your changes against the schema (see [Validation](#validation) below).
4. **Open a pull request** with a brief description of the board you're adding.
#### Board Object Format
Each board is a JSON object with the following required fields:
| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique identifier, typically the ordering part number without spaces (e.g. `"ZCU102"`). |
| `name` | string | Display name of the board. |
| `status` | string | `"active"`, `"eol"` (end-of-life), or `"discontinued"`. |
| `url` | string | Product page URL. |
| `vendor` | string | Board vendor key (must match a key in `vendors.json` `board_vendors`). |
| `price` | object | `{ "value": 129.00, "currency": "USD" }` |
| `device` | object | FPGA/SoC device info (see below). |
The `device` object requires:
| Field | Type | Description |
|-------|------|-------------|
| `part` | string | Full orderable part number (e.g. `"XC7A35T-1CPG236C"`). |
| `vendor` | string | Silicon vendor key (must match a key in `vendors.json` `silicon_vendors`). |
Optional fields include `pcie`, `video`, `ethernet`, `networking`, `expansion`, `storage`, and `wireless`. See `schema.json` for full details on each.
#### Example
Create a file at `boards/digilent/Arty-A7.json`:
```json
{
"id": "Arty-A7",
"name": "Arty A7",
"status": "active",
"url": "https://digilent.com/shop/arty-a7/",
"vendor": "digilent",
"price": {
"value": 129.00,
"currency": "USD"
},
"device": {
"part": "XC7A35T-1CPG236C",
"vendor": "amd-xilinx"
}
}
```
#### Example with Interfaces
`boards/amd-xilinx/SP701.json`:
```json
{
"id": "SP701",
"name": "SP701",
"status": "active",
"url": "https://www.xilinx.com/sp701",
"vendor": "amd-xilinx",
"price": {
"value": 774.00,
"currency": "USD"
},
"device": {
"part": "XC7S100-2FGGA676C",
"vendor": "amd-xilinx"
},
"video": {
"hdmi_out": 1,
"mipi_dsi": 1,
"mipi_csi": 1
},
"ethernet": [
{ "speed": 1000, "ports": 2 }
],
"expansion": {
"fmc_lpc": 1,
"pmod": 6
}
}
```
## Vendors
Board and silicon vendors are defined in `vendors.json`. Each board references vendors by key rather than embedding vendor details inline.
### Board Vendors
| Key | Name |
|-----|------|
| `alinx` | Alinx |
| `amd-xilinx` | AMD Xilinx |
| `avnet` | Avnet |
| `bittware` | BittWare |
| `digilent` | Digilent |
| `efinix` | Efinix |
| `hitech-global` | Hitech Global |
| `imperix` | imperix |
| `invent-logics` | Invent Logics |
| `knjn` | KNJN |
| `krtkl` | Krtkl |
| `lattice` | Lattice |
| `myir` | MYIR Tech |
| `numato-lab` | Numato Lab |
| `opal-kelly` | Opal Kelly |
| `real-digital` | Real Digital |
| `redpitaya` | RedPitaya |
| `rhs-research` | RHS Research |
| `sundance` | Sundance Multiprocessor Technology Ltd. |
| `terasic` | Terasic |
| `trenz` | Trenz Electronic |
| `tria` | Tria Technologies |
| `tul` | TUL |
### Silicon Vendors
| Key | Name |
|-----|------|
| `achronix` | Achronix |
| `altera` | Altera |
| `amd-xilinx` | AMD Xilinx |
| `cologne-chip` | Cologne Chip |
| `efinix` | Efinix |
| `gowin` | Gowin Semiconductor |
| `lattice` | Lattice |
| `microchip` | Microchip |
| `quicklogic` | QuickLogic |
To add a new vendor, add an entry to the appropriate section in `vendors.json` with a kebab-case key, display name, and URL.
### Tips
- Only include optional fields that have meaningful values. If a board has no PCIe, omit the `pcie` key entirely.
- Use the ISO 4217 currency code for the `price.currency` field (e.g. `"USD"`, `"EUR"`, `"GBP"`).
- The `id` should be unique and contain only letters, numbers, hyphens, dots, and underscores.
- The filename should match the board ID (e.g. board with `"id": "ZCU102"` goes in `ZCU102.json`).
- Set `status` to `"active"` for boards currently available for purchase, `"eol"` for end-of-life boards, or `"discontinued"` for discontinued boards.
## Validation
You can validate individual board files against the schema:
```bash
pip install jsonschema referencing
python -c "
import json, glob
from jsonschema import Draft202012Validator
from referencing import Registry, Resource
with open('schema.json') as f:
schema = json.load(f)
board_schema = schema['\$defs']['board']
resource = Resource.from_contents(schema)
registry = Registry().with_resource('', resource)
validator = Draft202012Validator(board_schema, registry=registry)
errors = 0
files = sorted(glob.glob('boards/**/*.json', recursive=True))
for path in files:
with open(path) as f:
board = json.load(f)
board_errors = list(validator.iter_errors(board))
if board_errors:
print(f'{path}:')
for e in board_errors:
print(f' - {e.json_path}: {e.message}')
errors += len(board_errors)
print(f'{len(files)} boards checked, {errors} error(s)' if errors else f'{len(files)} boards checked — all valid!')
"
```
## License
This data is maintained by the community for use by [FPGA Board Repository](https://boards.fpgadeveloper.com).