Skip to main content
Glama

fpgaZeroMCP

CI License: MIT Python MCP

Сервер с открытым исходным кодом Model Context Protocol, который предоставляет ИИ-ассистентам полный набор инструментов FPGA: линтинг, симуляция, синтез, размещение и трассировка, прошивка битстрима, а также реестр IP-ядер в реальном времени на базе GitHub.

Попросите ваш ИИ найти ядра, загрузить их, выполнить линтинг HDL, синтезировать многофайловый проект VHDL или Verilog с диска, запустить симуляцию, а затем прошить битстрим на вашу плату — и все это, не покидая окно чата.

Возможности

  • Мультиязычность: Verilog, SystemVerilog и VHDL (через ghdl-yosys-plugin)

  • Три режима ввода: встроенная строка code, словарь files с несколькими файлами или путь project_dir на диске

  • Поддержка списков файлов: files.f/sources.f с директивами +incdir+, +define+ и вложенными -f

  • Пресеты плат: 11 встроенных плат (iCEBreaker, ULX3S, TinyFPGA BX, Tang Nano и др.) — автоматически устанавливает цель/устройство/корпус/частоту

  • Автоматическое обнаружение ограничений: поиск .pcf/.lpf/.pdc/.cst в директории вашего проекта

  • Программирование битстрима: прошивка через iceprog (iCE40) или openFPGALoader (ECP5/Gowin/Nexus)

  • Парсинг результатов симуляции: обнаружение шаблонов PASS/FAIL/UVM со сводкой сигналов VCD

  • Фоновые сборки: длительный синтез/PnR с опросом состояния и строгим списком разрешенных команд EDA

  • Реестр IP-ядер: поиск и импорт из GitHub в реальном времени с метаданными FuseSoC CAPI2

  • Проверка работоспособности: определение того, какие инструменты OSS CAD Suite установлены и доступны


Содержание


Как это работает

Your AI assistant  <-->  fpgaZeroMCP (stdio MCP server)  <-->  OSS tools
                                    |
                           cores/   registry on GitHub
                           (uart_tx, fifo + any imported)

Сервер MCP работает как локальный подпроцесс. Ваш ИИ вызывает инструменты на нем через JSON-RPC (stdio). Сервер обращается к Yosys, nextpnr, iverilog, Verilator и другим инструментам из OSS CAD Suite, а также может загружать FPGA-ядра с открытым исходным кодом напрямую с GitHub.


Предварительные требования

Требование

Примечания

Python 3.11+

OSS CAD Suite

Включает iverilog, Yosys, nextpnr, Verilator, Verible, GHDL в одной загрузке

LiteX + litex-boards

Опционально — требуется только для инструментов LiteX

Добавьте OSS CAD Suite в ваш PATH после установки. Все обертки инструментов корректно обрабатывают отсутствие того или иного инструмента.

Доступ к API GitHub

Запросы к API GitHub по умолчанию не аутентифицированы и ограничены по частоте. Установите персональный токен доступа, чтобы увеличить лимиты:

# Linux/macOS
export GITHUB_TOKEN=ghp_...
# Windows (PowerShell)
$env:GITHUB_TOKEN = "ghp_..."

Установка

git clone https://github.com/lcapossio/fpgaZeroMCP
cd fpgaZeroMCP
pip install -e .

Настройка MCP-клиента

Claude Desktop

Добавьте в claude_desktop_config.json:

{
  "mcpServers": {
    "fpgaZeroMCP": {
      "command": "python",
      "args": ["/path/to/fpgaZeroMCP/server.py"],
      "env": { "PYTHONPATH": "/path/to/fpgaZeroMCP" }
    }
  }
}

VS Code (GitHub Copilot)

Добавьте в .vscode/mcp.json в вашей рабочей области:

{
  "servers": {
    "fpgaZeroMCP": {
      "type": "stdio",
      "command": "python",
      "args": ["/path/to/fpgaZeroMCP/server.py"],
      "env": { "PYTHONPATH": "/path/to/fpgaZeroMCP" }
    }
  }
}

Cursor / Windsurf

Добавьте в ваши настройки MCP (Settings → MCP Servers):

{
  "fpgaZeroMCP": {
    "command": "python",
    "args": ["/path/to/fpgaZeroMCP/server.py"],
    "env": { "PYTHONPATH": "/path/to/fpgaZeroMCP" }
  }
}

Примеры запросов

  • "Найди мне ядро I2C master и импортируй его."

  • "Синтезируй VHDL-файлы в ~/projects/my_fpga и скажи мне количество LUT."

  • "Выполни PnR для моего проекта для платы iCEBreaker, а затем прошей его."

  • "Запусти размещение и трассировку с seed 42, чтобы попытаться улучшить тайминги."

  • "Выполни линтинг этого Verilog и исправь ошибки."

  • "Симулируй этот FIFO и скажи, прошел ли тестбенч."

  • "Отформатируй этот файл SystemVerilog."

  • "Какие инструменты OSS CAD Suite у меня установлены?"


