Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VIVADO_MCP_NO_AUTOFETCHNoSet to 1 to disable the automatic download of the RedPitaya-FPGA repo on startup; the rp_fetch_repo tool can still download it on demand.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
start_sessionA

Start a persistent Vivado TCL session. Must be called before project/design tools. Vivado startup is ~30s; the session is reused across tool calls.

stop_sessionB

Stop the Vivado TCL session and free resources.

session_statusB

Get statistics for the current Vivado session (commands run, timing, errors).

check_session_healthA

Verify the Vivado process is responsive. With auto_recover=true the session is restarted if it hangs.

get_host_statusA

Get host hostname, free memory, and session state. Useful to check there is enough RAM before launching synthesis/implementation.

open_projectB

Open an existing Vivado project (.xpr file).

close_projectB

Close the currently open project.

get_project_infoA

Get name, part, target language, directory of the open project.

create_projectA

Create a new Vivado project on disk in project mode. Defaults to the Red Pitaya STEMlab 125-14 part (xc7z010clg400-1). Call add_sources / add_constraints next, then run_synthesis.

add_sourcesA

Add HDL source files (.v/.sv/.vhd) to the current project. Optionally sets the top module and updates compile order.

add_constraintsC

Add XDC constraint files to the current project.

list_boardsA

List boards with bundled XDC + metadata. No Vivado session required.

get_board_infoA

Get bundled metadata for a board: part, LED pinout, absolute XDC paths, default synth flags. Use the returned absolute_path values with add_constraints. No Vivado session required.

run_synthesisA

Run synthesis on the current project (reset_run -> launch_runs synth_1 -> wait_on_run). Returns ground-truth status from the run object, not just text parsing.

run_implementationA

Run implementation (opt_design -> place_design -> route_design). Returns ground-truth status from the impl_1 run object.

generate_bitstreamA

Generate bitstream — launch_runs impl_1 -to_step write_bitstream -> wait_on_run. Returns ground-truth run status and the .bit path.

set_run_strategyA

Set the strategy of a synthesis or implementation run (e.g. synth_1 'Flow_PerfOptimized_high', impl_1 'Performance_NetDelay_high'). On an unknown name, Vivado's error lists the valid strategies.

get_timing_summaryA

Get timing summary (WNS, TNS, WHS, THS). Returns parsed metrics by default. Use generate_full_report for raw output.

get_timing_pathsA

Get failing/critical timing paths. Returns structured summary by default; use detail_level=standard|full for the raw text too.

get_utilizationC

Resource utilization (LUT/FF/BRAM/DSP/IO). Parsed only by default.

get_clocksB

Get clock information and constraints (report_clocks).

get_messagesA

Get Vivado messages filtered by severity (error/critical/warning/all).

get_design_hierarchyC

Get the design hierarchy (modules and instances), optionally filtered.

get_portsB

Get top-level I/O ports of the design.

get_netsC

Search for nets by pattern (default '*').

get_cellsC

Search for cells/instances by pattern.

launch_simulationC

Launch xsim in behavioral/post-synth/post-impl mode.

run_simulationC

Run the simulation for a specified time (e.g. 100ns, 1us, all).

restart_simulationB

Restart the simulation from time 0.

close_simulationB

Close the current simulation.

get_simulation_timeA

Get the current simulation time (current_time).

get_signal_valueC

Get current value of a signal in simulation.

get_signal_valuesC

Get values of multiple signals matching a wildcard pattern (max 50).

add_signals_to_waveC

Add signals to the waveform viewer.

set_simulation_topC

Set the top-level testbench module for simulation.

get_simulation_objectsC

List simulation objects in a scope (signals/ports/internal).

get_scopesC

List child scopes (hierarchy) in the simulation.

step_simulationB

Step simulation by delta cycles.

add_breakpointC

Add a breakpoint on signal edge or change.

remove_breakpointsB

Remove all breakpoints (remove_bps -all).

get_simulation_messagesC

Get simulation log messages filtered by severity.

run_tclB

Execute a raw TCL command in Vivado. Use for advanced ops not covered by other tools.

run_tcl_scriptB

Source a .tcl script file in the Vivado session (uses source under the hood). Helpful for replaying canonical Red Pitaya / Xilinx reference scripts.

create_block_designA

Create a new block design and make it current. Optionally sets the board_part property on the project beforehand (board_part requires the BSP to be installed in Vivado).

save_bd_designB

