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 установлены и доступны


Related MCP server: EDA Tools MCP Server

Содержание


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

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

Available Tools

15 tools
format_hdlA

Format HDL source code and return the result. Verilog/SystemVerilog: uses verible-verilog-format. VHDL: uses vsg (pip install vsg). Returns the formatted code and whether it changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesHDL source code to format
languageNoHDL language variantverilog

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal that the tool returns both formatted code and a change indicator, which is useful behavioral context. However, it doesn't mention error handling, performance characteristics, or any limitations of the underlying formatters (verible-verilog-format and vsg).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with three sentences that each earn their place: the core functionality, the specific formatters used for different languages, and the return values. It's front-loaded with the primary purpose and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a relatively simple formatting tool with good schema coverage but no output schema, the description provides adequate context. It explains what the tool does, mentions the specific formatters, and describes the return values. However, without an output schema, it could benefit from more detail about the return format structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema already documents both parameters thoroughly. The description adds minimal value beyond the schema by mentioning that 'code' is 'HDL source code to format' (which the schema already states) and implying the language parameter determines which formatter is used. This meets the baseline expectation when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Format HDL source code'), the resource involved ('HDL source code'), and the outcome ('return the result'). It distinguishes this tool from siblings like lint_hdl, simulate, and synthesize by focusing specifically on code formatting rather than analysis, verification, or synthesis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool (formatting HDL code) and implicitly distinguishes it from siblings by mentioning specific formatters for different languages. However, it doesn't explicitly state when NOT to use it or name specific alternative tools for related tasks like linting or synthesis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_ipB

Generate a parameterized instance of an IP core. Returns the HDL source files and a ready-to-paste Verilog instantiation snippet with the requested parameter values applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCore name, e.g. 'uart_tx' or 'fifo'
parametersNoParameter overrides, e.g. {"CLKS_PER_BIT": 434}
instance_nameNoVerilog instance name (default: <core_name>_inst)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool generates files and snippets but lacks details on permissions needed, whether it modifies existing files, error handling, or rate limits. For a tool that likely involves file system operations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and output. It is front-loaded with the main action and avoids unnecessary details, making it highly concise and effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (3 parameters, nested objects, no output schema), the description is adequate but incomplete. It explains what the tool does but lacks behavioral context and usage guidelines. Without annotations or output schema, more detail on outputs or operational constraints would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the three parameters. The description adds no additional meaning beyond implying parameter overrides affect the output, which the schema already covers. Baseline 3 is appropriate as the schema handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Generate a parameterized instance'), identifies the resource ('IP core'), and specifies the output ('HDL source files and a ready-to-paste Verilog instantiation snippet'). It distinguishes from sibling tools like 'list_ip_cores' or 'get_ip_core' by focusing on generation with parameter application rather than listing or retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'import_github_core' or 'synthesize'. It mentions the tool's function but does not specify prerequisites, appropriate contexts, or exclusions, leaving the agent without usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_diagnosticsA

Return structured lint diagnostics (line, column, severity, message) for HDL source. Verilog/SystemVerilog: uses Verilator (primary) with verible-verilog-lint as fallback. VHDL: uses GHDL. All tools are part of OSS CAD Suite.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesHDL source code
languageNoHDL language variantverilog

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about the specific linting tools used (Verilator, verible-verilog-lint, GHDL) and mentions they are part of OSS CAD Suite, which helps understand implementation details. However, it doesn't disclose rate limits, error handling, or performance characteristics that would be valuable for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences: the first states the core purpose and output format, the second specifies the tools used per language. Every sentence adds value with no wasted words, making it appropriately sized and front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides good purpose and tool implementation context but lacks details about return values, error conditions, or operational constraints. For a diagnostic tool with 2 parameters, it's adequate but has clear gaps in behavioral completeness that would help an agent use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain code format expectations or language variant implications). Baseline 3 is appropriate when the schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('return structured lint diagnostics') and resources ('HDL source'), including details about the diagnostic format (line, column, severity, message) and the specific tools used for different languages (Verilator, verible-verilog-lint, GHDL). It distinguishes from siblings like 'lint_hdl' by specifying the structured diagnostic output format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for HDL source code linting with specific language variants, but does not explicitly state when to use this tool versus alternatives like 'lint_hdl' or other siblings. It provides context about the tools used but lacks explicit guidance on when/when-not to use it or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ip_coreA