Инструменты

Качество HDL

Инструмент

Описание

lint_hdl

Проверка синтаксиса/ошибок через iverilog (V/SV) или GHDL (VHDL) — один файл

lint_project

Линтинг нескольких файлов вместе для разрешения перекрестных ссылок между модулями

get_diagnostics

Структурированная диагностика по строкам — Verilator → verible fallback (V/SV), GHDL (VHDL)

format_hdl

Автоформатирование через verible-verilog-format (V/SV) или vsg (VHDL)

Процесс проектирования

Инструмент

Описание

simulate

Компиляция и запуск тестбенчей — iverilog (V/SV) или GHDL (VHDL). Возвращает вердикт + сводку VCD

synthesize

Синтез Yosys со статистикой ресурсов. Принимает code, files или project_dir. Verilog, SV, VHDL

place_and_route

Yosys + nextpnr за один шаг. Пресеты плат, автоопределение ограничений, вывод битстрима

program_fpga

Прошивка битстрима через iceprog или openFPGALoader

list_boards

Перечисление встроенных пресетов плат (цель/устройство/корпус/частота)

Реестр IP-ядер

Инструмент

Описание

list_ip_cores

Просмотр локального реестра, фильтрация по категориям

get_ip_core

Получение манифеста и исходного кода HDL для ядра

generate_ip

Получение фрагмента параметризованной инстанциации + исходных файлов

search_github_cores

Поиск на GitHub репозиториев FPGA IP с лицензией MIT

import_github_core

Загрузка репозитория GitHub в локальный реестр

import_fusesoc_core

Импорт локального файла FuseSoC CAPI2 .core

LiteX

Инструмент

Описание

litex_build

Запуск цели платы LiteX с --build

litex_soc

Генерация LiteX SoC без сборки гейтвара

litex_flow

Запуск цели платы LiteX с полностью пользовательскими аргументами

Управление сборкой

Инструмент

Описание

start_build

Запуск длительной команды в фоновом режиме (только разрешенные инструменты EDA)

build_status

Проверка прогресса — статус, прошедшее время, распарсенная фаза/использование/тайминги

list_builds

Список всех отслеживаемых сборок (запущенных и завершенных)

cancel_build

Завершение запущенной фоновой сборки

cleanup_build_logs

Удаление старых логов сборки по возрасту и общему размеру

Сервер / реестр

Инструмент

Описание

check_tools

Отчет о том, какие инструменты OSS CAD Suite установлены, с путями и версиями

reload_registry

Повторное сканирование директорий ядер без перезапуска сервера


Реестр IP-ядер

Ядра находятся в cores/<name>/ — манифест core.json и один или несколько файлов HDL. Сервер автоматически обнаруживает их при запуске и перезагружает после любого импорта.

Включены два эталонных ядра (uart_tx, fifo) для демонстрации формата. Реестр не предназначен для роста здесь — он работает на базе GitHub.

Получение ядер во время выполнения

# Find a RISC-V softcore
search_github_cores("riscv softcore", language="verilog")

# Pull it in
import_github_core("YosysHQ/picorv32")

# It is now in the local registry
get_ip_core("picorv32")
generate_ip("picorv32", {"COMPRESSED_ISA": 1})

Сервер автоматически использует метаданные FuseSoC CAPI2 (файлы .core), если они найдены в репозитории, предоставляя более богатую информацию о параметрах и портах. Принимаются только репозитории с разрешенной лицензией.

Вклад в развитие ядер

Не открывайте PR, добавляющие ядра в этот репозиторий. Вместо этого:

  1. Опубликуйте свой HDL-репозиторий на GitHub с темой fpga и лицензией MIT

  2. Опционально добавьте файл FuseSoC CAPI2 .core для более богатых метаданных

  3. Любой желающий сможет затем выполнить import_github_core("you/your-core") напрямую

Это позволяет серверу оставаться легким и дает сообществу органично расти на GitHub.


Цели синтеза

Цель

Вендор / Семейство

Полный OSS P&R

ice40

Lattice iCE40

да — nextpnr-ice40

ecp5

Lattice ECP5

да — nextpnr-ecp5

nexus

Lattice Nexus (CrossLink-NX, CertusPro-NX)

да — nextpnr-nexus

gowin

Gowin

да — nextpnr-gowin

xilinx

Xilinx / AMD

Только синтез

intel

Intel / Altera

Только синтез

generic

Независимо от технологии

Только нетлист

Общие значения устройства/корпуса для place_and_route:

Цель

устройство

корпус

ice40

