Skip to main content
Glama
htminuslab

visualizer-mcp

by htminuslab

visualizer-mcp

visualizer-mcp — это сервер Model Context Protocol (MCP), который подключает ИИ-ассистентов к Siemens Questa Visualizer через TCP-интерфейс Visualizer Command Channel (VCC). Он позволяет Claude Code управлять симуляцией в реальном времени с помощью естественного языка: открывать временные диаграммы, запускать проект, проверять значения сигналов и искать историю сигналов во времени. Visualizer поставляется со всеми версиями Questa, кроме OEM-версий(?).


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

Инструмент

Назначение

Примечания

Python 3.10+

Запуск MCP-сервера

python.org

uv

Установка сервера через uvx (без ручного venv)

docs.astral.sh/uv

Siemens Visualizer

GUI симуляции, которым управляет сервер

visualizer должен быть в PATH

Claude Code

ИИ-ассистент, выполняющий вызовы инструментов

claude.ai/code

Примечание: другие LLM также должны работать, но я использую Claude Code (по подписке).


Установка

Linux

# 1. Install uv (skip if already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env    # reload PATH

# 2. Register visualizer-mcp with Claude Code
claude mcp add visualizer -- \
  uvx --from git+https://github.com/htminuslab/visualizer-mcp visualizer-mcp

Windows (PowerShell)

# 1. Install uv (skip if already installed)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