Fetch the full manifest and HDL source files for a named IP core.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCore name, e.g. 'uart_tx' or 'fifo'

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions fetching files but does not disclose behavioral traits such as whether this requires authentication, rate limits, what happens if the core doesn't exist, or the format of the returned data. This leaves significant gaps for a tool that retrieves resources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key action and resource. Every word earns its place, with no wasted text, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (fetching files for IP cores), no annotations, and no output schema, the description is minimally adequate but incomplete. It states what is fetched but lacks details on behavior, error handling, or output format, which are important for such an operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'name' documented as 'Core name, e.g. 'uart_tx' or 'fifo''. The description adds no additional meaning beyond this, as it only references 'named IP core' without extra details. Baseline 3 is appropriate when schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('fetch') and resource ('full manifest and HDL source files for a named IP core'), distinguishing it from siblings like 'list_ip_cores' (which likely lists names) or 'import_github_core' (which imports from external sources). It precisely defines what the tool retrieves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need source files for a specific IP core, but it does not explicitly state when to use this versus alternatives like 'import_github_core' or 'search_github_cores'. It provides basic context but lacks explicit guidance on exclusions or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_fusesoc_coreA

Import a local FuseSoC CAPI2 .core file into the registry. HDL files referenced in the .core file must exist in the same directory. Useful when you already have FuseSoC cores checked out locally.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute or relative path to the .core file

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that 'HDL files referenced in the .core file must exist in the same directory,' which is a crucial behavioral constraint. However, it lacks details on permissions, error handling, or output format, leaving gaps in transparency for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and resource, followed by a contextual guideline. Every sentence adds value without redundancy, making it efficient and well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and a single parameter with full schema coverage, the description is adequate but incomplete. It covers the purpose and a key constraint, but as a mutation tool, it should ideally mention more about behavioral aspects like success indicators or error cases to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'path' fully documented in the schema. The description does not add any additional meaning or context about the parameter beyond what the schema provides, so it meets the baseline of 3 without compensating further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Import') and resource ('a local FuseSoC CAPI2 .core file into the registry'), distinguishing it from sibling tools like 'import_github_core' by specifying it's for local files. It explicitly mentions the file format and target system, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: 'Useful when you already have FuseSoC cores checked out locally.' This implicitly suggests an alternative (e.g., 'import_github_core' for remote cores), but does not explicitly state when not to use it or name alternatives directly, keeping it at a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_github_coreA

Download an MIT-licensed GitHub repository and add it to the local IP core registry. Automatically uses FuseSoC CAPI2 metadata (.core file) if one exists in the repo. After import, the core is immediately available via get_ip_core and generate_ip.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesGitHub repo in 'owner/repo' format, e.g. 'ultraembedded/core_uart'
subdirNoSubdirectory within the repo to scope HDL search (for monorepos)
refNoBranch, tag, or commit SHA (default: repo's default branch)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well by disclosing key behaviors: it downloads repos, automatically uses FuseSoC CAPI2 metadata, adds to a local registry, and makes the core immediately available via other tools. It mentions the MIT license constraint and post-import availability, which are not obvious from the schema. However, it lacks details on error handling, rate limits, or authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by implementation details and post-import effects. Every sentence adds value (e.g., MIT license, FuseSoC metadata, availability via other tools) with zero waste, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a tool that downloads, processes, and registers repos) and no annotations or output schema, the description is mostly complete. It covers the purpose, behavior, and outcomes, but lacks details on error cases (e.g., what happens if the repo isn't MIT-licensed or lacks a .core file) and doesn't describe the return value, which is a gap since there's no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain parameter interactions or default behaviors like 'ref' defaulting to the repo's branch). Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Download an MIT-licensed GitHub repository and add it to the local IP core registry') and distinguishes it from siblings like 'import_fusesoc_core' (which likely imports from a different source) and 'search_github_cores' (which only searches). It explicitly mentions the verb+resource combination with the MIT license constraint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (to import GitHub repos with MIT licenses and FuseSoC metadata) and implies an alternative ('import_fusesoc_core' for non-GitHub sources). However, it doesn't explicitly state when NOT to use it (e.g., for non-MIT repos or without .core files) or compare it to 'search_github_cores' for discovery vs. import.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_hdlA