hx1k hx8k up5k lp1k

tq144 qn84 sg48 cm81

ecp5

25k 45k 85k

CABGA256 CABGA381

nexus

LIFCL-40-9BG400C

(встроено в строку устройства)

gowin

GW1N-UV4LQ144C6/I5

(встроено в строку устройства)


LiteX

LiteX — это Python SoC-фреймворк, который может работать со многими платами FPGA. fpgaZeroMCP предоставляет три специализированных инструмента LiteX, а также принимает backend="litex" в synthesize и place_and_route.

# Dedicated tools
litex_build(board="arty", args=["--build"])
litex_soc(board="arty", args=["--no-compile"])
litex_flow(board="arty", args=["--build", "--output-dir", "build_arty"])

# As a backend in existing flow tools
synthesize(code="...", top_module="top", backend="litex", litex_board="arty")
place_and_route(code="...", top_module="top", target="ice40", device="hx1k",
                backend="litex", litex_board="arty", litex_args=["--build"])

Локальные репозитории ядер

Вы можете указать реестру ваши собственные локальные директории HDL двумя способами:

Переменная окружения:

Linux/macOS (разделенные двоеточием):

export USERCORES_PATH=/home/you/my-cores:/home/you/work-cores

Windows (разделенные точкой с запятой, PowerShell):

$env:USERCORES_PATH = "C:\Users\you\my-cores;C:\Users\you\work-cores"

Файл конфигурации (~/.fpgazero_mcp/config.json):

{
  "core_paths": [
    "/home/you/my-cores",
    "/home/you/work-cores"
  ]
}

Все пути сканируются при запуске вместе с встроенной директорией cores/.

Разрешенные лицензии

По умолчанию import_github_core принимает репозитории с любой из этих лицензий SPDX:

MIT, BSD-2-Clause, BSD-3-Clause, Apache-2.0, ISC, GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0

Переопределите с помощью переменной окружения FPGAZERO_ALLOWED_LICENSES (идентификаторы SPDX, разделенные запятыми):

# Linux/macOS
export FPGAZERO_ALLOWED_LICENSES=MIT
export FPGAZERO_ALLOWED_LICENSES=MIT,Apache-2.0
# Windows (PowerShell)
$env:FPGAZERO_ALLOWED_LICENSES = "MIT"
$env:FPGAZERO_ALLOWED_LICENSES = "MIT,Apache-2.0"

Идентификаторы лицензий следуют нотации SPDX. Проверка выполняется во время импорта; search_github_cores возвращает результаты независимо от лицензии, чтобы вы могли оценить их перед импортом.


Тестирование

pip install -e ".[dev]"
python -m pytest tests/ -v

Некоторые тесты требуют наличия инструментов OSS CAD Suite в PATH. Тесты, которым нужны отсутствующие инструменты, пропускаются автоматически.


Переменные окружения

Переменная

Описание

GITHUB_TOKEN

Персональный токен доступа GitHub — повышает лимиты API

USERCORES_PATH

Дополнительные директории поиска ядер (разделенные разделителем путей ОС)

FPGAZERO_ALLOWED_LICENSES

Идентификаторы SPDX через запятую для import_github_core (по умолчанию: MIT,BSD-2-Clause,BSD-3-Clause,Apache-2.0,ISC,GPL-2.0,GPL-3.0,LGPL-2.1,LGPL-3.0)

FPGAZERO_TMPDIR

Переопределение корневой директории временного рабочего пространства

FPGAZERO_ALLOWED_DIRS

Список дополнительных директорий, разделенных разделителем путей ОС, из которых project_dir может читать (в дополнение к cwd и $HOME)


Автономный режим / Скрипты

Python API можно использовать напрямую без MCP-клиента:

from registry.resolver import CoreRegistry
from tools.lint import lint_hdl

reg = CoreRegistry()

# Import a core from GitHub
reg.import_github_core("ben-marshall/uart")

# Generate a parameterized instantiation
result = reg.generate_ip("uart", {"CLKS_PER_BIT": 868})
print(result["instantiation"])

# Lint some HDL
lint_hdl(open("my_design.v").read())
python example.py   # runs the built-in demo

Схема core.json

{
  "name": "my_core",
  "version": "1.0.0",
  "description": "...",
  "author": "you",
  "license": "MIT",
  "language": "verilog",
  "category": "communication",
  "tags": ["spi", "serial"],
  "parameters": {
    "DATA_WIDTH": { "type": "integer", "default": 8, "description": "..." }
  },
  "ports": {
    "clk": { "direction": "input", "width": 1, "description": "System clock" }
  },
  "files": ["my_core.v"]
}

Автор

Леонардо Капоссио (bard0) — hello@bard0.com

Install Server
A
security – no known vulnerabilities
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bard0-design/fpgaZeroMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server