# 2. Register visualizer-mcp with Claude Code
claude mcp add visualizer -- `
  uvx --from git+https://github.com/htminuslab/visualizer-mcp visualizer-mcp

Проверьте регистрацию:

claude mcp list

Рабочая директория. По умолчанию сервер ищет файл подключения Visualizer (.Visualizer/vccserver.cfg) относительно своей рабочей директории, которая является директорией, из которой вы запустили claude. Запускайте и Visualizer, и Claude Code из одной и той же директории симуляции, и дополнительная настройка не потребуется. Если они различаются, установите VCC_WORK_DIR — см. Переменные окружения.


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

Claude Code ──stdio──► visualizer-mcp ──TCP──► Visualizer GUI
  (LLM host)   (MCP)   (this server)   (VCC)  (Siemens EDA)

Claude Code запускает visualizer-mcp как дочерний процесс через stdio (стандартный транспорт MCP). Сервер поддерживает одно постоянное TCP-соединение с сервером Visualizer Command Channel (VCC), который запускается автоматически внутри каждого сеанса Visualizer.

Последовательность подключения:

  1. При первом вызове инструмента сервер считывает $VCC_WORK_DIR/.Visualizer/vccserver.cfg. Visualizer записывает этот файл при запуске; он содержит хост и порт VCC в формате port@hostname.

  2. Сервер открывает TCP-сокет, отправляет vccRegisterClient и подписывается на уведомления vDesignStateChange, vTimeChange и vHierarchyChange.

  3. Каждый вызов инструмента кодирует команду Tcl в кадр VCC (10-байтовый заголовок + тело, ограниченное фигурными скобками), отправляет его через сокет и ожидает соответствующий кадр ответа. Кадры сопоставляются с вызывающими объектами по инкрементному номеру сообщения.

  4. Асинхронные уведомления о сигналах (например, изменения времени, изменения состояния проекта) поступают как нежелательные кадры типа s и сохраняются в кольцевом буфере на 256 записей, доступном через vcc_recent_signals.

  5. Если Visualizer закрывается и сокет разрывается, сервер переподключается (или автоматически запускает Visualizer) при следующем вызове инструмента.

Каждая команда Tcl Visualizer, описанная в Visualizer Debug Environment Command Reference Manualrun, step, wave add, examine, force, env и сотни других — доступна через «черный ход» vcc_eval.


Инструменты MCP

Все инструменты возвращают {"ok": true, "result": "..."} в случае успеха или {"ok": false, "error": "..."} в случае ошибки.

Инструмент

Описание

vcc_connect

Подключение к Visualizer (автозапуск при необходимости). Идемпотентно.

vcc_status

Отчет о наличии файла конфигурации, хосте/порте и состоянии подключения. Не подключается.

vcc_eval

Отправка любой команды Tcl дословно — здесь доступен полный набор команд Visualizer.

vcc_run

Продвижение симуляции: "100ns", "8 us", "-all" или пропуск для шага по умолчанию.

vcc_step

Пошаговое выполнение симулятора на N дельта-циклов.

vcc_run_status

Возврат текущего состояния выполнения симулятора.

vcc_get_time

Возврат текущего времени симуляции.

vcc_wave_add

Добавление одного или нескольких сигналов в окно временных диаграмм по иерархическому пути.

vcc_force

Принудительная установка значения сигнала, опционально в определенное время симуляции.

vcc_examine

Чтение значения сигнала в текущее или указанное время симуляции.

vcc_scan_signal

Сканирование сигнала в диапазоне времени; опционально поиск конкретного значения.

vcc_recent_signals

Возврат самых последних асинхронных уведомлений о сигналах от Visualizer.


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

Переменная

По умолчанию

Описание

VCC_WORK_DIR

CWD сервера

Директория, чей .Visualizer/vccserver.cfg считывается; также CWD при автозапуске Visualizer.

VCC_CFG_FILE

(не задано)

Явный путь к файлу конфигурации; переопределяет поиск VCC_WORK_DIR. Отражает флаг -vccfile Visualizer.

VCC_CLIENT_NAME

Claude-MCP

Имя, отправляемое с vccRegisterClient.

VCC_VISUALIZER_BIN

visualizer

Бинарный файл, используемый при автозапуске Visualizer.

VCC_LAUNCH_TIMEOUT_S

60

Секунды ожидания файла конфигурации после запуска Visualizer.

VCC_CMD_TIMEOUT_S

30

Тайм-аут для каждой команды в секундах.

Чтобы установить переменную окружения при регистрации сервера:

# Linux
claude mcp add visualizer \
  -e VCC_WORK_DIR=/path/to/sim \
  -- uvx --from git+https://github.com/htminuslab/visualizer-mcp visualizer-mcp

# Windows
claude mcp add visualizer `
  -e "VCC_WORK_DIR=C:\path\to\sim" `
  -- uvx --from git+https://github.com/htminuslab/visualizer-mcp visualizer-mcp

Пример: симуляция делителя VHDL

Директория vhdl_example/ содержит 32-битный невосстанавливающий целочисленный делитель (div.vhd) и тестовый стенд (div_tb.vhd). Тестовый стенд проверяет как беззнаковое, так и знаковое деление для нескольких пар операндов. Это пошаговое руководство показывает, как использовать Claude Code для компиляции, симуляции и исследования проекта.

1. Запуск Visualizer

Откройте терминал/командную строку, перейдите в vhdl_example/ и запустите Visualizer с помощью:

cd vhdl_example
visualizer -do run.do

run.do компилирует исходные коды VHDL, оптимизирует проект до div_tb_vopt и загружает его в симулятор с помощью vsim -visualizer. Появится графический интерфейс Visualizer с симуляцией, приостановленной на времени 0.

2. Запуск Claude Code и проверка MCP-сервера

Откройте новый терминал в той же директории vhdl_example/ и запустите Claude Code:

cd vhdl_example
claude

Внутри Claude Code введите следующую команду, чтобы подтвердить, что MCP-сервер подключен:

/mcp

Вы должны увидеть visualizer в списке подключенных серверов. Вы также можете спросить Claude напрямую:

Доступны ли инструменты Visualizer MCP?

Claude подтвердит и перечислит доступные инструменты.

В окне транскрипта Visualizer должно быть указано подключение сервера VCC:

# Loading std.standard
# Loading std.textio(body)
# Loading ieee.std_logic_1164(body)
# Loading ieee.numeric_std(body)
# Loading work.div_tb(rtl)#1

# 18:09:53: Loading design data...
# 18:09:53: Loaded  design units
# 18:09:53: Loaded  design hierarchy
# 1

# VCC server established connection with remote client: Claude-MCP

3. Открытие окна временных диаграмм и загрузка сигналов тестового стенда

Спросите Claude:

Открой окно временных диаграмм и добавь все сигналы тестового стенда из div_tb

Claude вызывает:

vcc_eval("view wave")
vcc_wave_add(["sim.div_tb.*"])

Все сигналы тестового стенда верхнего уровня (clk_s, reset_s, dividend_s, divisor_s, quotient_s, remainder_s, start_s, busy_s) появятся в окне временных диаграмм Visualizer.

4. Запуск симуляции на 8 мкс

Спросите Claude:

Запусти симуляцию на 8 микросекунд

Claude вызывает:

vcc_run("8 us")

Симуляция продвигается до 8 мкс. Временные диаграммы обновляются в графическом интерфейсе Visualizer, показывая все операции деления, выполненные тестовым стендом.

5. Пример отладки

Спросите Claude:

Равнялся ли remainder_s когда-нибудь 23 во время симуляции?

Claude отвечает:

  Called visualizer 16 times (ctrl+o to expand)

● Yes — remainder_s did equal 23 at some point during the simulation. Let me find the exact timestamp.

  Called visualizer (ctrl+o to expand)

● Yes, remainder_s equaled 23 during the simulation. It held that value continuously from 3890 ns to 5580 ns
  (about 1.69 µs), which corresponds to one of the division results being held stable while busy_s was
  asserted. The value then changed as the next operation completed.

✻ Churned for 1m 0s

Вы можете продолжить исследование, спросив Claude:

в момент времени 4651 нс можешь ли ты подтвердить, что значения quotient_s и remainder_s верны для заданных входных значений dividend_s и divider_s?

Claude отвечает:

● At 4651 ns the signal values are:

  ┌─────────────┬────────────┐
  │   Signal    │   Value    │
  ├─────────────┼────────────┤
  │ dividend_s  │ 23         │
  ├─────────────┼────────────┤
  │ divisor_s   │ 46         │
  ├─────────────┼────────────┤
  │ divsigned_s │ 1 (signed) │
  ├─────────────┼────────────┤
  │ quotient_s  │ 0          │
  ├─────────────┼────────────┤
  │ remainder_s │ 23         │
  └─────────────┴────────────┘

  Verification: 23 ÷ 46 = 0 remainder 23

  Check: (46 × 0) + 23 = 23 ✓

  Both outputs are correct. Since the dividend (23) is smaller than the divisor (46), the quotient is 0 and
  the full dividend value is returned as the remainder.

✻ Baked for 8s

Некоторые общие комментарии

  • Управление Visualizer из командной строки Claude Code происходит медленно и не очень эффективно (с точки зрения затрат), так как простые команды потребляют токены. Очевидно, проще запустить файл .do или qrun. Однако цель этой демонстрации — показать, что возможно, и позволить LLM управлять симуляцией и проверять результаты — это очень интересно.

  • Большая часть этого кода была создана Claude Code 4.6

  • У Siemens есть гораздо более мощный MCP-сервер для Questa/Visualizer под названием Questa Agentic Toolkit.

Лицензия

Подробности см. в файле LICENSE для этой демонстрации.

Уведомление

Все логотипы, товарные знаки и графические изображения, используемые здесь, являются собственностью их соответствующих владельцев.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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/htminuslab/visualizer-mcp'

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