Lint HDL source code using iverilog (Verilog/SystemVerilog) or ghdl (VHDL). Returns warnings and errors so you can fix them before synthesis.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesHDL source code to lint
languageNoHDL language variantverilog
top_moduleNoTop-level module name (optional)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's function (linting), tools used (iverilog/ghdl), and output (warnings/errors), but lacks details on error handling, performance, or side effects. It doesn't contradict annotations, but could benefit from more behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and concise with two sentences that efficiently convey purpose, method, and outcome. Every sentence earns its place without redundancy, making it easy for an AI agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description adequately covers the tool's purpose and basic behavior. However, for a tool with 3 parameters and no structured output information, it could be more complete by detailing output format or error cases, though it's sufficient for a linter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain 'top_module' usage or language-specific nuances). Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('lint HDL source code') and resources ('using iverilog or ghdl'), distinguishing it from siblings like format_hdl, simulate, or synthesize. It explicitly mentions the languages supported (Verilog/SystemVerilog/VHDL) and the outcome ('returns warnings and errors').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('so you can fix them before synthesis'), implying it's a pre-synthesis step. However, it doesn't explicitly state when not to use it or name alternatives among siblings like get_diagnostics or simulate, which might offer overlapping functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ip_coresB

List all available IP cores in the registry. Optionally filter by category.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by category, e.g. 'communication' or 'memory'

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists IP cores with optional filtering, but doesn't describe what 'list' entails (e.g., format, pagination, or limitations), whether it's read-only or has side effects, or any performance or access considerations. This leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('List all available IP cores in the registry') and adds a useful detail ('Optionally filter by category'). There is no wasted text, and it's appropriately sized for a simple tool with one optional parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one optional parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and parameter intent, but lacks details on behavior, output format, or usage context. For a list tool with no annotations, it should ideally explain more about what 'list' returns or any limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions optional filtering by category, which aligns with the single parameter in the input schema. Since schema description coverage is 100% (the parameter is fully documented in the schema), the description adds minimal value beyond what's already structured. It doesn't provide additional syntax, examples, or constraints, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('all available IP cores in the registry'), making the purpose specific and understandable. It distinguishes from siblings like 'get_ip_core' (singular retrieval) and 'search_github_cores' (external search), though it doesn't explicitly mention these alternatives. The optional filtering adds useful scope but doesn't fully differentiate from all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing IP cores with optional filtering, but provides no explicit guidance on when to use this tool versus alternatives like 'get_ip_core' (for single core details) or 'search_github_cores' (for external repositories). It mentions filtering by category, which gives some context, but lacks clear when/when-not instructions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

litex_buildC