Save the currently open block design to disk.

close_bd_designA

Close the currently open block design (without deleting).

list_bd_cellsC

List cells in the current block design (optionally filtered).

add_ip_to_bdA

Add an IP core to the current block design (create_bd_cell -type ip -vlnv ...). If config is provided, the CONFIG.* keys are applied via set_property -dict.

create_bd_portB

Create a top-level port on the current block design. Scalar or vector (from/to) via create_bd_port, or an interface port when vlnv is given (create_bd_intf_port, e.g. the XADC 'xilinx.com:interface:diff_analog_io_rtl:1.0'). Port names must match the constraints (XDC) of the board.

add_module_to_bdA

Add an RTL module (Verilog/VHDL already in the project, see add_sources) to the current block design as a module-reference cell (create_bd_cell -type module -reference). Optional config sets its parameters, e.g. {'CONFIG.WIDTH': '8'}; string parameters keep their quotes, e.g. {'CONFIG.init': '"0011"'}.

configure_bd_cellA

Set CONFIG.* properties on an existing block-design cell (set_property -dict). Use for settings that must be applied after creation or in a separate step, e.g. importing a PS7 board preset: {'CONFIG.PCW_IMPORT_BOARD_PRESET': '/red_pitaya.xml'}.

connect_bd_netB

Connect two scalar pins/ports in the current block design.

connect_bd_intf_netC

Connect two AXI/interface pins in the current block design.

auto_connect_axiB

Use apply_bd_automation -rule xilinx.com:bd_rule:axi4 to wire an AXI master to a slave (inserts AXI interconnect + clock/reset hookups).

apply_ps7_presetA

Apply the Zynq-7000 processing_system7 board preset to a PS7 cell — wires FIXED_IO / DDR / clocks per the board definition. Equivalent to clicking 'Run Block Automation' on a freshly added PS7 in the GUI.

validate_block_designA

Run validate_bd_design and return parsed status. Failures include unconnected pins, conflicting CONFIG values, or missing assignments.

regenerate_bd_layoutA

Regenerate the block design layout (cosmetic; useful before save).

assign_bd_addressC

Auto-assign addresses in the BD address editor (assign_bd_address).

generate_bd_wrapperA

Generate the HDL wrapper for a block design and (by default) add it to sources_1 and set it as project top. Implements the canonical pattern: make_wrapper -files -top; add_files -norecurse ; set_property top [current_fileset]; update_compile_order.

create_ipA

Create an IP from the Xilinx IP catalog. Generates a .xci file in the project's IP sources fileset. Use configure_ip + generate_ip_target afterwards, then run synth_ip if you want out-of-context synthesis.

configure_ipC

Set CONFIG.* properties on an existing IP via set_property -dict.

generate_ip_targetC

Generate IP output products (synthesis + simulation by default).

synth_ipC

Run out-of-context (OOC) synthesis on an IP.

upgrade_ipB

Upgrade IP version (no-op if already at latest).

report_ip_statusB

Get a structured snapshot of the project's IP and their upgrade status.

open_hw_managerA

Open the Hardware Manager (no JTAG connection yet).

close_hw_managerB

Close the Hardware Manager.

connect_hw_serverC

Connect to a hw_server (cs_server). Default URL is localhost:3121 — the value Vivado uses when running hw_server locally.

refresh_hw_deviceA

Refresh the currently selected hardware device (re-reads JTAG chain state). Call after re-plugging a cable.

program_deviceA

Program a .bit onto the first device on the JTAG chain. Sequence: open_hw_target -> set PROGRAM.FILE -> program_hw_devices. The hardware must already be connected (open_hw_manager + connect_hw_server).

report_powerA

Run report_power and return parsed totals (total/dynamic/static W) + a truncated raw block. Full output stored at /tmp/vivado_red_mcp/.

report_drcA

Run report_drc and return parsed violations list (severity/code/message). Use after place_design/route_design to catch design-rule problems.

report_methodologyC

Run report_methodology (UltraFast methodology checks). Returns violation list grouped by severity.

report_qor_assessmentC

Run report_qor_assessment (overall design quality score).

report_clock_interactionB

Run report_clock_interaction to find cross-clock paths (timed/async/unconstrained).

load_board_xdcA

Resolve a bundled board XDC and attach it to the current project. Standalone wrapper over get_board_info + add_constraints.

generate_cfgmemA

