start_session
Start a persistent Vivado TCL session. Must be called before project/design tools. Vivado startup is ~30s; the session is reused across tool calls.
vivado_path
io.github.sinemortal由 GitHub 帳號 sinemortal 發布v0.5.0更新於 Nov 7, 2026
通過AI助理驅動AMD Vivado,包含Red Pitaya STEMlab 125-14的建立與部署流程。
AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。
Drive AMD Vivado from AI assistants, with Red Pitaya STEMlab 125-14 build and deploy flows.
Vivado Red 的本機 MCP 服務;無需登入;STDIO;93 個工具。
暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
An MCP server that lets an AI assistant such as Claude drive AMD/Xilinx Vivado directly: create projects, build block designs, synthesize, implement, simulate, read timing/utilization reports and generate bitstreams — without opening the Vivado GUI.
It has first-class support for the Red Pitaya STEMlab 125-14 (Zynq
xc7z010clg400-1): you can go from a natural-language description to a
.bit.bin running on the board, using either pure RTL or the official
RedPitaya-FPGA PS+PL (ARM + FPGA) backbone, and deploy it over SSH.
Forked from coreyhahn/vivado_mcp and heavily extended (93 tools): block design / IP Integrator, IP catalog, Hardware Manager, advanced reports, Red Pitaya RTL and PS+PL flows, SSH deploy.
Current version: 0.5.0 — see What's new and CHANGELOG.md.
Not to be confused with the unrelated
vivado-mcppackage on PyPI. This project isvivado-red-mcp: Python modulevivado_red_mcp, commandvivado-red-mcp.
.bit.bin generation, SSH deploy.The RedPitaya-FPGA tutorials in prj/Examples (Led_blink, Knight_rider, Stopwatch,
Frequency_counter) build to a bitstream through the server. Led_blink and
Knight_rider rebuilt from scratch with MCP tools only produce byte-identical
bitstreams to the tutorials' own scripts.
xc7z010).
When installing, you only need Vivado and, under devices, SoCs → Zynq-7000;
Vitis Model Composer and DocNav are not needed.a valid license was not found):
<Vivado>/bin/vlm.bat on Windows, vlm on Linux);Xilinx.lic with Load License → Copy License.PATH (Linux: source <Vivado>/settings64.sh; Windows: add
<Vivado>\bin to PATH), orstart_session
(e.g. C:\AMDDesignTools\2026.1\Vivado\bin\vivado.bat).pexpect (Linux/macOS) or pywinpty (Windows) is installed automatically.
pip pins the MCP SDK to 1.x by itself. Do not upgrade mcp to 2.x: the server
would not start ('Server' object has no attribute 'list_tools').
Once, for all your projects:
If vivado-red-mcp is not on PATH when Claude Code starts (typical with a virtual
environment), point to the venv's Python instead:
Or share it with a single project through a .mcp.json at the project root:
Check it with claude mcp list: vivado should show as connected.
On startup the server downloads the RedPitaya-FPGA repo (source zip) into its
working directory if it is missing, for the PS+PL flow. Set the
environment variable VIVADO_MCP_NO_AUTOFETCH=1 to turn this off; the
rp_fetch_repo tool can still download it on demand.
Talk to Claude in plain language, for example:
PATH)C:/work/my_proj/my_proj.xpr"Claude picks the tools; you never have to call them by name.
Two flows, depending on whether you need the ARM processor:
Example prompt:
Make an LED blinker at 1 Hz for the Red Pitaya using the 125 MHz ADC clock on
led_o[0], build it and give me the.bit.bin.
To load the result on the board, ask Claude to use deploy_to_redpitaya (SSH,
default credentials root/root; works with OS 1.04 xdevcfg and OS 2.00
fpgautil), or copy it yourself:
PS+PL and the RedPitaya-FPGA repo. The current upstream master targets
Vivado 2025.1; older checkouts targeted 2020.1. Both layouts are supported.
rp_setup_workspace copies the repo into a separate workspace and patches only
that copy, so the scripts run on the Vivado you have installed (their exported
block-design/IP scripts otherwise refuse any other release) and without a git
checkout. Your downloaded repo is never modified. Details:
get_vivado_doc redpitaya_ps_pl_flow.
Bundled board data (data/boards/):
red_pitaya_125_14_full.xdc — full pinout (ADC, DAC, LEDs, expansion
connector, XADC), port names as in the official red_pitaya_top
(adc_dat_i[ch][bit], dac_dat_o, exp_p_io, …); checked pin by pin against
upstream sdc/red_pitaya.xdc.red_pitaya_125_14_leds_min.xdc — 125 MHz differential ADC clock + 8 LEDs, for
hello-world designs.red_pitaya_125_14_info.json — part number and board metadata.The RedPitaya tutorials (prj/Examples) use different port names
(adc_dat_a_i, adc_clk_p_i, …) and a PS7 preset (cfg/red_pitaya.xml); use
their own cfg/ files when rebuilding them.
More Italian prompt examples and the step-by-step low-level flow: USAGE.md.
Renamed to vivado-red-mcp (package, Python module vivado_red_mcp, command
vivado-red-mcp), so it no longer clashes with the unrelated vivado-mcp package on
PyPI. If you installed an earlier version, reinstall it and re-register it with
Claude Code using the new command (see Installation).
Works on Vivado 2026.1 and with the current RedPitaya-FPGA repo.
Fixed:
Spawn failed) → fixed.run_tcl was silently corrupted on Windows → fixed.get_timing_summary always returned empty values; get_utilization misread
newer reports → both parse current Vivado output.No open design) → the
latest completed run is opened automatically.get_synthesis_errors_parsed always returned 0 errors → now reads the run logs,
including failed IP runs.launch_simulation modes rejected by recent Vivado → fixed.generate_bitstream timed out after 300 s and didn't check the result → now
verified, returns the .bit path.red_pitaya_125_14_full.xdc had 6 wrong pins (ADC channel A MSB and
dac_dat_o[8..12]) → corrected.New tools: create_bd_port, add_module_to_bd, configure_bd_cell,
set_run_strategy. Full list in CHANGELOG.md.
start_session - Start a persistent Vivado Tcl session (optional vivado_path)stop_session - Stop the Vivado sessionsession_status - Session statisticscheck_session_health - Detect a hung/dead session, optionally recoverget_host_status - Host CPU/memory statuscreate_project - Create a project on disk (default part xc7z010clg400-1)open_project / close_project - Open or close an .xprget_project_info - Part, directory, top, …add_sources / add_constraints - Attach HDL and XDC filesrun_synthesis - Run synthesis (verified run status)run_implementation - Run place and route (verified run status)generate_bitstream - Generate the bitstream (verified status + .bit path)set_run_strategy - Set the synthesis/implementation run strategyReport tools open the latest completed run automatically if no design is open.
get_timing_summary - WNS, TNS, WHS, THS, pulse width, met / not metget_timing_paths - Detailed timing paths for failing/critical pathsget_utilization - LUTs, FFs, BRAMs, DSPs, IOsget_clocks - Clock informationget_messages - Synthesis/implementation messagesget_design_hierarchy - Module/instance hierarchyget_ports - Top-level portsget_nets / get_cells - Search nets and cellsset_simulation_top - Set the testbench modulelaunch_simulation - Behavioral, post-synthesis or post-implementation
(functional/timing)run_simulation / step_simulation / restart_simulation / close_simulationget_simulation_timeget_signal_value / get_signal_values - Read signalsget_simulation_objects / get_scopes - Browse the hierarchyadd_signals_to_waveadd_breakpoint / remove_breakpointsget_simulation_messagescreate_block_design - Create a block design and make it currentcreate_bd_port - Scalar, vector or interface portsadd_ip_to_bd - Add an IP core (VLNV) with CONFIG.* propertiesadd_module_to_bd - Add an RTL module as a module-reference cellconfigure_bd_cell - Set CONFIG.* on an existing cell (e.g. PS7 board preset import)connect_bd_net / connect_bd_intf_net - Wire pins/ports and AXI interfacesauto_connect_axi - apply_bd_automation for AXI master ↔ slaveapply_ps7_preset - Zynq PS7 automation (FIXED_IO/DDR external)validate_block_design - Run BD DRCassign_bd_address - Auto-assign AXI address rangesregenerate_bd_layout - Tidy the layoutsave_bd_design / close_bd_design - Persist or close the BDlist_bd_cells - List cellsgenerate_bd_wrapper - make_wrapper + add to fileset + set as topcreate_ip / configure_ip - Create and configure catalog IPsgenerate_ip_target / synth_ip - Output products, out-of-context synthesisupgrade_ip / report_ip_status - Upgrade and audit IP versionsopen_hw_manager / close_hw_managerconnect_hw_server - Connect to hw_server (default localhost:3121)program_device - Program a .bit over JTAGrefresh_hw_device - Re-read the JTAG chainreport_power - Total/dynamic/static powerreport_drc - DRC violations grouped by severityreport_methodology - UltraFast methodology checksreport_qor_assessment - QoR scorereport_clock_interaction - Cross-clock pathsgenerate_full_report / read_report_section - Full reports to file, read them in pieceslist_boards / get_board_info - Bundled board metadata and XDC paths (no Vivado needed)load_board_xdc - Add a bundled board XDC to the projectcreate_redpitaya_project_rtl - One-shot RTL build; returns bit_path,
bin_path, parsed timing_summary and utilizationgenerate_cfgmem - .bit → .bit.bin for /dev/xdevcfg / fpgautilget_synthesis_errors_parsed - Structured errors from the run logs, including
failed IP runsrp_fetch_repo - Download RedPitaya-FPGA (source zip, no git needed)rp_setup_workspace - Isolated, patched copy of the repo to build inrp_list_projects - List prj/* projects, flag the Z10-capable onesrp_workspace_info - Which projects are already builtrp_create_custom_project - Clone a base project for your own PL logicrp_build_project - Setup → synth → impl → bitstream → .bit.bin, with parsed timingdeploy_to_redpitaya - Upload a .bit.bin and load it (xdevcfg on OS 1.04,
fpgautil on OS 2.00)ssh_redpitaya_exec - Run a shell command on the boardlist_vivado_docs / get_vivado_doc - Bundled 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), each with links to the AMD user guidesrun_tcl - Run any Tcl command or multi-line scriptrun_tcl_script - Source a .tcl filerequest_feature / list_feature_requestsThe server keeps one Vivado process in Tcl mode and talks to it through a
pseudo-terminal, using the Vivado% prompt to know when a command has finished.
Each tool family lives in its own module under tools/; see CLAUDE.md
for the design conventions and known Vivado Tcl pitfalls.
Issues and pull requests are welcome. There is no automated Vivado test in CI (it only checks that every tool has a handler); changes to the Vivado-facing code should be validated against a real Vivado install.
MIT — see LICENSE. Bundled third-party material (Red Pitaya board XDC
files, 3-clause BSD) is listed in THIRD-PARTY-NOTICES.md.
來源:README.md,提交 79ff546
Start a persistent Vivado TCL session. Must be called before project/design tools. Vivado startup is ~30s; the session is reused across tool calls.
vivado_pathStop the Vivado TCL session and free resources.
無需輸入參數。
Get statistics for the current Vivado session (commands run, timing, errors).
無需輸入參數。
Verify the Vivado process is responsive. With auto_recover=true the session is restarted if it hangs.
auto_recoverGet host hostname, free memory, and session state. Useful to check there is enough RAM before launching synthesis/implementation.
無需輸入參數。
Open an existing Vivado project (.xpr file).
project_path必填Close the currently open project.
無需輸入參數。
Get name, part, target language, directory of the open project.
無需輸入參數。
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.
name必填partforcedirectory必填target_languageAdd HDL source files (.v/.sv/.vhd) to the current project. Optionally sets the top module and updates compile order.
files必填filesetset_topAdd XDC constraint files to the current project.
files必填filesetList boards with bundled XDC + metadata. No Vivado session required.
無需輸入參數。
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.
board必填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.
jobstimeoutRun implementation (opt_design -> place_design -> route_design). Returns ground-truth status from the impl_1 run object.
jobstimeoutGenerate bitstream — `launch_runs impl_1 -to_step write_bitstream` -> wait_on_run. Returns ground-truth run status and the .bit path.
timeoutSet 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.
run必填strategy必填Get timing summary (WNS, TNS, WHS, THS). Returns parsed metrics by default. Use generate_full_report for raw output.
report_typedetail_levelGet failing/critical timing paths. Returns structured summary by default; use detail_level=standard|full for the raw text too.
clockto_pinthroughfrom_pinnum_pathspath_typedetail_levelslack_thresholdResource utilization (LUT/FF/BRAM/DSP/IO). Parsed only by default.
detail_levelhierarchicalmodule_filterthreshold_percentGet clock information and constraints (report_clocks).
無需輸入參數。
Get Vivado messages filtered by severity (error/critical/warning/all).
severityGet the design hierarchy (modules and instances), optionally filtered.
max_depthinstance_patternGet top-level I/O ports of the design.
無需輸入參數。
Search for nets by pattern (default '*').
limitpatternSearch for cells/instances by pattern.
limitpatternLaunch xsim in behavioral/post-synth/post-impl mode.
modeRun the simulation for a specified time (e.g. 100ns, 1us, all).
time必填Restart the simulation from time 0.
無需輸入參數。
Close the current simulation.
無需輸入參數。
Get the current simulation time (current_time).
無需輸入參數。
Get current value of a signal in simulation.
radixsignal必填Get values of multiple signals matching a wildcard pattern (max 50).
radixpattern必填Add signals to the waveform viewer.
signals必填Set the top-level testbench module for simulation.
filesettop_module必填List simulation objects in a scope (signals/ports/internal).
scopefilterList child scopes (hierarchy) in the simulation.
parentStep simulation by delta cycles.
countAdd a breakpoint on signal edge or change.
signal必填conditionRemove all breakpoints (remove_bps -all).
無需輸入參數。
Get simulation log messages filtered by severity.
severityExecute a raw TCL command in Vivado. Use for advanced ops not covered by other tools.
command必填timeoutSource a .tcl script file in the Vivado session (uses `source` under the hood). Helpful for replaying canonical Red Pitaya / Xilinx reference scripts.
path必填timeoutCreate 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).
name必填board_partSave the currently open block design to disk.
無需輸入參數。
Close the currently open block design (without deleting).
無需輸入參數。
List cells in the current block design (optionally filtered).
filterAdd 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.
vlnv必填configcell_name必填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.
tofrommodename必填typevlnvdirectionAdd 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"'}.
configmodule必填cell_name必填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': '<path>/red_pitaya.xml'}.
config必填cell_name必填Connect two scalar pins/ports in the current block design.
pin_to必填pin_from必填Connect two AXI/interface pins in the current block design.
intf_to必填intf_from必填Use `apply_bd_automation -rule xilinx.com:bd_rule:axi4` to wire an AXI master to a slave (inserts AXI interconnect + clock/reset hookups).
slave必填master必填optionsApply 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.
cellapply_board_presetRun validate_bd_design and return parsed status. Failures include unconnected pins, conflicting CONFIG values, or missing assignments.
無需輸入參數。
Regenerate the block design layout (cosmetic; useful before save).
無需輸入參數。
Auto-assign addresses in the BD address editor (assign_bd_address).
無需輸入參數。
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 <bd> -top; add_files -norecurse <wrapper>; set_property top <wrapper> [current_fileset]; update_compile_order.
bd_name必填set_topCreate 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.
vendorip_name必填libraryversionmodule_name必填Set CONFIG.* properties on an existing IP via set_property -dict.
config必填module_name必填Generate IP output products (synthesis + simulation by default).
targetsmodule_name必填Run out-of-context (OOC) synthesis on an IP.
module_name必填Upgrade IP version (no-op if already at latest).
module_nameGet a structured snapshot of the project's IP and their upgrade status.
無需輸入參數。
Open the Hardware Manager (no JTAG connection yet).
無需輸入參數。
Close the Hardware Manager.
無需輸入參數。
Connect to a hw_server (cs_server). Default URL is localhost:3121 — the value Vivado uses when running hw_server locally.
urlRefresh the currently selected hardware device (re-reads JTAG chain state). Call after re-plugging a cable.
無需輸入參數。
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`).
bit_file必填probes_fileRun report_power and return parsed totals (total/dynamic/static W) + a truncated raw block. Full output stored at /tmp/vivado_red_mcp/.
無需輸入參數。
Run report_drc and return parsed violations list (severity/code/message). Use after place_design/route_design to catch design-rule problems.
無需輸入參數。
Run report_methodology (UltraFast methodology checks). Returns violation list grouped by severity.
無需輸入參數。
Run report_qor_assessment (overall design quality score).
無需輸入參數。
Run report_clock_interaction to find cross-clock paths (timed/async/unconstrained).
無需輸入參數。
Resolve a bundled board XDC and attach it to the current project. Standalone wrapper over get_board_info + add_constraints.
board必填variantConvert a .bit into a raw binary image (.bit.bin) loadable via /dev/xdevcfg on the Red Pitaya. Use after generate_bitstream.
outputbit_file必填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.
runmax_itemsOne-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.
jobsname必填boarddirectory必填top_module必填synth_flagsxdc_variantimpl_timeoutsynth_timeoutverilog_files必填extra_xdc_filesDownload 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.
refurlforcetimeoutdest_pathCopy 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.
forcerepo_path必填workspace_pathList 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.
path必填Report workspace state: projects present and which already have a built bitstream.
workspace_path必填Clone an existing prj/<base> into prj/<name> inside the workspace, ready for custom PL logic. Returns the rtl/ dir and red_pitaya_top path to edit. No Vivado session required.
name必填base_project必填workspace_path必填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.
jobsmodeldefinesproject必填synth_flagsimpl_timeoutsetup_timeoutsynth_timeoutworkspace_path必填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.
host必填portusermethodpasswordkeep_remoteremote_pathbit_bin_path必填key_filenameconnect_timeoutRun 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.
host必填portusercommand必填passwordexec_timeoutkey_filenameconnect_timeoutLook 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.
topic必填versionList the bundled Vivado documentation topics.
無需輸入參數。
Submit a feature request for the Vivado MCP server (persisted on disk).
title必填priorityuse_casedescription必填List all submitted feature requests.
無需輸入參數。
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.
optionsoutput_filereport_type必填Read a section of a previously generated report. Provide report_id (from generate_full_report) or a direct file_path.
file_pathnum_linesreport_idstart_linesearch_pattern已滿足適用檢查項的 90%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
git clone https://github.com/sinemortal/vivado-red-mcp.gitcd vivado-red-mcppython -m venv .venv# Windows: .venv\Scripts\activate# Linux/macOS: source .venv/bin/activatepip install -e .claude mcp add --transport stdio --scope user vivado -- vivado-red-mcp# Windowsclaude mcp add --transport stdio --scope user vivado -- "C:\path\to\vivado-red-mcp\.venv\Scripts\python.exe" -m vivado_red_mcp# Linux/macOSclaude mcp add --transport stdio --scope user vivado -- /path/to/vivado-red-mcp/.venv/bin/python -m vivado_red_mcp{ "mcpServers": { "vivado": { "type": "stdio", "command": "vivado-red-mcp" } }}scp led_blinker.bit.bin [email protected]:/tmp/ssh [email protected] 'cat /tmp/led_blinker.bit.bin > /dev/xdevcfg'┌─────────────────┐ MCP (JSON-RPC) ┌─────────────────┐│ Claude Code │◄──────over stdio──────►│ vivado-red-mcp ││ (AI client) │ │ server │└─────────────────┘ └────────┬────────┘ │ pexpect (Linux) │ pywinpty/ConPTY (Windows) ▼ ┌─────────────────┐ │ Vivado process │ │ (-mode tcl) │ └─────────────────┘