Run LiteX board target with --build. Returns logs and output directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardYesLiteX board target
argsNoExtra LiteX CLI args
output_dirNoOptional output directory
timeoutNoTimeout in seconds

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool 'Returns logs and output directory', which gives some insight into outputs, but fails to describe critical behaviors like whether this is a read-only or destructive operation (e.g., does it modify files or create new ones?), potential side effects, error handling, or execution environment requirements. For a build tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—just one sentence that efficiently conveys the core action and outputs. It is front-loaded with the main purpose ('Run LiteX board target with --build') and avoids any unnecessary details, making it easy to parse quickly. Every word earns its place, with no wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a build tool (which typically involves compilation, file generation, and potential side effects), no annotations, and no output schema, the description is incomplete. It lacks information on what the build does (e.g., generates hardware binaries, software images), how outputs are structured, error conditions, or dependencies. The mention of 'Returns logs and output directory' is helpful but insufficient for a tool that likely has significant behavioral nuances.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, providing clear documentation for all four parameters (board, args, output_dir, timeout). The description adds no additional parameter semantics beyond what the schema already states, such as explaining the format of 'board' values or typical use cases for 'args'. Given the high schema coverage, a baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Run LiteX board target with --build') and the resource ('LiteX board target'), making the purpose understandable. However, it doesn't explicitly differentiate this tool from its sibling 'litex_flow' or 'litex_soc', which appear related to LiteX workflows, leaving some ambiguity about when to choose this specific build tool over others.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'litex_flow' or 'litex_soc'. It mentions the '--build' flag but doesn't explain the context or prerequisites for running a build, such as needing a configured project or specific input files. This lack of comparative or contextual guidance limits its usefulness for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

litex_flowC

Run a generic LiteX board target with caller-provided args.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardYesLiteX board target
argsNoExtra LiteX CLI args
timeoutNoTimeout in seconds

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states it 'runs' a board with args and timeout. It lacks details on execution environment, permissions needed, side effects (e.g., hardware interaction), error handling, or output format, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of running a board (likely involving hardware/software interaction) and no annotations or output schema, the description is inadequate. It doesn't explain what 'running' entails, expected outcomes, or error conditions, leaving the agent with insufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds minimal value by implying 'args' are for the LiteX CLI and 'timeout' is for execution, but doesn't provide examples or constraints beyond the schema's defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Run') and target ('LiteX board target'), making the purpose understandable. It distinguishes from siblings by being the only tool with 'litex' in its name that runs a board, though it doesn't explicitly differentiate from 'litex_build' or 'litex_soc' which might be related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'litex_build' or 'litex_soc'. The description mentions 'caller-provided args' but doesn't specify typical use cases, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

litex_socB

Generate LiteX SoC without building gateware. Returns logs and output directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardYesLiteX board target
argsNoExtra LiteX CLI args
output_dirNoOptional output directory
timeoutNoTimeout in seconds

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only mentions returns ('logs and output directory') and the 'without building gateware' constraint. It lacks details on permissions, rate limits, error handling, or what 'Generate' entails operationally (e.g., configuration files, scripts). More behavioral context is needed for a tool with potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with zero waste: first states the purpose and key constraint, second specifies returns. It's front-loaded with the main action and efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is minimal but covers basics: purpose, constraint, and returns. For a 4-parameter tool that likely involves system operations (generating SoC configurations), it should provide more context on behavior, outputs, or integration with siblings to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., no examples of 'board' values or 'args' usage). Baseline 3 is appropriate as the schema handles parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Generate LiteX SoC') and resource ('LiteX SoC'), specifying it's 'without building gateware'. It distinguishes from sibling 'litex_build' by emphasizing no gateware building, but doesn't explicitly contrast with other siblings like 'litex_flow' or 'synthesize'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for generating SoC configurations without full hardware implementation, suggesting when to use it (vs. building gateware). However, it doesn't provide explicit alternatives or exclusions, nor guidance on when to choose this over other siblings like 'litex_flow' or 'synthesize'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_and_routeA