Convert a .bit into a raw binary image (.bit.bin) loadable via /dev/xdevcfg on the Red Pitaya. Use after generate_bitstream.

get_synthesis_errors_parsedA

Return structured errors and critical warnings from a run's log (default: synth_1), plus those of every failed run (e.g. out-of-context IP runs). Use after run_synthesis fails to get a clean actionable list.

create_redpitaya_project_rtlC

One-shot composite: create project -> add HDL sources -> apply XDC -> synth -> impl -> write_bitstream -> generate .bit.bin. Stops on the first failing stage and returns a structured payload.

rp_fetch_repoA

Download the RedPitaya-FPGA repo from GitHub as a source zip and extract it (no git required, stdlib only). Returns repo_path to feed into rp_setup_workspace. Idempotent — pass force=true to redownload. No Vivado session required.

rp_setup_workspaceA

Copy a RedPitaya-FPGA repo into an isolated workspace so builds don't touch the pristine checkout. The copy is patched to run on the installed Vivado release (block-design version check) and without git. Idempotent — pass force=true to recopy. No Vivado session required.

rp_list_projectsA

List projects under prj/ of a RedPitaya workspace or repo. Flags which are Z10-capable (have ip/system.tcl or legacy ip/systemZ10.tcl). No Vivado session required.

rp_workspace_infoB

Report workspace state: projects present and which already have a built bitstream.

rp_create_custom_projectA

Clone an existing prj/ into prj/ inside the workspace, ready for custom PL logic. Returns the rtl/ dir and red_pitaya_top path to edit. No Vivado session required.

rp_build_projectA

Build a RedPitaya PS+PL project end-to-end: run the repo's project setup TCL (creates the PS7 block design from ip/system.tcl), then synthesis, implementation and write_bitstream, then generate the .bit.bin. Returns {stage, xpr_path, bit_path, bin_path, timing}. Requires start_session first.

deploy_to_redpitayaA

Copy a .bit.bin to a Red Pitaya over SSH/SCP and load it into the FPGA. Uses /dev/xdevcfg (works on Red Pitaya OS 1.04 + 2.00) or fpgautil (OS 2.00). No Vivado session required.

ssh_redpitaya_execB

Run an arbitrary shell command on a Red Pitaya over SSH and return stdout/stderr/exit code. Useful for status checks, dmesg reads, manual loader invocations.

get_vivado_docA

Look up a topical Vivado documentation summary bundled with this server. Returns markdown content + upstream URL. Known topics: block_design, ps7_zynq, timing_constraints, synthesis_strategies, simulation_xsim, red_pitaya_125_14, redpitaya_ps_pl_flow, tcl_quoting, hw_manager, ip_integrator, pitfalls_2020_1.

list_vivado_docsB

List the bundled Vivado documentation topics.

request_featureB

Submit a feature request for the Vivado MCP server (persisted on disk).

list_feature_requestsB

List all submitted feature requests.

generate_full_reportA

Generate a full Vivado report to a file. Use when inline reports get truncated or you need the complete output. Returns a report_id usable with read_report_section.

read_report_sectionB

Read a section of a previously generated report. Provide report_id (from generate_full_report) or a direct file_path.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3/5.0

Scored across 93 tools

Disambiguation3/5

Most tools target distinct Vivado operations, but the set mixes low-level primitives with composite one-shots (e.g., create_redpitaya_project_rtl vs rp_build_project vs create_project/run_synthesis, and generate_ip_target vs synth_ip). Several getters/report wrappers also require reading descriptions to choose correctly. Descriptions help, but with 93 tools misselection risk remains.

Naming Consistency4/5

Nearly all names are snake_case verb_noun, with domain prefixes such as rp_, report_, and get_ used consistently. Minor exceptions like session_status and rp_workspace_info are noun-first but still readable and predictable.

Tool Count1/5

93 tools far exceeds a reasonable single-server surface; even for a complex FPGA flow this creates high selection and cognitive load. It should be split into session/project/simulation/block-design/hardware/Red-Pitaya sub-servers. This falls in the extreme 50+ tool mismatch range.

Completeness4/5

The surface covers end-to-end Vivado flow plus Red Pitaya deployment, documentation, and a run_tcl escape hatch. Some granular removal/delete/debug operations are missing (e.g., remove sources/constraints, delete BD cells/nets, ILA or memory reports), but these are largely workaroundable via raw TCL.

Maintenance

ActivityMaintained
ResponsivenessNo issues