Synthesize Verilog with Yosys then place-and-route with nextpnr in one step. If backend=litex, runs LiteX build and ignores Verilog inputs. Returns max frequency, critical path, resource utilization, and full logs. Supported targets: ice40, ecp5, nexus, gowin. Common device/package values: ice40: device=hx1k|hx8k|up5k|lp1k package=tq144|qn84|sg48|cm81 ecp5: device=25k|45k|85k package=CABGA256|CABGA381 nexus: device=LIFCL-40-9BG400C (package embedded in device string) gowin: device=GW1N-UV4LQ144C6/I5 (package embedded in device string)

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesVerilog source code
top_moduleYesTop-level module name
targetYesFPGA family
deviceYesDevice variant, e.g. 'hx1k', '25k', 'LIFCL-40-9BG400C'
packageNoPackage, e.g. 'tq144', 'CABGA256' (not needed for nexus/gowin)
constraintsNoOptional pin constraints (PCF/LPF/PDC/CST text)
timeoutNoPnR timeout in seconds
backendNoPnR backendyosys
litex_boardNoLiteX board target (required if backend=litex)
litex_argsNoExtra LiteX CLI args (backend=litex)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the two-step synthesis and place-and-route process, backend-specific handling (e.g., LiteX ignoring Verilog inputs), timeout parameter, and the return values (max frequency, critical path, etc.). It also lists supported targets and common device/package values, adding useful operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by backend details, return values, and target-specific notes. It is appropriately sized for a complex tool with 10 parameters, though the device/package list is somewhat lengthy but necessary for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, no annotations, no output schema), the description does a good job of covering the workflow, backend options, return values, and target specifics. It could be more complete by detailing error handling or output format specifics, but it provides sufficient context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds some value by clarifying device/package examples and noting that package is 'not needed for nexus/gowin', but it does not significantly enhance parameter understanding beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: 'Synthesize Verilog with Yosys then place-and-route with nextpnr in one step.' It clearly distinguishes this from sibling tools like 'synthesize' (which only does synthesis) and 'litex_build' (which handles LiteX-specific flows), making the scope and differentiation evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool by mentioning the backend options ('yosys' vs 'litex') and noting that 'litex' ignores Verilog inputs. However, it does not explicitly state when to choose this over alternatives like 'synthesize' or 'litex_build', which would be needed for a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_github_coresA

Search GitHub for open-source MIT-licensed FPGA IP cores. Returns repo names, star counts, descriptions and topics. Use import_github_core to download a result into the local registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch terms, e.g. 'uart verilog' or 'riscv softcore'
languageNoFilter by HDL language (optional)
max_resultsNoMaximum number of results to return

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the search scope (GitHub, MIT-licensed), return format, and relationship to import_github_core. However, it doesn't mention rate limits, authentication requirements, error conditions, or pagination behavior, which are important for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each serve distinct purposes: the first defines the tool's function and output, the second provides usage guidance. There's zero wasted language or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no annotations and no output schema, the description provides adequate basic information about purpose and usage. However, it lacks details about the search algorithm, result ordering, error handling, or authentication requirements that would be helpful given the tool's complexity and the absence of structured behavioral annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline score of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Search GitHub'), target resource ('open-source MIT-licensed FPGA IP cores'), and return format ('repo names, star counts, descriptions and topics'). It distinguishes from sibling tools by mentioning import_github_core as a complementary action rather than an alternative search method.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (searching GitHub for FPGA IP cores) and mentions import_github_core as the next step for downloading results. However, it doesn't explicitly state when NOT to use it or compare it to potential alternatives like get_ip_core or list_ip_cores from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulateA

Compile and simulate Verilog using Icarus Verilog (iverilog + vvp). Provide the design source and a separate testbench. Returns all $display/$monitor output and any runtime errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesVerilog design source
testbenchYesVerilog testbench source
timeoutNoTimeout in seconds

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it compiles and simulates, uses specific tools (iverilog + vvp), returns output from $display/$monitor and runtime errors, and implies a timeout via the parameter. However, it lacks details on permissions, rate limits, or error handling beyond runtime errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with two sentences that efficiently convey purpose, inputs, and outputs without wasted words. Every sentence adds necessary information, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (simulation with compilation), no annotations, and no output schema, the description is adequate but has gaps. It covers the basic operation and outputs but lacks details on error types, output format, or prerequisites, which could be important for a simulation tool with multiple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds marginal value by mentioning 'design source' and 'testbench' which align with 'code' and 'testbench' parameters, but does not provide additional syntax, format details, or usage examples beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Compile and simulate Verilog') using specific tools ('Icarus Verilog (iverilog + vvp)'), distinguishes from siblings by focusing on simulation rather than formatting, linting, synthesis, or IP management, and explicitly mentions the required inputs ('design source and a separate testbench').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (for Verilog simulation with Icarus Verilog) and implies usage by specifying the required inputs, but does not explicitly state when not to use it or name alternatives among the sibling tools (e.g., 'synthesize' or 'lint_hdl' for other tasks).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

synthesizeB

Synthesize Verilog HDL using Yosys or run LiteX backend. Returns resource statistics and the list of inferred modules. Supported targets: generic, ice40, ecp5, gowin, xilinx, intel.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesVerilog source code
top_moduleYesName of the top-level module
targetNoFPGA family / synthesis targetgeneric
backendNoSynthesis backendyosys
litex_boardNoLiteX board target (required if backend=litex)
litex_argsNoExtra LiteX CLI args (backend=litex)
timeoutNoTimeout in seconds

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the return values ('resource statistics and the list of inferred modules') which is helpful, but doesn't describe important behavioral aspects like whether this is a read-only analysis or a destructive synthesis operation, potential side effects, execution time implications, or error handling. For a complex synthesis tool with 7 parameters, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two sentences that efficiently convey the core functionality and supported targets. The first sentence states the main purpose, and the second provides important context about outputs and targets. No wasted words, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex synthesis tool with 7 parameters, no annotations, and no output schema, the description is incomplete. While it mentions return values, it doesn't adequately describe the tool's behavior, side effects, or how it differs from similar tools in the context. The agent would need to infer too much about this potentially complex operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions 'Supported targets' which aligns with the 'target' parameter enum, but provides no additional context about target differences or selection criteria. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Synthesize Verilog HDL using Yosys or run LiteX backend.' It specifies the action (synthesize/run backend), resource (Verilog HDL), and tools involved (Yosys/LiteX). However, it doesn't explicitly differentiate from sibling tools like 'litex_build' or 'place_and_route' which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning 'Supported targets' and the backend options, but doesn't provide explicit guidance on when to choose this tool versus alternatives like 'litex_build' or 'place_and_route'. It mentions what the tool does but not when it's the appropriate choice among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between lint_hdl and get_diagnostics, both focusing on HDL linting with different tools, which could cause confusion. Other tools like generate_ip and get_ip_core are clearly differentiated, and the LiteX tools (litex_build, litex_flow, litex_soc) have overlapping functionality but are described with enough detail to distinguish them.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structures, such as format_hdl, generate_ip, and list_ip_cores. There are no deviations in naming conventions, making the set predictable and easy to parse for an agent.

Tool Count5/5

With 15 tools, the server is well-scoped for FPGA development tasks, covering code formatting, IP core management, linting, simulation, synthesis, and place-and-route. Each tool serves a specific purpose without redundancy, fitting the domain's complexity appropriately.

Completeness5/5

The tool set provides comprehensive coverage for FPGA workflows, including code preparation (format_hdl, lint_hdl), IP core handling (list_ip_cores, get_ip_core, generate_ip, import functions), simulation (simulate), synthesis (synthesize), and implementation (place_and_route). There are no obvious gaps, supporting end-to-end development from design to gateware.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    F
    maintenance
    A comprehensive Model Context Protocol server that connects AI assistants to Electronic Design Automation tools, enabling Verilog synthesis, simulation, ASIC design flows, and waveform analysis through natural language interaction.
    6
    108
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server for FPGA toolchain operations including linting, simulation, synthesis, place-and-route, bitstream programming, and IP core registry via GitHub.
    25
    5
    MIT

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