pango-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pango-mcpSimulate my counter testbench and check the waveform for q==10"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pango-mcp
An MCP stdio server that gives any MCP-capable agent — Claude Code, Codex CLI, or your own client — hands-on control of a real FPGA toolchain: simulate, assert, synthesize, scan the JTAG chain, capture on-chip waveforms, and configure real silicon behind explicit confirmation gates.
On the name. The server is
pango-mcpbecause Pango Design Suite is the toolchain it drives end to end — synthesis, place & route, bitstream, ILA, device configuration. Its MCP tools keep thefpga_*prefix: several of them (fpga_sim,fpga_msim_*) drive Icarus Verilog and ModelSim/Questa, which have nothing to do with Pango, and naming thosepango_*would be a lie.
Who it's for
You already have an FPGA toolchain installed, and you want an agent to drive it — and to be provably wrong when it is wrong.
That second half is the point. PDS and ModelSim both exit 0 on failure. Every
tool here decides success by parsing the log (E: lines, Errors: N, the
bitstream success line, UVM error counts), never by exit code, and returns a
structured verdict — ok, parsed errors, timing/utilization, diagnostics —
instead of a raw log the model can narrate its way around.
Related MCP server: vivado-mcp-agent
What works with what
Capability | Backend | You need |
Verilog simulation, assertions, waveforms | Icarus Verilog |
|
VHDL, coverage, UVM, encrypted IP | ModelSim / Questa | install + license |
Synthesis, P&R, bitstream, reports | Pango Design Suite | install + license |
JTAG scan, SRAM/SPI configuration | PDS | board + cable |
On-chip debug (ILA/FLA capture) | PDS fabric inserter + JTAG | board + cable |
Primitive / IP / doc retrieval | offline corpus | built from your PDS install |
Platform. The server runs on any OS with Node ≥18.17 — it starts cleanly
with nothing installed and reports what is missing. The vendor tools it drives
are Windows-first in practice, and the bare-metal JTAG path
(fpga_jtag_*, fpga_ila_*) is Windows-only (it loads ftd2xx.dll through
ctypes.WinDLL). Python 3 is required for the JTAG layer only.
Install
git clone https://github.com/Renkos1/pango-mcp.git
cd pango-mcp
pnpm install
pnpm check # syntax gate over every module
pnpm test:unit # 33 tests — no toolchain, no board neededThen point it at your tools. Copy pango-mcp.env.example to a file outside
the install directory, fill in your paths, and set PANGO_MCP_ENV_FILE:
PANGO_MCP_PDS_2025=<path>\bin\pds_shell.exe
PANGO_LICENSE_FILE=<path>\pango.lic
PANGO_MCP_MODELSIM_HOME=<modelsim install root>
PANGO_MCP_MODELSIM_LICENSE=<path>\modelsim.licThe server is spawned over stdio with a safe env subset, so it does not inherit your shell's
LM_LICENSE_FILE/MGLS_LICENSE_FILE. SettingPANGO_MCP_MODELSIM_LICENSEis required for realfpga_msim_*runs.
Nothing is baked in: every path comes from config or env, and an unset one fails
with a message naming the knob. pango-mcp.config.json is an alternative to env
vars and additionally declares remote hosts and board profiles — see
pango-mcp.config.example.json.
Register with an agent
Claude Code:
claude mcp add pango -- node <ABSOLUTE_PATH_TO_REPO>/src/index.mjsCodex CLI (~/.codex/config.toml):
[mcp_servers.pango]
command = "node"
args = ["<ABSOLUTE_PATH_TO_REPO>/src/index.mjs"]Project-level .mcp.json:
{ "mcpServers": { "pango": { "command": "node", "args": ["<ABSOLUTE_PATH_TO_REPO>/src/index.mjs"] } } }Try it
Ask the agent to call
fpga_env— you should see your iverilog/PDS/ModelSim paths.Have it write a small design + testbench, then call
fpga_simwithwave:true.Have it call
fpga_asserton the result (log_contains: PASS,vcd_final_eq: q == 10).Negative control: ask for a testbench that
$fatals.okmust come backfalse. If it doesn't, that is the bug worth reporting.
Tools
43 tools, tiered. Call fpga_capabilities for the live catalog — it is the
authoritative list, generated from the same source the tests check.
The six you will actually use:
Tool | Does |
| What toolchains this machine has, with paths |
| iverilog compile + run; optional VCD and one-step waveform |
| Declarative pass/fail over a log or VCD — the real verdict |
| Any VCD → SVG/HTML timing diagram, optionally opened in a browser |
| PDS through |
| Read JTAG IDCODEs — read-only, always safe |
Everything else groups into: ModelSim (fpga_msim_*), PDS build/report
(fpga_pds_*, fpga_log_extract), device and flash (fpga_flash_*,
fpga_gen_*, fpga_cdt, fpga_exe), bare-metal JTAG (fpga_jtag_*), on-chip
debug (fpga_ila_*), and retrieval (fpga_primitive_lookup, fpga_ip_lookup,
fpga_doc_search, fpga_vault).
Full reference, including every argument: README.zh-CN.md.
Safety
This server is not a sandbox. It runs vendor binaries and writes to real silicon with your privileges. Run it as a local subprocess of a trusted agent; do not expose it to untrusted callers. Read SECURITY.md before wiring it into anything shared.
Every tool that writes to a device stops at a confirmation gate: it requires
confirm:true, a matching expectIdcode, and a real prior scan before it does
anything. Without confirmation it returns phase:"confirm" and touches nothing.
This is enforced in code and covered by tests, not just documented.
SPI flash programming is persistent and can leave a board unable to boot from flash. SRAM configuration is volatile and recoverable.
Cost control
Returns are compact by default — errors, timing, utilization, diagnostics, key
lines — with the full log written to disk and reachable via detail:"full".
Builds are cached by a hash of source content plus project semantics, so an
unchanged source returns the previous summary instantly. Knowledge retrieval is
keyword-scored with no embedding model and no API call; semantic search is
opt-in and falls back silently to keyword when unconfigured.
Docs
CONTRIBUTING.md — three contribution tiers; most of this is testable with no hardware
SECURITY.md — threat model, what's in scope, operator guidance
test/README.md — what every test needs and what it does without it
CHANGELOG.md — including the pre-1.0 stability policy
docs/ILA-FINDINGS.md — how the headless FLA capture path was derived
skills/ — the Pango PDS flow skill shipped with the server
License
Apache-2.0. See NOTICE for vendor trademarks and the exact provenance of the shipped knowledge corpora — this project bundles no vendor software and no vendor documentation text.
Available Tools
45 toolsfpga_assert仿真断言判定A
对 fpga_sim 日志和/或 VCD 做声明式断言判定。支持日志包含/正则与 VCD 终值/指定时刻/永不等于。
| Name | Required | Description | Default |
|---|---|---|---|
| log | No | 仿真日志文本 | |
| vcdPath | No | VCD 文件绝对路径 | |
| knowledge | No | 可选:仅当客观验证全绿时自动写回 knowledge-vault candidate;调用方不能自报 pass/fail | |
| assertions | Yes | 断言列表 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full disclosure burden, but it only enumerates assertion kinds. It does not state how multiple assertions are evaluated, what pass/fail or return semantics are, or side effects such as the knowledge-vault write-back described in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences: the first states the operation and target, the second lists supported assertion forms. No filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The rich schema covers parameter semantics and the knowledge side effect, so the description is adequate for initial selection and invocation. However, with no annotations and no output schema, the missing evaluation/return and usage-boundary information leaves material gaps for autonomous use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds value through '和/或' clarifying that log and vcdPath can be combined, and by paraphrasing enum meanings ('终值/指定时刻/永不等于').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('做声明式断言判定') on a specific resource ('fpga_sim 日志和/或 VCD') and lists concrete assertion modes. This makes it clearly distinct from sibling tools like fpga_sim, fpga_log_extract, and fpga_wave.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'fpga_sim 日志和/或 VCD' phrasing gives clear context that the tool validates simulation artifacts, and the supported assertion types signal when it applies. It does not explicitly name alternatives or when-not conditions, so it does not merit a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_capabilities能力目录 (分层)A
返回分层工具目录(tier0 热点/tier1 常用/tier2 专家) + 长尾能力如何经 fpga_cdt/fpga_exe 触达 + 成本/安全注意。用于发现完整 PDS 控制面而不撑大每个工具 schema。也回 serverVersion(运行实例的代码指纹)——与工作树 HEAD 不一致即服务陈旧,需重启。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 so well by revealing that the tool returns cost/safety notes and that serverVersion acts as a runtime code fingerprint whose mismatch with the working tree HEAD indicates stale service requiring restart. It does not explicitly state 'read-only', but the return-oriented phrasing and the absence of mutation language make the safety profile reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense, front-loaded sentences with no filler. The first sentence states the primary return value and purpose; the second adds a critical ops detail about serverVersion. Every clause contributes useful information for invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and no annotations, the description explains the main return kinds (catalog, long-tail routing, cost/safety notes, serverVersion) and even interprets the serverVersion semantics. For a parameterless discovery tool, this is sufficient for an agent to understand what it will receive and why it matters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema description coverage is 100%, so there is nothing meaningful for the description to add about parameters. According to the zero-parameter baseline, a score of 4 is appropriate because the description correctly focuses on return content rather than inventing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb-resource pair: it returns a layered tool catalog (tier0 hot/tier1 common/tier2 expert) plus a server version fingerprint. It clearly differentiates itself from sibling tools by positioning itself as the discovery entry point to the complete PDS control plane, rather than a tool that performs an FPGA operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it is '用于发现完整 PDS 控制面' (used to discover the complete control plane) and notes that long-tail capabilities are reached via fpga_cdt/fpga_exe, which gives the agent routing guidance. It does not explicitly state when not to use it, but the discovery-oriented framing is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_cdtCDT 通用 Tcl 直通 (受护栏)A
对 cdt_js 跑任意 cfg_*(cdt_cfg) 或 dbg_*(cdt_dbg) Tcl,覆盖扫链/读属性/配置/SPI flash/ILA 抓波/virtual-IO 全套。读类(scan/read/list/help)自由;写器件类(cfg_program/cfg_jtag_flash_erase|program/dbg_program 等)需 confirm:true + expectIdcode(先 scan 校验匹配)。connect:true(默认)自动包 connect/scan_chain/disconnect,只需给 commands;raw tcl 用 {{PORT}} 占位端口。
| Name | Required | Description | Default |
|---|---|---|---|
| tcl | No | 原始完整 Tcl 脚本(与 commands 二选一);用 {{PORT}} 占位 cdt_js 端口;提供时不自动包 connect | |
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts;省略=本机)。远程时在该设备上跑 cdt_cfg/cdt_dbg。 | |
| port | No | cdt_js 端口,默认按版本(2025.2=65425/2022.2=65420) | |
| detail | No | 返回粒度,默认 summary | |
| confirm | No | 脚本含写器件命令时必须 true | |
| connect | No | 是否自动包 connect/scan_chain/disconnect,默认 true(仅对 commands 生效) | |
| commands | No | 要执行的命令(每行一条);connect:true 时自动包 connect/scan_chain | |
| pdsVersion | No | 可选 PDS 版本/标签 | |
| timeoutSec | No | 超时秒数,默认 60 | |
| deviceIndex | No | 写器件前 scan 校验的设备索引,默认 0 | |
| interpreter | No | 解释器,默认 cdt_cfg(cfg_*);ILA/virtual-IO 用 cdt_dbg(dbg_*) | |
| expectIdcode | No | 写器件脚本必填:期望 IDCODE 或别名;运行前 scan 校验匹配 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety burden and discloses critical behavior: destructive write-device operations are gated by confirm and expectIdcode plus a scan check, and connect:true silently wraps commands in connect/scan_chain/disconnect while raw tcl uses {{PORT}}. It does not spell out exact failure modes or return format, but the guardrail and connection behavior are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but optimally sized, front-loading purpose and then adding guardrail and connection rules. The compressed notation (cfg_jtag_flash_erase|program, confirm:true) is efficient, though slightly less readable, so a 4 is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, no-annotation, no-output-schema tool, the description covers guardrails, invocation modes, and coverage, but it omits what the tool returns (raw Tcl output? summary/full structure?) and does not position the tool against the many fpga_* siblings. This leaves an agent with meaningful gaps for a high-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the description adds real interaction semantics: connect:true pairs with commands, raw tcl requires {{PORT}}, and confirm/expectIdcode are tied to write-device commands. This tells an agent how the parameters relate, which the bare schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs arbitrary cfg_* (cdt_cfg) or dbg_* (cdt_dbg) Tcl against cdt_js and enumerates the covered operations (scan, read, config, SPI flash, ILA, virtual-IO). It does not name explicit sibling tools for differentiation, so it earns a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational conditions: read-class commands are unrestricted; write-device commands require confirm:true and expectIdcode with prior scan validation; connect/scan/disconnect auto-wrapping depends on commands vs raw tcl. However, it never says when to choose this generic pass-through over the many specialized siblings (fpga_jtag_scan, fpga_flash_*, fpga_ila_*), so usage vs alternatives is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_doc_searchPDS 文档检索A
检索 PDS 文档层:(1)已抽取的蒸馏文本 chunk(Tcl/编译流程/扫链烧录/ILA 调试,直接可用);(2)21 份 PDS 手册 + 62 份 IP 数据手册注册表(返回 PDF 路径,宿主 agent 可直接 Read 该 PDF)。query 关键词召回;kind 限定 all/chunk/manual/datasheet;不传 query 返回手册清单。无 embedding、零额外成本。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 检索范围,默认 all | |
| mode | No | chunk 检索方式,默认 auto | |
| limit | No | 每类返回上限,默认 8 | |
| query | No | 关键词/语义,如 'cfg_program'/'capture waveform over jtag'/'Place-0084'/'timing' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and delivers: it states chunks are '直接可用' (directly usable), PDF paths are returned for the host agent to Read, and the no-query fallback returns a manual list. It also reveals the cost profile ('无 embedding、零额外成本'), a useful behavioral trait absent from schema/annotations. It stops short of describing zero-result behavior or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with zero filler: the action is front-loaded, the two-tier return contract follows immediately, parameter behavior is packed into the middle, and the cost note closes it. Every sentence earns its place relative to a 4-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity search tool with no output schema, the description competently sketches the return contract (chunk text vs PDF path) and default behaviors. The remaining gaps are minor: no explicit return structure/ranking details and no pointer to the sibling msim_doc_search for non-PDS documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, but the description adds genuine meaning beyond the schema: it enumerates what chunks contain (Tcl/编译流程/扫链烧录/ILA 调试), gives the exact registry size (21+62), and clarifies that 'semantic' mode does not rely on embeddings. This meaningfully supplements the bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('检索 PDS 文档层') and explains the two-tier result structure: distilled text chunks that are directly usable versus PDF paths the host agent can Read for 21 PDS manuals + 62 IP datasheets. This scoping clearly differentiates it from sibling fpga_msim_doc_search (MSIM docs) and fpga_ip_lookup without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: query drives keyword recall, kind restricts scope to all/chunk/manual/datasheet, and omitting query returns the manual list. However, it never names alternatives or exclusions — notably the near-twin sibling fpga_msim_doc_search — so an agent gets context but no explicit when-not-to guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_envFPGA 环境探测A
报告 FPGA 工作流可用工具:iverilog/vvp、verilator、gcc、node/pnpm,以及 PDS/cdt 路径、本地 PDS license 可用性/配置来源和本机 MCP server 实例归属。默认探本机;传 host 则经 SSH 探该远程执行设备(execution-device layer,与本机同一套探测逻辑)。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts 之一);省略=本机 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It discloses the probing scope, the local vs remote SSH behavior, and the kinds of information reported. It does not explicitly state 'read-only' or describe failure/error behavior, but '报告' and '探测' strongly imply a non-mutating reconnaissance operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the tool's purpose, and packs the essential behavioral distinctions (local vs remote, same probing logic) without redundancy. Every clause adds information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an environment probe with one optional parameter and no output schema, the description covers the input semantics, execution mode, and the full set of reported items. It is complete enough for an agent to select and invoke the tool, though it could optionally mention SSH prerequisites or the absence of side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents host as a remote device id from pango-mcp.config.json, and description coverage is 100%. The description adds meaningful semantics by explaining that omitting host means local, while providing host triggers SSH-based probing of the remote execution-device layer with identical logic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('报告'/report) and a concrete resource (FPGA workflow environment), enumerating exactly what is probed: iverilog/vvp, verilator, gcc, node/pnpm, PDS/cdt paths, license availability, and MCP server instance ownership. It clearly distinguishes this tool from the flow-oriented siblings by positioning it as an environment discovery/probe tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: default is local probing, and passing a host switches to SSH-based probing of a remote execution-device layer with the same logic. It does not explicitly name alternatives or exclusions, but the local/remote usage rule is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_exePDS bin 工具直通 (受护栏)A
在 PDS bin 目录跑构建/分析类工具(ip_generate/ip_compiler/ip_tar/cdt_bts/ppc/ppp/rf_analyzer/evp/pne/state/de/pce/ta)并回提取后的输出。任意 bin exe 都可用 -help/-version 探测其用法。器件/JTAG 类(cdt_cfg/cdt_dbg/cdt_js/cdt_ins)与 GUI(pds.exe/assistant) 不在此列——用 fpga_cdt / fpga_pds_run。
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | 工作目录绝对路径,默认 bin 目录(仅本机) | |
| exe | Yes | bin 目录下的 exe 名(可省略 .exe),如 ip_generate / ppc / cdt_bts | |
| args | No | 命令行参数;用 ['-help'] 探测用法 | |
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts;省略=本机)。远程时在该设备 bin 目录跑。 | |
| detail | No | 返回粒度,默认 summary | |
| pdsVersion | No | 可选 PDS 版本/标签 | |
| timeoutSec | No | 超时秒数,默认 120 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It does add useful behavioral context: only listed tools are in scope, output is extracted and returned, and -help/-version probing is possible. However, it never explains what the claimed 'guardrail' enforces, potential side effects, permissions, or failure behavior, so the disclosure is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense but purposeful sentences cover the action, the allowlist, the exclusion set, and the routing alternatives. No filler or repetition of schema content; the key constraints are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic executable passthrough with 7 parameters, no annotations, and no output schema, the description gives enough selection guidance but not enough execution detail. It omits the return format, error handling, guardrail specifics, and any prerequisites, leaving an agent to discover these at runtime.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the tool description's tool list is already reflected in the exe parameter description. The only extra parameter-relevant guidance is the -help/-version probing tip, which is operational rather than semantic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation—executing build/analysis PDS bin tools (with an explicit allowlist) and returning extracted output—and explicitly excludes device/JTAG and GUI tools. This makes it easy to tell apart from fpga_cdt and fpga_pds_run without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use the tool (build/analysis bin tools), when not to (device/JTAG and GUI tools), and names the correct alternatives (fpga_cdt, fpga_pds_run). It also gives the actionable hint to probe any bin exe with -help/-version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_flash_spi烧录板载 SPI FlashA
通过 FPGA JTAG->SPI bridge 持久烧录。危险动作:必须 confirm=true,且内部先 scan 并校验 expectIdcode。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts;省略=本机)。远程时 .sbit 推到该设备后在其上烧 SPI flash。 | |
| port | No | cdt_js 端口,默认来自配置或 65420 | |
| sbit | Yes | .sbit 绝对路径 | |
| confirm | No | 必须为 true 才实际烧录 | |
| sfcPath | No | 生成的 .sfc 路径;默认与 sbit 同名(远程时在远端临时目录生成) | |
| flashPart | Yes | SPI flash 型号,例如 W25Q128Q | |
| pdsVersion | No | 可选 PDS 版本/标签 | |
| timeoutSec | No | 超时秒数,默认 300 | |
| deviceIndex | No | JTAG 设备索引,默认 0 | |
| expectIdcode | Yes | 期望 IDCODE 或别名(PG2L100H/PG2L200H/GW/TG)。比较时忽略 IDCODE 高 4 位硅版本。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers meaningful safety-relevant behavior: the operation is persistent and destructive, it is gated by confirm=true, and it internally scans and verifies expectIdcode before writing. This goes well beyond the schema for a dangerous flash-write tool. It does not cover failure behavior (e.g., what happens on IDCODE mismatch) or overwrite/erase specifics, but the critical safety profile is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the mechanism and persistence trait, then immediately delivers the danger warning and the two safety requirements. Every word earns its place; no filler, no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-param destructive tool with no annotations and no output schema, the description covers the most critical contextual elements: mechanism, persistence, danger, the confirmation gate, and internal IDCODE verification. Minor gaps remain (no return/result info, no failure-mode behavior, no prerequisites like JTAG connection state), but the schema documents all parameters at 100% and the safety-critical workflow is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds behavioral meaning to two key parameters beyond the schema: confirm must literally be true (enforcement gate) and expectIdcode is checked internally via a scan step. This is useful nuance that reinforces how those parameters behave at runtime, not just what they are.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (持久烧录/persistently burn) plus the resource (板载 SPI Flash) and the mechanism (FPGA JTAG->SPI bridge). The word 持久 (persistent) distinguishes it from volatile alternatives like fpga_flash_sram, and the mechanism distinguishes it from fpga_jtag_flash. Purpose is unambiguous and differentiates well from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through 持久烧录 (persistent flashing, implying it is for final/production writes rather than volatile) and 危险动作 (dangerous, implying caution is required). However, it never explicitly names alternatives or states when not to use it — e.g., it doesn't say 'for volatile/debug use fpga_flash_sram' or contrast with fpga_jtag_flash. No exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_flash_sram烧录 FPGA SRAMA
烧 .sbit 到 FPGA SRAM。危险动作:必须 confirm=true,且内部先 scan 并校验 expectIdcode。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts;省略=本机)。远程时 .sbit 推到该设备后在其上烧录。 | |
| port | No | cdt_js 端口,默认来自配置或 65420 | |
| sbit | Yes | .sbit 绝对路径 | |
| confirm | No | 必须为 true 才实际烧录 | |
| pdsVersion | No | 可选 PDS 版本/标签 | |
| timeoutSec | No | 超时秒数,默认 120 | |
| deviceIndex | No | JTAG 设备索引,默认 0 | |
| expectIdcode | Yes | 期望 IDCODE 或别名(PG2L100H/PG2L200H/GW/TG)。比较时忽略 IDCODE 高 4 位硅版本。 |
TDQS
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 explicitly discloses that this is a dangerous action, that confirm=true is mandatory, and that the tool internally scans and verifies expectIdcode before burning. This is meaningful safety-relevant context, though it does not describe what happens on IDCODE mismatch or after successful programming.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The action is front-loaded, and the critical safety constraint follows immediately. Every word contributes necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a dangerous mutation tool with no annotations and no output schema, the description is incomplete. It omits when to prefer this over fpga_flash_spi, what happens if the expectIdcode check fails, power-cycle volatility implications, and what a successful result looks like. The rich parameter schema does not compensate for missing operational and failure context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so a baseline of 3 applies. The description adds behavioral meaning to parameters beyond schema text: confirm is framed as a required safety gate, and expectIdcode is tied to the internal scan-and-verify behavior. This goes beyond the schema's basic field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('烧 .sbit') and a specific resource ('FPGA SRAM'), immediately distinguishing it from siblings like fpga_flash_spi, which targets SPI flash. The verb and resource are concrete enough for an agent to understand the core operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use or when-not-to-use guidance, and does not mention alternatives such as fpga_flash_spi for persistent storage. It warns that the action is dangerous and requires confirm=true, but this is a safety requirement, not a selection rule between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_gen_chain_file生成 SPI 链式文件 (cfg_gen_chain_file)A
离线把两个或更多 .sbit 合成 SPI chain 文件。不连器件。可选生成 bin 及字节/位反转,全部参数化。
| Name | Required | Description | Default |
|---|---|---|---|
| infile | Yes | 输入 .sbit 列表(-infile),至少一个 | |
| outfile | No | 输出文件(-outfile),默认取第一个输入文件名 | |
| pdsVersion | No | 可选 PDS 版本/标签 | |
| timeoutSec | No | 超时秒数,默认 120 | |
| createBinFile | No | -create_bin_file:同时生成 bin 文件 | |
| reverseBitInAByte | No | -reverse_bit_in_a_byte:bin 内按字节翻转 bit | |
| reverseByteInAWord | No | -reverse_byte_in_a_word:bin 内按字翻转 byte |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full transparency burden. It discloses three important behavioral traits: offline operation, no hardware connection, and optional bin genertion with byte/bit reversal that are fully parameterized. It does not mention output-file overwrite behavior or timeouts, but for a file-genertion tool this is reasonably sufficient and non-misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence is front-loaded with the core operation and immediately adds the critical offline/no-device distinction. Each phrase earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple file-genertion tool, the description combined with a fully documented schema covers the essential context: purpose, offline behavior, no hardware, and optional bin/reversal modes. It does not explicitly state that files are written to disk, but this is heavily implied by '生成文件' and the outfile parameter, and no output schema is expected for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter (infile, outfile, pdsVersion, timeoutSec, createBinFile, reverseBitInAByte, reverseByteInAWord) already has a description. The tool description only re-stares the existence of bin and reversal options without adding new parameter meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb '合成' (combine) with concrete resources (.sbit files) and output (SPI chain file). The explicit '不连器件' (does not connect to device) distinguishes it from hardware-flashing siblings like fpga_flash_spi and fpga_jtag_gen_svf. The main purpose is immediately clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear context: use this when you need to generate an SPI chain file offline from two or more .sbit files without a connected device. This gives an agent a solid selection rule. It does not explicitly name alternatives or say when not to use it, so it falls just shy of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_gen_multi_file生成多启动数据流 (cfg_gen_multi_file)A
离线把两个或更多 .sbit 合成多启动/升级数据流(黄金+应用回退、SPI/BPI 升级等)。不连器件。infile 与 sbitStartAddress 由调用方给定,偏移不写死;type 选数据流类型。
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | 数据流类型(-type):0=Multi Boot,1=SPI Upgrade,2=BPI Upgrade,3=Multi Function,4=Remote Upgrade,5=Master Dual Boot | |
| infile | Yes | 输入 .sbit 列表(-infile),至少一个;顺序即镜像顺序 | |
| outfile | No | 输出文件(-outfile),默认取第一个输入文件名 | |
| pdsVersion | No | 可选 PDS 版本/标签 | |
| timeoutSec | No | 超时秒数,默认 120 | |
| goldenOutFile | No | 黄金位流输出文件名(-golden_out_file) | |
| appliedOutFile | No | 应用位流输出文件名(-applied_out_file) | |
| sbitStartAddress | No | 各镜像起始地址(-sbit_start_address),十六进制,与 infile 对应 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It discloses that the tool does not connect to the device, performs an offline merge, and does not hard-code offsets, which are meaningful behavioral traits. It does not discuss error handling or file overwrites, but the critical no-device behavior is explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with no filler. Every clause contributes signal: offline operation, multi-image merging, type selection, and caller responsibility. The core action is front-loaded before constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage and no output schema, the description provides the essential operational context: offline, no device, caller-controlled inputs, and type selection. It does not describe return values or exact output artifacts, but the schema's outfile, goldenOutFile, and appliedOutFile fields fill most of that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description reinforces that infile and sbitStartAddress are caller-provided and that type selects the stream type, but this mostly overlaps with existing schema descriptions. It adds only the '偏移不写死' nuance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: offline synthesis of two or more .sbit files into a multi-boot/upgrade data stream. It distinguishes itself from hardware-connected sibling tools by explicitly saying '不连器件' and clarifies the multi-boot/upgrade scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for offline generation without a connected device, and that the caller must supply infile and sbitStartAddress while type selects the stream kind. It provides clear context for when to use it, though it does not explicitly name sibling alternatives such as fpga_gen_chain_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_gen_sfc生成 SPI Flash 镜像 (.sfc)A
离线把 .sbit 转成 .sfc(cfg_gen_sfc),不连器件、不需 cable/confirm。flash 型号(-device_name)、读 opcode、起始地址全部参数化,可烧任意所连 FPGA 的配置 flash;不内置任何板级默认。多启动用 fpga_gen_multi_file。
| Name | Required | Description | Default |
|---|---|---|---|
| sfc | No | 输出 .sfc 路径;默认与 sbit 同名换 .sfc | |
| isX8 | No | -is_x8:X8 模式转换 | |
| sbit | Yes | .sbit 绝对路径 | |
| opcode | No | flash 读命令码(-opcode),仅支持 0x0B/0x3B/0x6B/0x0C/0x3C/0x6C | |
| fastMode | No | -fast_mode:下降沿采样 | |
| fileList | No | 用户数据文件列表(-file_list),与 userAddressList 对应 | |
| extraByte | No | -extra_byte:生成 sfc 时是否补一个额外字节 | |
| deviceName | No | flash 型号(-device_name);省略=cdt 默认 N25Q256。可接受名随 PDS 版本而异:2025.2 收 W25Q128Q/W25Q256/N25Q128 等(Winbond 带 Q 后缀),但拒 W25Q128/WINBOND128M;老版(2022.2)接受名不同。型号开放、按实际/兼容片选,未知时先用默认或 W25Q128Q 兼容名试。 | |
| pdsVersion | No | 可选 PDS 版本/标签 | |
| timeoutSec | No | 超时秒数,默认 120 | |
| writeChecksum | No | -write_checksum:写入校验和信息 | |
| userAddressList | No | 用户数据文件起始地址列表(-user_address_list),十六进制 | |
| sbitStartAddress | No | sbit 起始地址(-sbit_start_address),十六进制如 0x00000000;省略=不传(从 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the offline/no-hardware nature, the lack of built-in board defaults, and the parameterized flash model/read opcode/start address. It does not mention overwrite behavior or return details, but those are minor for a file-generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loades the core transformation, and each sentence adds distinct value: offline/no-hardware context and multi-boot routing. There is no tautology or redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with a fully documented schema, the description supplies the key operational context an agent needs: it is an offline generation step, not a hardware-bound operation, and multi-boot is handled elsewhere. It could add a note about prerequisites such as PDS environment, but the schema's optional pdsVersion and the sibling tool set already hint at that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a useful umbrella statement that flash model, read opcode, and start address are fully parameterized, but it does not replace the schema-level parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: offline conversion of .sbit to .sfc via cfg_gen_sfc, which clearly identifies the tool's purpose. It also differentiates it from siblings by noting multi-boot should use fpga_gen_multi_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly sets the usage context: offline, no device, no cable, no confirm. It also provides a concrete alternative for multi-boot, so an agent can route correctly without guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ila_adc_readILA: 读片上 ADC 寄存器(温度/电压等)A
便捷封装:经 GUI Tcl Console 执行 dbg_adc_read_reg -address <addr> 读片上 ADC 寄存器(如 die 温度),回读并解析数值。底层同 fpga_ila_console(session-1 UIAutomation 驱动,cable 由 GUI 打开)。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | GUI host id(省略=本机) | |
| user | No | 远程 GUI 交互桌面用户(默认取 host 配置;本机忽略) | |
| address | Yes | ADC 寄存器地址(十六进制字符串如 '0x10' 或十进制数) | |
| timeoutSec | No | 等待秒数,默认 40 |
TDQS
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 does disclose meaningful operational context: execution goes through the GUI Tcl Console via a session-1 UIAutomation driver, and the cable is opened by the GUI. However, it does not disclose whether the operation is read-only, what error conditions look like, or what happens when the GUI/cable is not ready.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no redundancy. The core function and command example are front-loaded in the first sentence, and the second sentence adds the underlying mechanism and the GUI dependency. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and full schema coverage, the description covers what it does, the underlying mechanism, and the GUI cable dependency. But with no output schema, the return is only vaguely signaled ('回读并解析数值'), and prerequisites and failure behavior are left implicit, leaving a real but small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: host, user, address, and timeoutSec all have individual descriptions including format examples and defaults. The description only adds marginal value by showing how address maps into the underlying command; it contributes no meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-object pair: read and parse on-chip ADC registers (e.g., die temperature), and names the exact underlying Tcl command it wraps (`dbg_adc_read_reg -address <addr>`). It also positions itself as a convenience wrapper over fpga_ila_console, which helps distinguish it from the raw console and capture tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('便捷封装' convenience wrapper for reading ADC registers), and the relationship to fpga_ila_console is stated at the implementation level. However, there is no explicit statement of when to choose this tool over alternatives, no exclusions, and no conditions such as 'the GUI must already have the cable open before calling this.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ila_buildILA: 仪表化构建(生成 .fic→注册→gen_bit_stream)→ sbit + 构建报告网页A
把 ILA 仪表化构建合并成一次自纠调用:旁路综合→Fabric Inserter ins_list_nets 权威解析→FIC 前精确成员校验→生成/注册 .fic→gen_bit_stream。多实例同名回 ambiguous,未被 Inserter 验证或已优化的信号都会在修改工程前 fail-fast。返回 sbit+fic+报告;本地默认把 sbit 交给 fpga_jtag_flash,再把 fic 交给 fpga_jtag_capture。GUI flow 仅作远程/特殊功能 fallback。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 远程构建 host id(省略=本机)。注意:网名发现在本机综合(与板无关),gen_bit_stream 才用 host。 | |
| ficPath | No | .fic 输出路径,默认 <projectDir>/debug/ila.fic | |
| pdsPath | Yes | .pds 工程绝对路径(已含 RTL/约束;器件从工程读取) | |
| signals | Yes | 要抓的期望 RTL 名或 Inserter 完整网名。唯一总线自动按位展开;多实例同名必须传完整层级;未验证/被优化会在写 FIC 前失败。 | |
| clockNet | No | 采样时钟的 RTL 名或 Inserter 完整网名;省略时从已发现且经 Inserter 验证的时钟候选中取第一个。 | |
| busGroups | No | 显示分组,如 [{name:'counter',low:0,high:15}] | |
| dataDepth | No | 采样深度,默认 1024 | |
| reportDir | No | 构建报告网页输出目录,默认 ~/fpga-ila-captures | |
| pdsVersion | No | 可选 PDS 版本/标签,如 2022.2 或 2025.2;省略按工程器件选择 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden, and it does so well. It reveals fail-fast behavior for ambiguous, unverified, or optimized signals, states that validation happens before modifying the project, and exposes side effects by saying the sbit is handed to fpga_jtag_flash and the fic to fpga_jtag_capture by default. This goes beyond the schema and gives the agent a realistic model of what the tool will do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient: every sentence adds substantive information about pipeline, validation behavior, outputs, or fallback. The core pipeline is front-loaded in the first sentence. A small amount of structure, such as bullet points or clearer separation between pipeline, error behavior, and defaults, would improve readability, but there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 9 parameters, no annotations, and no output schema, the description covers the essential behavioral contract: pipeline steps, outputs, side effects, default downstream actions, and error-handling posture. The input schema fully covers parameter details. The main gap is that the exact structure of the returned report and sbit/fic result is not described, and explicit differentiation from fpga_ila_flow is only implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful parameter-related context beyond the schema, especially for the signals parameter: multi-instance same-name ambiguity returns 'ambiguous', and unverified/optimized signals cause fail-fast before the project is modified. This helps the agent construct valid inputs, though not every parameter receives additional explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core function: combining ILA instrumented build into one self-correcting call, with a concrete pipeline (bypass synthesis → ins_list_nets parsing → FIC validation → generate/register .fic → gen_bit_stream). It also names concrete outputs (sbit+fic+报告), making the tool's purpose distinct from the individual-step sibling tools like fpga_ila_generate_fic and fpga_ila_list_nets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: it is the consolidated local build path, and GUI flow is explicitly positioned as only a remote/special fallback. It also mentions default chaining to fpga_jtag_flash and fpga_jtag_capture, which helps the agent understand the tool's role in the broader flow. However, it does not explicitly name sibling alternatives such as fpga_ila_flow as the thing to use instead in other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ila_captureILA GUI fallback: 抓波→导出→交互波形查看器A
GUI fallback,不是本地默认抓波路径;本地普通 FLA 优先 fpga_jtag_capture。仅在裸机 capture 不支持所需功能或远程 GUI 场景下,基于已完成的 fpga_ila_open 跑 dbg_fla_* 序列、导出 VCD、解析分组并生成交互波形查看器。
| Name | Required | Description | Default |
|---|---|---|---|
| fla | No | DebugCore 序号,默认 0 | |
| host | No | GUI host id(省略=本机) | |
| user | No | GUI 交互桌面用户(默认取 host 配置) | |
| clock | No | 采样时钟名(仅展示用) | |
| title | No | 查看器标题 | |
| outDir | No | 本地输出目录(viewer/json/vcd),默认 ~/fpga-ila-captures | |
| waitMs | No | run 后等待抓取完成的毫秒,默认 1500 | |
| trigger | No | 触发条件:默认 {mode:'immediate'};值触发示例 {mode:'value', value:'0500', radix:'hex'}(对触发端口做值匹配,X=任意) | |
| busAlias | No | base 名改名,如 {"DataPort":"counter"} | |
| signalNames | No | 按 bit 顺序的原始信号名,把导出的 DataPort[i] 重标为有意义的名字 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and it delivers useful context: this is a non-default fallback, it depends on a completed fpga_ila_open, and it performs a concrete multi-step workflow. It does not detail potential side effects, permissions, or completion/return behavior, so I do not score it a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences front-load the critical classification as a GUI fallback, state the preferred alternative, give the exact usage condition, and describe the workflow. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 10 optional parameters, nested trigger semantics, no output schema, and no annotations, the description plus rich schema is mostly sufficient: an agent knows when to use it, what it does, and what it produces. It could be stronger on success/return semantics and explicit side effects, but it is not under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all 10 parameters and the trigger object with an example. The description does not add parameter-level meaning beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose: it is the GUI fallback capture path that runs the dbg_fla_* sequence, exports VCD, parses groups, and generates an interactive waveform viewer. It explicitly distinguishes itself from the local default fpga_jtag_capture, so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use conditions: only in remote GUI scenarios or when bare-metal capture does not support the needed function. It also names the preferred alternative for ordinary local FLA, fpga_jtag_capture, and states the prerequisite that fpga_ila_open must already have completed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ila_consoleILA: 在 Fabric Debugger 的 Tcl Console 里执行 tcl(AI 调试控制台)A
无头 cdt_dbg 开不了 cable(open_cable 死锁,见 docs/ILA-FINDINGS.md);改为驱动 GUI Fabric Debugger 自带的 Tcl Console——它跑同一个 tcl 引擎且 cable 已由 GUI 打开。本工具在 GUI 所在的交互桌面(session 1)用 UIAutomation 把 tcl 打进 Console 并回读 transcript 增量,纯 AI 驱动、零人工点按。本机/远程皆可:本机(MCP 即跑在用户 session 1)直驱,远程经 SSH host 跳 session 1。可跑任意 dbg_* 命令(读 IDCODE/ADC、抓波 dbg_fla_*、import fic、program 等)。前提:目标桌面上 Fabric Debugger GUI 已打开并连好工程。写器件类命令(dbg_program 等)需 confirm:true + expectIdcode;工具先经同一 Console 只读 dbg_read_device_id 并匹配。
| Name | Required | Description | Default |
|---|---|---|---|
| tcl | Yes | 要在 Tcl Console 里执行的 tcl(可多条语句;工具自动包 catch 让报错回到 transcript) | |
| host | No | GUI host id(省略=本机)。本机时 MCP 已在用户交互会话,直接驱动本地 GUI;远程填 pango-mcp.config.json 的 hosts id | |
| user | No | 远程 GUI 所属交互桌面用户(默认取 host 配置的 user;本机忽略) | |
| confirm | No | 含写器件命令(dbg_program 等)时必须显式 true | |
| timeoutSec | No | 等待 console 执行完成的秒数,默认 60(抓波/慢 JTAG 适当加大) | |
| expectIdcode | No | 写器件命令必填:期望 IDCODE 或别名;执行前经 GUI Console 只读并匹配 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and meets it thoroughly. It reveals the GUI-automation mechanism (UIAutomation on interactive session 1, zero human clicks, auto-catch so errors return to the transcript), the performance profile (1-2 minutes per simple command due to tab switching and segmented transcript reads), the local/remote execution paths, and the safety behavior for write-device commands (confirm=true plus a pre-execution read-only IDCODE match via expectIdcode). No annotation contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a long single paragraph, but it is dense and every sentence earns its place: motivation, mechanism, local/remote variants, command scope, prerequisites, write-command safety gating, and performance warning follow in a logical order. It is front-loaded with the most decision-relevant facts (what it is, why GUI is required, safety gating) and contains no redundant filler, though light segmentation would improve scannability for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 6-parameter tool with no annotations and no output schema, the description covers preconditions, mechanism, scope, safety gating, error behavior (catch), and performance expectations comprehensively. The main gaps are that the return value is only implied (reads back transcript increments) rather than stated as a concrete output an agent can rely on, and failure behavior when the GUI is absent is not described. These are minor relative to the overall coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the per-parameter schema already documents tcl catch-wrapping, host/user routing for local vs. remote, confirm gating, timeoutSec defaults, and the expectIdcode read-only matching step. The description adds some meaningful context beyond the schema, mainly the concrete 1-2 minute latency estimate that explains the timeoutSec rationale, but it largely restates the schema's safety rules rather than adding new parameter-level semantics, so it does not exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb-resource-mechanism: it type Tcl commands into the GUI Fabric Debugger's Tcl Console via UIAutomation, running arbitrary dbg_* commands (IDCODE/ADC, dbg_fla_* capture, import fic, program). It also distinguishes itself by explaining why the headless cdt_dbg path deadlocks (open_cable) and by routing long captures to fpga_ila_capture. An agent can identify exactly what this tool does and how it differs from the ILA sibling cluster without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use context: the Fabric Debugger GUI must already be open and connected to the project on the target desktop, since the cable is held by the GUI. It gives a concrete when-not-to-use rule (long captures / slow JTAG → use fpga_ila_capture or the low-level driver), explains why the headless alternative is not viable, and documents local vs. remote host determination. This is complete routing guidance, not a vague hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ila_flowILA GUI fallback: 一键烧录→调试器→抓波A
GUI fallback:仅当裸机 fpga_jtag_flash→fpga_jtag_capture 不支持目标功能,或必须使用远程交互桌面时采用。危险动作必须 confirm:true。流程:可选推送工程→释放 cable→scan+IDCODE→烧录→fpga_ila_open→fpga_ila_capture→teardown;逐 stage 回报。普通本地 FLA 抓波不要优先走本流程。
| Name | Required | Description | Default |
|---|---|---|---|
| fla | No | DebugCore 序号,默认 0 | |
| host | No | GUI host id;优先用于远程交互桌面。省略仍可本机 fallback,但普通本地抓波应使用 fpga_jtag_flash→fpga_jtag_capture | |
| port | No | cdt_js 端口,默认 65425 | |
| sbit | Yes | 本地已构建的仪表化 .sbit 绝对路径 | |
| user | No | 远端交互桌面/SSH 用户(默认取 host 配置或 Administrator) | |
| clock | No | 采样时钟名(仅展示用) | |
| title | No | 查看器标题,默认 "FLA capture" | |
| outDir | No | 本地输出目录(viewer/json/vcd),默认 ~/fpga-ila-captures | |
| waitMs | No | run 后等待抓取完成的毫秒,默认 1500 | |
| capture | No | 运行期捕获配置(无需重建):type 'n'=连续 samples 个样本(≤构建时 .fic dataDepth);type 'w'=窗口模式(windows=2^n 窗口数, position=触发点位置),配 value trigger 可把窗口 frame 到稀有/慢事件。**慢信号'全0'时改这里、勿改 DUT**。省略=工程默认(Nsamples/1024)。 | |
| confirm | No | 必须为 true 才会访问 cable、烧录并抓波 | |
| trigger | No | 触发条件:默认 {mode:'immediate'};值触发示例 {mode:'value', value:'0500', radix:'hex'}(对触发端口做值匹配,X=任意) | |
| builtDir | No | 可选:本地已构建工程目录,流程开始时推送到 projectDir(含 prj_tasks 等) | |
| busAlias | No | base 名改名,如 {"DataPort":"counter"} | |
| knowledge | No | 可选:仅当客观验证全绿时自动写回 knowledge-vault candidate;调用方不能自报 pass/fail | |
| pdsVersion | No | PDS 版本标签(定位远端 PDS bin),默认 2025.2 | |
| projectDir | Yes | 工程目录(debugger 据此识别核/信号名;本机=本地路径,远程=远端路径) | |
| deviceIndex | No | JTAG 设备索引,默认 0 | |
| signalNames | No | 按 bit 顺序的原始信号名 | |
| expectIdcode | Yes | 期望 IDCODE 或别名(PG2L200H/TG/...),烧录前校验 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does substantial work: it flags the flow as dangerous ("危险动作"), mandates confirm:true before cable access/flash/capture, names the destructive stages (释放 cable, 烧录), and promises stage-by-stage reporting. It stops short of describing side effects (e.g., what cable release does to other JTAG users) and failure/rollback behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description packs classification, usage condition, safety gate, the full stage pipeline, reporting behavior, and an exclusion into a few dense clauses, with the most decision-relevant facts (fallback status, alternatives) front-loaded. It is slightly run-on rather than enumerated, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity composite tool (20 params, nested objects, destructive multi-stage flow, no annotations and no output schema), the description covers the orchestration stages, the confirm gate, and periodic reporting. Remaining gaps are failure/rollback semantics and an explicit statement of final outputs (only implied via outDir's viewer/json/vcd), but the schema carries the parameter load effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema entries are already rich (capture explains n/w window modes, confirm documents the cable/flash/capture gating, expectIdcode states verification-before-flash). The description adds only marginal reinforcement of the confirm requirement and the remote-desktop host condition, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as a GUI-fallback flow for ILA capture and enumerates its pipeline (push→release cable→scan+IDCODE→flash→fpga_ila_open→fpga_ila_capture→teardown), so the resource and flow are specific. It separates itself from the bare-metal fpga_jtag_flash→fpga_jtag_capture path by naming that sibling, but the purpose is defined largely by exclusion ("仅当...不支持...或必须...时采用") rather than by a crisp primary action statement, so it falls just short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit adoption conditions (bare-metal fpga_jtag_flash→fpga_jtag_capture lacking target support, or remote interactive desktop required), names the alternative tools verbatim, and adds a clear exclusion ("普通本地 FLA 抓波不要优先走本流程"). This is textbook when-to-use/when-not-to-use guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ila_generate_ficILA: 生成 .fic 配置(纯本地代码生成,低层原语)A
低层原语:把器件 + 时钟网 + 信号网名清单写成符合 Pango .fic 规范的文本。入参必须是综合后真实网名——flatten 会改名(寄存器 tx→nt_led[0]、时钟 clk→nt_clk),勿假设 RTL 名保留;不知真名先用 fpga_ila_list_nets,或直接用 fpga_ila_build(接受期望名并自动解析)。生成后用 fpga_pds_register_fic 注册→fpga_pds_run gen_bit_stream 出仪表化 sbit。
| Name | Required | Description | Default |
|---|---|---|---|
| part | Yes | 完整目标器件 family/device/speedgrade/package(板级物理信息,来自工程/用户/Target Profile,工具不默认、不猜) | |
| ficPath | Yes | .fic 输出绝对路径(建议 <projectDir>/debug/<name>.fic) | |
| signals | Yes | 要抓的信号网名清单(综合后真实网名;RTL 名未必保留,用 fpga_ila_list_nets 解析) | |
| clockNet | Yes | 采样时钟网名(综合后真实网名,如 nt_clk/clk_g;用 fpga_ila_list_nets 的 clocks 取) | |
| busGroups | No | 可选显示分组(数据 bus 在波形里整体显示) | |
| dataDepth | No | 采样深度,默认 1024(消耗 DRM 块) | |
| designInputFile | No | 可选:综合网表/.adf 绝对路径,写入 .fic 的 designInputFile 字段;一般留空由工程上下文提供 |
TDQS
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 does this well by warning about flatten renaming, requiring post-synthesis net names, and framing the tool as pure local code generation. It does not mention edge behaviors like file overwrite or validation failure, but the critical behavioral constraints are clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well structured: core action, then critical caveat, then alternatives, then downstream workflow. Every sentence contributes actionable information, and there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with nested objects and no output schema, the description covers the essential usage context: what input is required, why the input must be real net names, how to obtain those names, which alternative tool to prefer, and what to do after generation. Combined with the fully-described schema, an agent has enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining that signals and clockNet must be post-synthesis real net names, giving concrete rename examples, and directing the agent to fpga_ila_list_nets for resolution. It does not discuss busGroups or dataDepth in prose, but those are already well covered by schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action — writing device, clock net, and signal net names into a Pango .fic text file — and identifies itself as a low-level primitive. It clearly distinguishes itself from fpga_ila_build and fpga_ila_list_nets, so an agent can tell this tool apart without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: when you already have post-synthesis real net names. It also gives clear alternatives: use fpga_ila_list_nets if names unknown, or use fpga_ila_build for automatic name resolution. It even names the downstream sequence (fpga_pds_register_fic → fpga_pds_run gen_bit_stream), which fully orients the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ila_list_netsILA: 发现可抽头的真实网名(综合→解析网表)A
解决 ILA 抽头的根本问题:综合 flatten 后的网名 ≠ RTL 名。本工具在隔离旁路副本中 compile→run_ads,再调用 Fabric Inserter 的 ins_list_nets 取得 .fic 真正可消费的全层级标量网名;不会从模块定义猜路径。可选 signals 会展开唯一总线并返回 exact/renamed/hierarchical/ambiguous/unverified/pruned,多实例同名必须传完整层级。fpga_ila_build 使用同一权威清单做 FIC 前 fail-fast。
| Name | Required | Description | Default |
|---|---|---|---|
| pdsPath | Yes | .pds 工程绝对路径(已含 RTL/约束;器件从工程读取) | |
| signals | No | 可选:把期望 RTL 名或完整 flattened 名解析为 Inserter 真网名;唯一总线自动按位展开,多实例同名回 ambiguous+candidates | |
| pdsVersion | No | 可选 PDS 版本标签(定位 pds_shell);省略按工程器件选择 | |
| timeoutSec | No | 综合超时秒数,默认 300 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers: it discloses that the tool runs compile→run_ads inside an isolated bypass copy (side-effect containment), triggers a full synthesis (justifying timeoutSec), obtains names via ins_list_nets from the .fic, and states a key limitation — it does not guess paths from module definitions. It also reveals the output status taxonomy (exact/renamed/hierarchical/ambiguous/unverified/pruned) and the ambiguous+candidates behavior for multi-instance nets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the core purpose front-loaded ('solves the fundamental ILA probing problem'), followed by mechanism, optional behavior, and workflow relationship. Every clause carries distinct information — problem, mechanism, limitation, statuses, and fpga_ila_build dependency — with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is remarkably complete: it covers purpose, mechanism, side effects (isolated copy, full synthesis run), parameter nuances, return status categories, and its place in the ILA flow. An agent has enough to decide when to call it, what to pass, and what shape of result to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing a baseline of 3. The description adds meaning beyond the schema for the signals parameter by listing the full resolution status taxonomy not present in the schema, and it gives context to pdsPath/timeoutSec by explaining the isolated compile→run_ads flow. It does not add novel format details for pdsVersion or timeoutSec beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: it discovers the real, probe-able full-hierarchy scalar net names that the Fabric Inserter can consume from the .fic, explicitly distinguishing them from RTL names. It differentiates itself from siblings by declaring it does not guess paths from module definitions and by positioning fpga_ila_build as the consumer of the same authoritative list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear situational context — use it when post-synthesis flattened net names diverge from RTL names and you need the exact names the Inserter will consume — and establishes the workflow position (fpga_ila_build uses the same list for FIC fail-fast). It also gives conditional guidance for signals (unique buses auto-expand; multi-instance same-name nets require full hierarchy), but it never explicitly names an alternative tool or states when not to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ila_openILA GUI fallback: 打开调试器→扫链→检测核A
GUI fallback,不是本地默认路径。本地普通 FLA 抓波优先 fpga_jtag_flash → fpga_jtag_capture;仅当裸机 capture 不支持目标功能,或需要远程交互桌面时使用。本工具把 Fabric Debugger 拉起并就绪:session-1 启动 cdt_dbg → Search JTAG Chain → 处理 Open Cable 弹窗 → 扫描 UIA 树检测 DebugCore。前提:projectDir 是已构建且含 FLA 核的工程目录。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | GUI host id(省略=本机) | |
| user | No | 远程 GUI 交互桌面用户(默认取 host 配置;本机忽略) | |
| pdsVersion | No | PDS 版本标签(定位 cdt_dbg bin),默认 2025.2 | |
| projectDir | Yes | 工程目录(已 gen_bit_stream 且含 FLA 核;本机=本地路径,远程=远端路径) |
TDQS
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 reveals the operational workflow, the session-1 startup, popup handling, and prerequisites. It does not discuss timeouts, process leftovers, or success/failure semantics, but the GUI-launch behavior is well characterized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each earning its place: fallback status, alternatives/conditions, workflow steps, and prerequisite. No filler, and critical context is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the when, what, workflow, and prerequisites for a medium-complexity GUI tool. There is no output schema, and it does not describe return values or failure indications, but the title and workflow imply success is 'DebugCore detected/ready', which is enough for an agent to proceed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a prerequisite emphasis on projectDir being a built FLA-containing directory, but the schema already states this and also documents host/user/pdsVersion meaning, so the description provides little extra parametric value beyond what structured fields already offer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action — launching and readying the Fabric Debugger via a concrete sequence (cdt_dbg → Search JTAG Chain → handle Open Cable popup → scan UIA tree for DebugCore) — and clearly labels itself as the GUI fallback, distinguishing it from the local default path. This makes the tool's function unmistakable even before reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the preferred alternatives (fpga_jtag_flash → fpga_jtag_capture) and gives exact conditions for choosing this tool instead: when bare-metal capture lacks target support or remote interactive desktop is needed. This is textbook when-to-use guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_ip_lookupPDS IP 核查询A
查 PDS IP 目录(~65 核:PLL/RAM/DRM/FIFO/APM/DDR/Debug 等):slug=精确返回该核 header/支持器件/参数(含 enum 选项)/数据手册 PDF 路径;query=关键词召回;category=按类(子串匹配,如 'PLL'/'Memory'/'DDR');都不传=返回核清单汇总。每个核自带 datasheet PDF。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 检索方式,默认 auto | |
| slug | No | 精确核 slug(来自 query/summary 结果) | |
| limit | No | query 返回上限,默认 10 | |
| query | No | 关键词/语义召回,如 'pll'/'fifo'/'clock divider'/'reset' | |
| category | No | 分类子串过滤,如 'PLL'/'Memory'/'DDR'/'Debug' | |
| maxParams | No | slug 返回的参数上限(控 token),默认 60 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral burden. It discloses what each call mode returns, that category uses substring matching, that all-args-omitted produces a summary, and that every core includes a datasheet PDF path. It omits error/edge-case behavior, but for a read-only lookup this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with semicolon-separated modes, front-loaded with scope ('~65 核') and a representative list of categories. Every clause conveys either a mode, its behavior, or its output; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers slug, query, category, and the empty-args case, and describes output contents adequately. However, the schema exposes a 'mode' parameter with auto/keyword/semantic options, and the description does not explain when to choose semantic over keyword, nor what 'auto' resolves to. Without an output schema, those ambiguities remain, so completecess is slightly short.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: e.g., slug returns the core's header/params/PDF, category is a substring match, and passing no filter returns a summary list. This extra behavioral nuance is valuable and justifies the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('查') and a concrete resource ('PDS IP 目录'), and further distinguishes itself by enumerating output contents (header, supported devices, parameters with enum options, datasheet PDF path, summary list). This clearly separates it from sibling lookup tools like fpga_primitive_lookup or fpga_doc_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage conditions for each mode: slug for exact matching, query for keyword recall, category for substring filtering, and no-args for a summary list. This is strong operational guidance. However, it does not explicitly compare this tool to sibling tools or state when not to use it, so the cross-tool selection logic is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_jtag_capture本地首选:裸机 JTAG FLA 抓波A
本地 ILA 的默认抓波路径:经 FT2232 武装片上 FLA、读回采样缓冲并导出(VCD/JSON/CSV/可选 raw),不走 cdt_js/GUI。通常先 fpga_jtag_flash,再调用本工具;width/depth/信号名来自设计 .fic 或显式给定。PDS 不在 .fic 暴露物理 stride:reader 先按 vendor 标准 width+1 精确探测,必要时扩大读取并仅凭 protocol padding 稀疏度推断;歧义 fail-closed,也可显式给 paddingBits。capture.framing 始终返回 paddingOneCounts/header/tail/read length。可选值/边沿触发(--trig),需 ila.mjs 建过 Match-Unit 的 FLA;窗口按触发对齐返回。导出路径的 parent 不存在时自动递归创建。
| Name | Required | Description | Default |
|---|---|---|---|
| csv | No | 写 CSV 到此路径 | |
| fic | No | 设计 .fic(推导 signals/depth) | |
| raw | No | 可选:写 step-29 原始 TDO bitstream(二进制,LSB-first packed bytes)到此路径 | |
| vcd | No | 写 VCD 到此路径 | |
| cond | No | 条件位(capture_len-1),0 或 1,默认 0 | |
| json | No | 写 JSON 到此路径 | |
| trig | No | 每通道触发模式,width 个字符 x/0/1/r/f(从 ch0);省略/全 x = 始终触发 | |
| depth | No | 采样深度(2 的幂) | |
| tckHz | No | JTAG TCK(Hz),默认 1e6 | |
| width | No | 采样位宽;省略则取 .fic/signals | |
| channel | No | FT2232 通道,默认 0 | |
| signals | No | 逗号分隔位名,LSB 在前(覆盖 .fic) | |
| trigPos | No | 触发在缓冲中的位置,默认 depth | |
| timeoutSec | No | 超时秒数,默认 120 | |
| paddingBits | No | 可选:显式物理 protocol bits/sample;省略则自动探测/推断,歧义会 fail-closed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses core behaviors: physical stride probing by vendor standard, expanded reads with protocol-padding sparsity inference, ambiguity fail-closed, trigger alignment, and automatic recursive creation of export parent directories. It does not mention side effects on the FT2232 or FLA state, but gives substantial behavioral context beyond a generic 'captures' verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and front-loaded with the key default-path statement, but it is a long paragraph with many semi-colon-separated clauses. Every clause adds information, but an agent would benefit from bullet structure or shorter sentences. It is not concise, though it is information-dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 params, no output schema, and no annotations, the description covers the workflow prerequisites, capture process, export formats, trigger alignment, and ambiguity handling. It does not specify all return fields of capture.framing (but names several), nor does it detail the exact condition/cond parameter semantics beyond a hint. Still, it is unusually complete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful semantics beyond the schema: it explains how paddingBits interacts with the automatic probing/inference and fail-closed behavior, how trig relates to ila.mjs Match-Unit prerequisites and per-channel trigger patterns, and how signals relate to .fic overrides. It ties parameters into the overall workflow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('capture'), resource ('FLA via FT2232'), and workflow position ('default local ILA capture path'), and distinguishes itself from cdt_js/GUI and sibling fpga_ila_capture. It clearly tells an agent what the tool does and how it relates to the local JTAG flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('默认抓波路径...不走 cdt_js/GUI'), prerequisites ('通常先 fpga_jtag_flash,再调用本工具'), and configuration source ('width/depth/信号名来自设计 .fic 或显式给定'). It also gives fail-closed behavior and explicit override (paddingBits) for ambiguous cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_jtag_flash裸机 JTAG 烧录 SRAM (SVF 回放)A
经 FT2232 回放 CRAM SVF 配置 FPGA(SRAM、易失/可逆,~15s@6MHz),校验 done bit。危险动作:必须 confirm=true,并先裸机 scan 校验 expectIdcode;SVF 内仍做第二次 IDCODE TDO 检查。给 --sbit 时自动离线生成/缓存 SVF。不走 cdt_js/GUI。
| Name | Required | Description | Default |
|---|---|---|---|
| svf | No | CRAM .svf 路径(与 sbit 二选一,跳过生成) | |
| sbit | No | .sbit 路径(与 svf 二选一,自动缓存/生成 CRAM SVF) | |
| tckHz | No | JTAG TCK(Hz),默认 6e6(实测 ≤10e6 安全) | |
| pdsBin | No | --sbit 路径用:含 cdt_cfg_shell.exe 的目录 | |
| channel | No | FT2232 通道,默认 0 | |
| confirm | No | 必须为 true 才实际烧录 | |
| license | No | --sbit 路径用:PANGO_LICENSE_FILE | |
| timeoutSec | No | 超时秒数,默认 180 | |
| expectIdcode | Yes | 期望 IDCODE 或别名(如 PG2L200H);比较时忽略高 4 位硅版本 |
TDQS
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 so thoroughly. It discloses that the operation is volatile/reversible, takes about 15s at 6MHz, verifies done bit, performs two IDCODE checks, auto-generates/caches SVF for --sbit, and requires confirm=true as a safety gate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core operation and verification appear first, followed by safety preconditions, the sbit generation path, and one explicit exclusion. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, dangerous tool with no annotations and no output schema, this description covers most invocation-critical context: operation, safety, preconditions, both input paths, and tool boundaries. However, it leaves the success/failure return behavior implicit, so it is not fully complete for an agent that needs to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful extra semantics: it clarifies the svf/sbit mutual exclusion and caching behavior, notes that tckHz up to 10e6 is safe in practice, and explains that expectIdcode comparison ignores the high 4 bits. This exceeds the schema's own descriptions, though not every parameter is discussed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: replay a CRAM SVF via FT2232 to configure FPGA SRAM, then verify the done bit. It differentiates from siblings by emphasizing volatile/reversible SRAM and explicitly excluding the cdt_js/GUI workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context and preconditions are given: this is a dangerous action, confirm must be true, and a bare-metal scan should first verify expectIdcode. It also says 'not via cdt_js/GUI,' but it does not name sibling alternatives or explicitly state when to prefer this over tools like fpga_flash_sram or fpga_jtag_gen_svf, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_jtag_gen_svf离线 .sbit→CRAM .svf (cdt_cfg)A
经 cdt_cfg cfg_one_step_create_svf 把 .sbit 转成 CRAM(SRAM) 配置 SVF。离线、不连 cable,给 fpga_jtag_flash 复用。PDS bin/license 默认从 pango-mcp 配置/环境自动发现。
| Name | Required | Description | Default |
|---|---|---|---|
| svf | No | 输出 .svf 路径;默认 <sbit>_cram.svf 同目录 | |
| sbit | Yes | .sbit 绝对路径 | |
| pdsBin | No | 含 cdt_cfg_shell.exe 的目录;省略=自动发现 | |
| license | No | PANGO_LICENSE_FILE;省略=继承环境 | |
| property | No | -svf_property,默认 0x40C4E(CRAM+check-done+1MHz) | |
| timeoutSec | No | 超时秒数,默认 180 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses key behavioral traits: offline operation, no cable connection, PDS bin/license auto-discovery, and the default CRAM property value (0x40C4E). However, it doesn't disclose what happens on failure, whether the SVF is overwritten, or the detailed behavior of timeoutSec. The core offline-vs-online behavior is clear, which is the most important trait here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact paragraph that front-loads the core transformation (offline .sbit→CRAM SVF) and then adds the key qualifier (offline, no cable) and the reuse note. The auto-discovery sentence is useful but slightly dense; still, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a conversion tool with no output schema, the description explains the input (.sbit), output (SVF path default), toolchain (cdt_cfg), offline nature, and environment discovery. It lacks details about return values or error semantics, but the parameter schema covers paths and defaults well. Given the absence of annotations and output schema, this is reasonably complete but could add a note about typical failure modes or output artifacts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 6 parameters. The description adds value by explaining that pdsBin and license are auto-discovered from pango-mcp config/environment, and by revealing the default SVF naming convention (<sbit>_cram.svf). It also explains the purpose of the property default (CRAM+check-done+1MHz), which goes beyond the schema's terse '-svf_property'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (转换/将...转成), a precise resource (.sbit → CRAM SVF), and the underlying mechanism (cdt_cfg cfg_one_step_create_svf). It explicitly distinguishes itself as offline (离线、不连 cable) and notes its reuse by fpga_jtag_flash, making it clear how it differs from sibling JTAG tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this tool is offline and does not connect a cable, and that it is intended for reuse by fpga_jtag_flash. This gives clear context for when to use it, though it doesn't explicitly name alternatives or state when not to use other JTAG tools beyond the offline/online distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_jtag_scan裸机 JTAG 扫描 (MPSSE)A
经 FT2232 直读 IDCODE,不走 cdt_js/PDS、无需 license。只读、设备安全。与 fpga_pds_scan 互斥用 cable:cdt_js 在跑时先停。
| Name | Required | Description | Default |
|---|---|---|---|
| tckHz | No | JTAG TCK(Hz),默认 1e6 | |
| channel | No | FT2232 通道;省略=探测 0 和 1 | |
| timeoutSec | No | 超时秒数,默认 60 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses important behavior: direct hardware read, read-only and device-safe, no license needed, and cable mutual exclusion. It could add what happens on conflict or what output is returned, but the stated traits cover the main safety and operational concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses with no filler: mechanism, licensing/read-only status, and the one critical caveat. High-value information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only probe with three optional and fully documented parameters, the description covers selection, safety, and the key operational constraint. It falls slightly short only by not specifying the exact output/return format, since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter already has a meaningful description including defaults and channel probing behavior. The tool description adds no parameter-level information, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reads IDCODE directly via FT2232, explicitly distinguishing itself from fpga_pds_scan and the cdt_js/PDS path. The scope is clear enough that an agent can separate it from sibling JTAG tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete selection criteria: no license required, no dependency on cdt_js/PDS, read-only, and mutually exclusive with fpga_pds_scan on the cable. It also instructs the agent to stop cdt_js first, which is actionable guidance beyond the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_log_extract日志关键信息提取A
对一段日志(或日志文件)按 profile 抽取关键信息:pds(错误码/阶段/时序/资源/已知问题)、cdt(IDCODE/done bit/verify)、sim(失败标记)。用于对落盘日志二次廉价提取,省 token。
| Name | Required | Description | Default |
|---|---|---|---|
| log | No | 日志文本(与 logPath 二选一) | |
| logPath | No | 日志文件绝对路径(与 log 二选一) | |
| profile | No | 提取 profile,默认 pds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses the operation is a cheap, token-saving extraction, and details the information categories produced for each profile. It does not describe the output format or error behavior, but for a read-only extraction tool the description covers the main behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler: the action and object come first, followed by the profile details and a purpose note. Every clause contributes to understanding what the tool does and why to use it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (3 optional params, no nested objects) and the schema already documents all parameters, so the description does not need to repeat schema details. The only notable omission is the output representation, but the per-profile content list gives the agent enough expectation for this utility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by mapping each profile enum value to concrete extracted fields (pds: error codes/stages/timing/resources/known issues; cdt: IDCODE/done bit/verify; sim: failure markers), and it hints at the log/logPath duality by mentioning both log text and log file.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('抽取'/'extract') and resource (日志/log), and enumerates the per-profile extracted content (pds, cdt, sim), making its function clear. It does not explicitly name sibling tools or contrast against them, but its role as a log post-processing utility is distinct enough among the FPGA workflow siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '用于对落盘日志二次廉价提取' explicitly establishes when to use the tool: for secondary, low-cost extraction from on-disk logs. It does not state when-not-to-use or name alternatives, but the context is clear and no exclusion is needed for this simple utility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_msim_compileModelSim 仅编译 (vlog/vcom)A
只编译(不运行 vsim):Verilog/SV→vlog、VHDL→vcom,做语法/早期检查。加密 IP(.vp/.svp,IEEE-1735)由 vlog 原生解密。ok 由 'Errors: N' 与 ** Error 判定,不信退出码。紧凑摘要 + detail:'full' + 缓存。
| Name | Required | Description | Default |
|---|---|---|---|
| lib | No | 工作库名,默认 work | |
| host | No | 远程执行设备 id(hosts.<id>.modelsim.home;省略=本机)。远程时源推到该设备编译;fileList/libDirs 为该设备侧路径。 | |
| cache | No | 默认 true;false 强制重编 | |
| detail | No | 返回粒度,默认 summary | |
| libDirs | No | vlog 库搜索目录,经 -y +libext 自动解析实例化到的厂商原语仿真模型。 | |
| sources | No | 相对/绝对源文件(含加密 .vp/.svp);省略=workdir 下所有 HDL | |
| workdir | Yes | 工作目录绝对路径 | |
| fileList | No | vlog 文件清单(.f),经 -F 读入(清单内相对路径相对清单目录)。喂 PDS 的 IP 仿真清单(如 PCIe filelist_pciegen*_gtp.f)。 | |
| vcomArgs | No | 追加给 vcom 的参数,如 -2008 | |
| vlogArgs | No | 追加给 vlog 的参数 | |
| timeoutSec | No | 超时秒数,默认 120 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it reveals that success is determined by 'Errors: N' and '** Error' rather than the exit code, that encrypted IEEE-1735 IP is natively decrypted by vlog, and that caching affects recompilation. This materially helps an agent predict tool behavior beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short, dense sentences with the core scope front-loaded, followed by behavioral caveats. There is no filler, and every sentence adds useful operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no output schema, the description covers the essential operational context: compile-only scope, language-to-tool mapping, success criteria, encrypted IP, cache, and detail modes. It does not describe the exact output structure or explicitly route to simulation alternatives, but those are modest gaps given the rich parameter schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 11 parameters in detail. The description mentions cache, detail:'full', and encrypted sources, but these largely restate schema content rather than adding new parameter-level meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '只编译' (compile only), maps Verilog/SV to vlog and VHDL to vcom, and specifies the purpose as syntax/early checks. It also distinguishes itself from a simulation run by explicitly saying '不运行 vsim', which separates it from sibling fpga_msim_sim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames when to use the tool: compile-only before simulation, for syntax/early checking, with encrypted-IP handling and cache behavior. It does not explicitly name a sibling alternative or state 'use fpga_msim_sim instead', so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_msim_doModelSim 通用 do 脚本直通 (vsim -c)A
对 vsim -c 跑任意 do/Tcl,覆盖长尾:coverage(coverage save/report)、force/examine、add wave、UVM(+UVM_TESTNAME)、WLF 分析、自定义 run 控制等。强制 headless(-c)+末尾自动 quit -f(防挂)。纯仿真脚本自由跑;含可触达宿主的命令(Tcl exec / file delete|rename|copy|mkdir / open 写)需 confirm:true(仿 fpga_cdt 写器件护栏)。可给 top 让工具 vsim .,或在脚本内自行 vsim/vlog/vcom。
| Name | Required | Description | Default |
|---|---|---|---|
| lib | No | 库名,默认 work(仅 top 给定时用) | |
| top | No | 可选:给定则 vsim <lib>.<top>;省略则脚本需自行 vsim | |
| host | No | 远程执行设备 id(hosts.<id>.modelsim.home;省略=本机)。远程时把 workdir 顶层源文件浅推到该设备临时目录后跑 vsim -do(do 宜自包含/引用已 stage 的文件)。 | |
| detail | No | 返回粒度,默认 summary | |
| confirm | No | 脚本含可触达宿主的命令(exec/文件写)时必须 true;纯仿真脚本无需 | |
| workdir | Yes | 工作目录绝对路径(cwd;通常含已编译的库或先用 fpga_msim_compile) | |
| commands | No | do 命令(每行一条);与 doScript 二选一 | |
| doScript | No | 完整 do/Tcl 脚本(与 commands 二选一) | |
| vsimArgs | No | 追加给 vsim 的参数,如 -coverage、-gG=1、+UVM_TESTNAME=test | |
| timeoutSec | No | 超时秒数,默认 300 |
TDQS
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 clearly discloses forced headless mode, automatic quit -f to prevent hangs, the confirm guard for host-reaching commands, remote staging behavior, and the top-vs-script-driven vsim modes. This is strong transparency for an arbitrary-script execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but purposeful, front-loading the purpose and then grouping execution safety and invocation modes. Parentheticals make it a bit packed, but every clause contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no output schema, and many siblings, the description covers core invocation modes, safety, and remote behavior well. It could go further on return granularity and failure behavior, but it is sufficient for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds operational meaning for confirm, the top/lib relationship, remote host staging, and vsimArgs examples. It does not define summary vs full, but that is minor given the rich schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action: run arbitrary do/Tcl scripts through vsim -c, with concrete examples of covered use cases. The '通用/长尾' framing distinguishes it from more specialized sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use the tool: long-tail do/Tcl workflows covering coverage, UVM, WLF, force/examine, and custom run control. It also specifies when confirm:true is required. It does not explicitly name sibling alternatives like fpga_msim_sim or fpga_msim_compile, but the niche is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_msim_doc_searchModelSim 文档/命令检索A
检索 ModelSim 命令参考(来自 docs/cmd_help/.txt 的结构化语料:command/description/arguments)+ 手册 PDF 注册表(docs/pdfdocs/.pdf,返回路径供宿主直接 Read)。command=精确命令(vsim/vlog/coverage/run/examine/force/vcd...)返回 description+arguments;query=关键词召回;kind=all/command/manual;不传 query 返回汇总(命令数+手册清单)。纯关键词、零额外成本。命令的完整 syntax 用 fpga_msim_exe -help 拿。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 检索范围,默认 all | |
| limit | No | query 返回上限,默认 10 | |
| query | No | 关键词召回,如 'coverage save'/'force signal'/'dump vcd'/'breakpoint' | |
| command | No | 精确命令名,如 vsim/vlog/coverage/run/examine/force/vcd |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it states 'pure keyword, zero extra cost' (no side effects/cheap), explains that PDFs return paths for the host to Read directly, and defines the distinct output shapes for command, query, and no-query calls. It does not discuss failure/empty-result behavior, but for a read-only search tool the disclosed traits are strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler. The core function is front-loaded, parameter behaviors are compressed into one sentence, and the final clause about full syntax via fpga_msim_exe is a self-contained routing note. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter search tool with no output schema and no annotations, the description covers purpose, data sources, per-mode outputs, cost, and the sibling tool for full syntax. Minor gaps remain around the exact JSON shape of result lists and error cases, but nothing an agent needs to choose and invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds interaction semantics the schema lacks: command returns description+arguments, query triggers keyword recall, kind scopes the search, limit applies to query results, and omitting query returns a summary. This is meaningfully beyond the parameter names and examples in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: it searches the ModelSim command reference (structured corpus from docs/cmd_help/*.txt) plus the manual PDF registry (docs/pdfdocs/*.pdf). This clearly distinguishes it from siblings like fpga_msim_exe (execution), fpga_msim_sim (simulation), and fpga_doc_search (general docs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It maps each invocation mode to its outcome (command=exact lookup, query=keyword recall, kind=all/command/manual, no-query=summary), and explicitly routes the need for full command syntax to the sibling tool fpga_msim_exe <tool> -help. This is explicit when-to-use and when-to-use-alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_msim_exeModelSim bin 工具直通 (受护栏)A
在 ModelSim bin 目录跑库/覆盖率/波形/工具类 exe(vlib/vmap/vdir/vcover/wlf2vcd/vcd2wlf/vgencomp/vmake/vopt/sccom)并回提取后的输出。任意 bin exe 都可用 -help/-version 探测。编译/仿真(vlog/vcom/vsim)有专用工具(fpga_msim_compile/sim/do),不在此列。
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | 工作目录绝对路径,默认 bin 目录(本机) | |
| exe | Yes | bin 下的 exe 名(可省略 .exe),如 vcover / wlf2vcd / vdir | |
| args | No | 命令行参数;用 ['-help'] 探测用法 | |
| host | No | 远程执行设备 id(hosts.<id>.modelsim.home;省略=本机)。远程时在该设备 bin 目录跑该 exe。 | |
| detail | No | 返回粒度,默认 summary | |
| timeoutSec | No | 超时秒数,默认 120 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It does disclose that output is extracted and that any bin exe can be probed with -help/-version, and the title hints at guardrails. However, it does not explain side effects (e.g., vlib/vmap may mutate libraries, vcover may write coverage data) or what '受护栏' actually enforces, leaving meaningful behavioral ambiguity for an execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense, front-loaded sentences with concrete exe examples and an explicit exclusion. Every sentence adds value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a passthrough execution tool, the description covers scope, exclusions, probing strategy, and output extraction. With no output schema, it could more explicitly describe the returned structure beyond '提取后的输出', but the detail enum (summary/full) partially addresses granularity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 six parameters. The description adds useful examples and probing guidance but does not need to compensate for parameter gaps; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: run utility exes (vlib/vmap/vdir/vcover/wlf2vcd/etc.) in the ModelSim bin directory and return extracted output. The description explicitly distinguishes this from compile/sim tools by naming fpga_msim_compile/sim/do as dedicated alternatives, so an agent can tell it apart from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: library/coverage/waveform/tool exes belong here, while vlog/vcom/vsim do not and have dedicated tools. It also mentions probing any exe with -help/-version, which is actionable context for exploring unknown utilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_msim_simModelSim 仿真 (vlib+vlog/vcom+vsim -c)A
用 ModelSim 头less 编译(Verilog/SV→vlog,VHDL→vcom)并运行(vsim -c -do)一个设计(含 testbench)。不信退出码:以 transcript 的 ** Error/Fatal 与 'Errors: N' 判定 ok($fatal 时 vsim 仍退 0)。可出 VCD 供 fpga_assert 判定;可选 coverage 返回结构化覆盖率(分支/语句/条件/翻转 %)。默认紧凑摘要 + detail:'full' + 按输入 hash 缓存。VHDL 是相对 fpga_sim(iverilog) 的增量能力。
| Name | Required | Description | Default |
|---|---|---|---|
| lib | No | 工作库名,默认 work | |
| top | Yes | 顶层模块/实体名(通常是零端口 testbench) | |
| uvm | No | 是否按 UVM 测试编译/运行,默认 false。开启=用预编译 mtiUvm 库(无需 gcc/DPI):编译加 -sv +incdir+<uvm src> -L mtiUvm,vsim 加 -L mtiUvm;解析 UVM Report Summary,**UVM_ERROR/UVM_FATAL>0 即 ok=false**(ModelSim 退出码/Errors 仍可能为 0,反幻觉)。返回 uvm{info,warning,error,fatal}。 | |
| vcd | No | 是否生成 VCD(经 do-file: vcd file + vcd add -r /*),默认 false。开启时自动加 -voptargs=+acc 保留信号可见性(否则 vopt 优化掉信号,VCD 为空)。 | |
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts,需配 hosts.<id>.modelsim.home;省略=本机)。远程时源文件推到该设备编译+仿真,产物(VCD/coverage ucdb)拉回本地镜像供 fpga_assert。 | |
| wave | No | 仿真后把 VCD 渲染成波形图(SVG+HTML),默认 false。**自动启用 VCD**(含 +acc 保信号);产出见 artifacts.waveSvg/waveHtml。一步出图给用户看,免再调 fpga_wave。 | |
| cache | No | 源文件+选项未变时复用上次摘要,默认 true;false 强制重跑 | |
| detail | No | 返回粒度,默认 summary(省 token);full 含完整 transcript | |
| runArg | No | vsim run 参数,默认 '-all'(可为 '1us' 等定长) | |
| libDirs | No | vlog 库搜索目录(相对 workdir 或绝对),经 -y +libext 让 vlog 按需自动解析设计实例化到的厂商原语仿真模型(如 Pango arch/.../verilog/fm_lib/simulation 或 gtp_lib 所在目录),无需手列每个 GTP_*.v。 | |
| sources | No | 相对 workdir 或绝对的源文件;省略=workdir 下所有 .v/.sv/.vhd(排除 . 与 _ 前缀) | |
| uvmTest | No | UVM 测试名,传给 +UVM_TESTNAME=<名>(顶层需 run_test())。省略则由 TB 的 run_test("...") 决定。 | |
| vcdPath | No | VCD 输出路径(相对 workdir 或绝对);vcd=true 时默认 ._fpga_msim/sim.vcd | |
| workdir | Yes | 工作目录绝对路径(HDL 源所在;编译产物隔离在 ._fpga_msim/) | |
| coverage | No | 是否收集代码覆盖率(分支/条件/语句/翻转),默认 false。开启=编译加 -cover bcst + vsim -coverage -onfinish stop + 自动 +cover;run 后 coverage report/save,返回结构化 coverage{total,metrics{branch/statement/condition/toggle:{bins,hits,misses,pct}}} + artifacts.coverageUcdb。 | |
| fileList | No | vlog 文件清单(.f)路径(相对 workdir 或绝对),经 -F 读入(清单内相对路径相对清单所在目录解析)。用于含 IP 的仿真:直接喂 PDS 生成的/随 PDS 的 IP 仿真清单(如 PCIe filelist_pciegen*_gtp.f)。加密 IP(.vp/.svp,IEEE-1735 含 Mentor key)由 vlog 原生解密,无需走 PDS 仿真渠道。 | |
| vcomArgs | No | 追加给 vcom 的参数,如 -2008 | |
| vlogArgs | No | 追加给 vlog 的参数,如 +define+X、-timescale 1ns/1ps | |
| vsimArgs | No | 追加给 vsim 的参数,如 -gG=1、+UVM_TESTNAME=... | |
| waveOpen | No | wave 出图后用默认浏览器弹给用户看(本机),默认 false | |
| assertions | No | 一步内做声明式断言(同 fpga_assert):log_*/vcd_*。**任一 vcd_* 自动启用 VCD**;断言失败则整体 ok=false(断言即规格)。结果在 assert{passed,failed,results}。免再单独调 fpga_assert。 | |
| timeoutSec | No | 超时秒数,默认 120 | |
| doBeforeRun | No | run 前注入的额外 Tcl(如 force/add wave/coverage 配置) | |
| waveSignals | No | wave 只画这些信号(省略=全部,上限 40) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does it well: it warns that exit codes are unreliable and that parsing transcript ** Error/Fatal and 'Errors: N' is the authoritative pass/fail signal, including the surprising $fatal-exits-0 case. It also discloses headless execution, VCD generation behavior, structured coverage returns, and input-hash caching—valuable non-obvious 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core compile-and-run action, then adds the most decision-relevant quirks (unreliable exit codes, VCD/coverage, caching, VHDL differentiator). Every sentence contributes non-obvious value and does not waste tokens repeating schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 24-parameter tool with no output schema, the description covers the critical execution model, pass/fail determination, cache, VCD/coverage capabilities, and VHDL positioning. However, it does not describe the default summary output structure or the full set of returned artifacts, leaving some ambiguity about what the agent should expect in the response beyond the schema-covered param details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 24 parameters in detail; the tool description adds little parameter-level meaning beyond reinforcing cross-cutting behaviors like detail:'full' and input-hash caching. This meets the baseline but does not meaningfully elevate parameter understanding beyond the rich schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action—headless ModelSim compile (vlog/vcom) and run (vsim -c -do)—with a clear resource (a design including testbench). It also distinguishes the tool from fpga_sim(iverilog) by calling VHDL support the incremental capability, helping an agent tell it apart from a closely related sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it names fpga_sim(iverilog) as the alternative and notes that VHDL support is the differentiator, implying this tool is preferred for VHDL or ModelSim-specific flows. It also mentions VCD output as usable by fpga_assert, giving a downstream integration hint. However, it does not explicitly state when not to use this tool versus the other fpga_msim_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_msim_view打开 ModelSim 波形 GUI (本机交互查看)A
在本机打开 ModelSim 图形界面查看波形(交互式缩放/测量/层级展开)——给用户做深度查看的渠道。输入 VCD(自动 vcd2wlf 转 WLF)或 WLF;signals 可预选 add wave,省略则 add wave -r /。GUI 进程脱离 MCP 独立运行(detached),工具立即返回。注:开的是*本机 GUI(远程仿真的 VCD 已拉回本地,直接对本地路径用此工具);要静态图像/弹浏览器用 fpga_wave。launch:false 只做转换+给出命令不真正弹窗。
| Name | Required | Description | Default |
|---|---|---|---|
| radix | No | 总线显示进制,默认 hex | |
| groups | No | 显式信号分组 [{name,signals[]}],每组一个 add wave -group;省略 signals/groups 时按 VCD 层级 scope 自动分组 | |
| launch | No | 是否真正弹出 GUI,默认 true;false=只转换+返回命令/do(用于脚本/测试) | |
| signals | No | 只看这些信号(名或 /路径);省略=按层级自动分组全加 | |
| vcdPath | No | VCD 绝对路径(自动 vcd2wlf 转 WLF 再 view;与 wlfPath 二选一) | |
| wlfPath | No | WLF 绝对路径(直接 view) | |
| timeoutSec | No | vcd2wlf 转换超时秒数,默认 120 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers: the GUI process runs detached from MCP with immediate return, VCD is auto-converted via vcd2wlf to WLF, omitted signals default to add wave -r /*, omitted groups auto-group by VCD hierarchy scope, and launch:false only converts and returns a command. This is rich behavioral context far beyond what the schema alone provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense, not bloated, and front-loaded with the core purpose followed by behavioral specifics. Every sentence earns its place; the sibling-routing and launch:false notes are placed at the end where they serve as clarifications rather than competing with the main statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no annotations and no output schema, the description covers purpose, inputs, defaults, runtime behavior, local/remote nuance, and sibling routing. Minor gaps remain: the return value in default launch:true mode is not described, and behavior when both vcdPath and wlfPath are supplied (schema says '二选一' but no validation behavior is stated) is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, setting a baseline of 3. The description adds value above the schema by explaining the signals default behavior (add wave -r /*), the launch:false semantics (convert-only, no GUI), and the VCD→WLF pipeline that links vcdPath and wlfPath. It doesn't elaborate on radix or timeoutSec, but the schema already documents those fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (open ModelSim GUI to view waveforms interactively with zoom/measure/hierarchy expansion) and explicitly differentiates from the sibling fpga_wave, which serves static images/browser viewing. An agent can tell exactly what this tool does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative (fpga_wave for static images/browser) and the condition that selects it, states the local-path context (VCD already pulled back locally), and clarifies that launch:false is for scripting/testing. No ambiguity about when to invoke this tool remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_pds_batchPDS 独立工程变体批量运行(最多 2-way)A
并行运行多个已准备好的独立 PDS project clone,并汇总每个 variant 的 timing/errors/artifacts。安全门:每个 pdsPath 必须位于唯一且互不嵌套的项目目录,prj_work_dir/prj_impl_dir 不得外置;同一 .pds 或共享 prj_tasks 会在启动前拒绝。默认且最高 2-way(P&R 内存密集)。任一 variant 失败则顶层 ok=false,但保留全部逐项结果。
| Name | Required | Description | Default |
|---|---|---|---|
| cache | No | 每个 variant 使用输入 hash 缓存,默认 true | |
| variants | Yes | 独立 PDS project clone 列表;目录必须唯一且互不嵌套 | |
| runTarget | No | 批次默认 target,默认 gen_bit_stream | |
| pdsVersion | No | 批次默认 PDS 版本/标签 | |
| timeoutSec | No | 每个 variant 默认超时秒数,默认 900 | |
| maxParallel | No | 并发数,默认/上限 2 | |
| backupOldBuildDirs | No | 每个独立目录构建前备份旧输出,默认 true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and covers important traits: pre-launch safety validation, the 2-way concurrency cap with a memory rationale, and the failure semantics (top-level ok=false while preserving per-variant results). It is transparent, though it does not enumerate all side effects (e.g., backup behavior) that the schema mentions in parameter descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: action first, then safety gates, concurrency limit, and failure behavior. Every sentence carries distinct high-value information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch tool with rich schema but no output schema and no annotations, the description covers the essential operational context: prerequisites, validation rules, concurrency constraints, and result/failure semantics. That is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining valid variant structure: pdsPath directories must be unique and non-nested, shared prj_tasks cause rejection, and P&R memory intensity motivates maxParallel=2. These invariants help the agent construct valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: run multiple prepared independent PDS project clones in parallel and summarize timing/errors/artifacts per variant. This clearly distinguishes it from single-run siblings like fpga_pds_run and fpga_pds_compile via the batch/multiple-clone scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use when there are multiple independent, pre-prepared PDS clones, and it specifies preconditions such as unique non-nested pdsPath directories and no shared prj_tasks. It does not explicitly name alternative tools or state when not to use this tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_pds_compilePDS Headless 构建 (gen_bit_stream 预设)A
fpga_pds_run 的出比特流预设:默认 runTarget=gen_bit_stream,跑全流程产 .sbit。其余行为同 fpga_pds_run(紧凑摘要 + detail/cache + effsoftecrypt 自检)。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts;省略=本机)。远程时自动 stage 工程→远端 pds_shell→拉回产物。 | |
| cache | No | 源文件+target 未变时复用上次构建摘要,默认 true;false 强制重编 | |
| detail | No | 返回粒度,默认 summary(紧凑、省 token);full 含完整日志与 reports | |
| pdsPath | Yes | .pds 工程文件绝对路径 | |
| runTarget | No | PDS -run 目标,默认 gen_bit_stream | |
| pdsVersion | No | 可选 PDS 版本/标签,如 2022.2 或 2025.2;省略按工程器件选择 | |
| timeoutSec | No | 超时秒数,默认 900 | |
| backupOldBuildDirs | No | 构建前备份旧 PDS 输出目录,默认 true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it delivers: it discloses the full-pipeline execution, the .sbit output, compact summary format, detail/cache handling, and the effsoftecrypt self-check. It defers remaining behavior to fpga_pds_run, which is an acceptable pattern only if that sibling is equally well documented; side effects like build-directory handling are left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the identity statement front-loaded before behavioral details; no filler. The parenthetical enumeration is dense, but each item (compact summary, detail/cache, effsoftecrypt self-check) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter build wrapper with no output schema and no annotations, the description covers the critical questions: tool identity, preset target, expected artifact, and inherited behaviors. Its main gap is relying on fpga_pds_run's description for the rest — an agent without access to that sibling would miss return-value and artifact-location details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value: it frames runTarget as deliberately locked to a preset rather than merely defaulted, and links that parameter to the .sbit outcome. This tells an agent that overriding runTarget would defeat the tool's purpose — meaning beyond the schema's plain default-value note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it is the bitstream-output preset of fpga_pds_run that runs the full PDS flow and produces a .sbit artifact. It distinguishes itself from its parent sibling immediately by pinning the one differing aspect (default runTarget=gen_bit_stream).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names fpga_pds_run as the parent and frames this tool as the preset that fixes runTarget=gen_bit_stream, so an agent can infer when to pick it over fpga_pds_run (want the default bitstream flow) and when not to (need a different run target). The guidance is clear but implicit; it never spells out an explicit when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_pds_create_blink_project创建 PDS LED Blink 工程A
创建面向真实板卡的 LED blink PDS 工程,生成 RTL、FDC 和 .pds。器件无关:必须提供完整目标器件 family/device/speedgrade/package(由用户/Target Profile 给定,工具不内置默认)。
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | 顶层模块名,默认 top | |
| name | No | 工程名/flow id,默认 fab_blink | |
| force | No | 目标目录非空时是否删除重建,默认 false | |
| vccio | No | IO VCCIO,默认 3.3 | |
| clkPin | Yes | 时钟引脚,例如 D18 | |
| device | Yes | PDS device(必填)。目标板物理信息,由用户/Target Profile 提供,工具不替你猜。 | |
| family | Yes | PDS family(必填)。目标板物理信息,来自用户/Target Profile,工具不内置默认。 | |
| ledPins | Yes | LED 引脚数组,例如 [A20,C19,C18,E18,A17] | |
| package | Yes | PDS package 器件封装(必填)。必须是该板真实封装,工具不替你猜(猜错会与真实器件错配,构建失败)。 | |
| clkFreqMhz | No | 板载时钟频率(MHz),生成 create_clock 的目标频率,默认 50;让时序分析针对真实频率(否则 PDS 按标称默认分析,timing.met 空判) | |
| counterBit | No | LED 分频起始位,默认 24 | |
| ioStandard | No | IO standard,默认 LVCMOS33 | |
| projectDir | Yes | 目标工程目录绝对路径;目录不存在则创建 | |
| speedgrade | Yes | PDS speedgrade(必填)。目标板物理信息,来自用户/Target Profile。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It usefully discloses the side-effect scope (generates RTL/FDC/.pds) and, importantly, that the tool refuses to guess device parameters ('工具不内置默认', '工具不替你猜'). However, it does not disclose overwrite behavior for an existing project directory (only hinted at by the force parameter) or whether the tool invokes PDS tooling beyond file generation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler: the first front-loads the action and deliverables, the second delivers the critical invocation constraint. Every clause earns its place, and the most decision-relevant fact (no built-in device defaults) is placed prominently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema's deep 100% parameter coverage (directory creation, force deletion, timing implications) compensates for most parametric gaps, and the description covers purpose plus the key no-defaults constraint. But with no output schema and no annotations, the agent is left uncertain about the success return value, whether the PDS flow is actually executed, and error behavior when required device info is absent — notable gaps for a 14-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 14 parameters with rich detail (e.g., clkFreqMhz's effect on create_clock and timing.met, projectDir's auto-create behavior, package mismatch leading to build failure). The description adds only the meta-rule that the four device parameters must be supplied as a complete set from user/Target Profile, which marginally reinforces but does not go beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '创建面向真实板卡的 LED blink PDS 工程' and enumerates the concrete deliverables (RTL、FDC 和 .pds). The '真实板卡' (real board) qualifier plus the LED-blink scope clearly differentiate it from the generic sibling fpga_pds_create_project, while the device-agnostic note ('工具不内置默认') sets it apart from flows that assume device defaults.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context — it is for real-board LED blink project creation and explicitly preconditions that complete family/device/speedgrade/package must come from the user or Target Profile. However, it never names alternatives or states when-not-to-use; with ~45 siblings including fpga_pds_create_project, the agent must infer the boundary between generic project creation and blink-specific creation rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_pds_create_project创建最小 PDS 工程A
创建一个可供 pds_shell 尝试编译的最小 .pds 工程(RTL/约束/.pds)。器件无关:目标 family/device/speedgrade/package 是板级物理信息,由用户/Target Profile 给定,工具不内置默认/不猜。推荐传 board:(config 的 boards 里一套完整 target,含引脚→自动生成 FDC);或把 4 个字段全显式给。缺则报错点名所缺。
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | 顶层模块名,默认 top | |
| name | No | 工程名/生成的 .pds 文件名,默认 fpga_mcp_demo | |
| board | No | Target Profile 名(config 的 boards[<name>]),一次提供完整 family/device/package/speedgrade(+pins→生成 FDC)。fpga_env 列出已配置 board;未配则向用户询问。 | |
| force | No | 目标目录非空时是否删除重建,默认 false | |
| device | No | PDS device。传了 board 可省;否则必填。 | |
| family | No | PDS family。传了 board 可省(由 profile 提供);否则必填。物理信息,工具不猜。 | |
| package | No | PDS package 器件封装。传了 board 可省;否则必填(真实封装,工具不猜)。 | |
| pinNames | No | 使用 board 完整 Target Profile 时,本设计实际存在的顶层端口子集;物理 loc/freq/iostd 仍全部取 profile。省略=使用 profile 全部 pins。 | |
| projectDir | Yes | 目标工程目录绝对路径;目录不存在则创建 | |
| speedgrade | No | PDS speedgrade。传了 board 可省;否则必填。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool does not guess device/family/package/speedgrade, that board provides pins and generates FDC, and that force deletes/recreates directories. It doesn't explicitly mention side effects beyond force, but the key behavioral traits (no guessing, error behavior, FDC generation) are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and information-dense, with the core purpose front-loaded. The parenthetical about board recommendation is slightly dense but earns its place by conveying the key usage decision. No wasted words, but the structure could be slightly cleaner with explicit separation of the two invocation modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no output schema, the description covers the essential decision logic (board vs explicit fields), the error behavior, and the force semantics. It doesn't describe the generated project structure or what the return value looks like, but given the complexity and the rich schema, this is adequately complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds meaningful semantics: it explains the relationship between board and the four device fields, clarifies that pinNames is a subset of the design's actual top ports, and specifies that physical loc/freq/iostd all come from the profile. This is value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a minimal .pds project for pds_shell compilation, names the specific resources (RTL/constraints/.pds), and explicitly contrasts it with board-physical information. It distinguishes itself from siblings like fpga_pds_create_blink_project by emphasizing 'minimal' project creation and the board/profile mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends passing board:<name> and explains the alternative of providing all four fields, including what happens if fields are missing ('缺则报错点名所缺'). It also references fpga_env for listing configured boards, giving clear when-to-use vs alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_pds_register_ficILA: 把 .fic 注册到 .pds(Fabric-Inserter widget)A
把已生成的 .fic 写入 .pds 工程的 Fabric-Inserter widget(<action name='fic'>/wgt_my_fic_src),让接下来的 fpga_pds_run gen_bit_stream 走 inserter→生成 instrumented bitstream。自动备份原 .pds 为 .bak_;支持 PDS 2025.2 的 XML 形态与早期 sexpr 形态。
| Name | Required | Description | Default |
|---|---|---|---|
| ficPath | Yes | 已生成的 .fic 绝对路径(建议位于工程目录之下,工具自动转相对路径写入 .pds) | |
| pdsPath | Yes | .pds 工程文件绝对路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It discloses that the tool mutates the .pds file, automatically backs up the original with `.bak_<ts>`, and supports both PDS 2025.2 XML and older sexpr forms. This is substantial useful behavior beyond a bare 'register fic' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one dense, front-loaded sentence: it states the action, the effect on the next run, the backup behavior, and format compatibility. No filler or redundant wording appears.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool with no annotations and no output schema, this description is complete: it explains the input relationship, the target widget, the downstream consequence, the safety backup, and supported file formats. An agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters fully with descriptions of absolute paths and the automatic relative-path conversion for ficPath. The description reinforces the .fic/.pds relationship but adds little parameter-level detail beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: writing an already-generated .fic file into the .pds project's Fabric-Inserter widget, and even names the exact widget markers (`<action name='fic'>`/`wgt_my_fic_src`). It clearly differs from sibling tools like fpga_ila_generate_fic by emphasizing that the .fic is already generated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear workflow context: use it after generating a .fic and before running `fpga_pds_run gen_bit_stream`, so the inserter path is taken. It does not explicitly say when not to use it or name an alternative tool, but the intended timing is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_pds_reportsPDS 报告解析A
解析 PDS 构建日志、时序、资源与 bitstream 输出;不运行 PDS。
| Name | Required | Description | Default |
|---|---|---|---|
| log | No | 额外日志文本 | |
| top | No | 可选顶层名,仅用于回传标注 | |
| logPath | No | 额外日志文件绝对路径 | |
| pdsPath | No | .pds 工程文件绝对路径 | |
| buildDir | No | PDS 构建目录;省略时取 pdsPath 所在目录 |
TDQS
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 does disclose the important behavior that PDS is not executed, which is valuable for a report-parsing tool. However, it does not mention other behavioral aspects such as whether it only reads files, requires existing build outputs, or has side effects like writing extracted artifacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence that conveys scope and the key exclusion. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is enough for basic selection and understanding of purpose, especially with the non-execution caveat. However, with no output schema and no annotations, it omits the return format and does not clarify how the five optional parameters should be combined to produce a parse, leaving the agent with some ambiguity about invocation expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all five parameters already documented in the input schema. The description does not add parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource set: 解析 (parse) PDS build logs, timing, resource, and bitstream output. It also adds an explicit negative boundary, '不运行 PDS', which clearly distinguishes it from sibling execution tools like fpga_pds_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used to inspect PDS outputs rather than to launch builds, and explicitly warns it does not run PDS. However, it does not name alternatives or state conditions like 'use this when you already have build artifacts and need parsed reports.' The usage context is clear but not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_pds_runPDS Headless 运行 (任意 -run 目标)A
用 pds_shell.exe -project <x.pds> -run 运行任意流程阶段。target ∈ {compile, synthesize, dev_map, pnr, report_timing, report_power, gen_bit_stream, gen_netlist}(注意 dev_map/pnr,非 device_map/place_route;早期目标如 dev_map 可快速拿资源不跑 P&R)。不信退出码,解析 E:/bitstream success line + effsoftecrypt 自检。默认紧凑摘要 + detail:'full' 兜底 + 按输入 hash 缓存。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts;省略=本机)。远程时自动 stage 工程→远端 pds_shell→拉回产物。 | |
| cache | No | 源文件+target 未变时复用上次摘要,默认 true;false 强制重运行 | |
| detail | No | 返回粒度,默认 summary(紧凑、省 token);full 含完整日志与 reports | |
| pdsPath | Yes | .pds 工程文件绝对路径 | |
| runTarget | Yes | PDS -run 目标,如 compile/synthesize/dev_map/pnr/report_timing/report_power/gen_bit_stream/gen_netlist | |
| pdsVersion | No | 可选 PDS 版本/标签,如 2022.2 或 2025.2;省略按工程器件选择 | |
| timeoutSec | No | 超时秒数,默认 900 | |
| backupOldBuildDirs | No | 构建前备份旧 PDS 输出目录,默认 true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and covers the important behaviors: the exact command shape, the instruction not to trust exit codes, parsing of the E:/bitstream success line plus effsoftecrypt self-check, default compact summary, detail fallback, and input-hash caching. This gives an agent a reliable model of what happens when invoked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause contributes: command, target list, naming caveat, success detection, output default, and caching. It is front-loaded with the core invocation and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, but the description explains success detection and the summary/full return granularity, so an agent knows what to expect. It could be more explicit about the shape of the compact summary and side effects like output-dir backup, but the core calling context is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by enumerating the valid runTarget values and explicitly correcting the dev_map/pnr naming (not device_map/place_route). It also clarifies the cache and detail behaviors, going beyond the plain schema entries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('run any flow stage via pds_shell.exe -project ... -run ...') and enumerates the accepted targets, making the resource and scope explicit. The title and target list distinguish it from sibling compile/report/batch tools even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context by stating that any -run target can be invoked and specifically notes that early targets such as dev_map can produce resource utilization without running P&R. It does not explicitly name alternatives or exclusion conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_pds_scanPDS JTAG 扫链A
启动/复用 cdt_js,并用 cdt_cfg 扫 JTAG 链、读取 IDCODE。只读动作。默认本机;传 host 则在该远程设备上扫(execution-device layer)。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 远程执行设备 id(pango-mcp.config.json 的 hosts;省略=本机)。远程时在该设备上起 cdt_js + 跑 cdt_cfg 扫链。 | |
| port | No | cdt_js 端口,默认来自配置或 65420(远程默认 65425) | |
| maxDevices | No | 最多读取多少个 JTAG 设备 IDCODE;默认 1(单板/单 FPGA),多器件链才显式加大 | |
| pdsVersion | No | 可选 PDS 版本/标签,如 2022.2 或 2025.2 | |
| timeoutSec | No | 超时秒数,默认 30 | |
| retryDelayMs | No | retryOnTransient 的重试间隔毫秒,默认 1500 | |
| retryOnTransient | No | 遇到 CDT scan 超时/未解析到设备时是否自动短重试一次,默认 false(仅本机) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly states this is a read-only action, which is important safety information, and it discloses the side-effecting mechanism of starting/reusing cdt_js. It does not describe process cleanup or authentication, but the read-only and operational behavior is clearly conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no filler. The action is front-loaded, the read-only nature is stated early, and the local/remote distinction is summarized efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 7 optional parameters, the schema fully explains the parameters and the description covers operational context, including default behavior and remote execution. There is no output schema, but the phrase '读取 IDCODE' makes the expected return content clear. Missing details like error/retry behavior are partially covered by parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 some value by explaining the host parameter's local/remote semantics and the execution-device layer concept, but it does not add significant meaning for the other parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: start/reuse cdt_js and use cdt_cfg to scan the JTAG chain and read IDCODEs. It also states the scope (local vs remote via host). It does not explicitly differentiate from the sibling fpga_jtag_scan, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: default is local, and passing host executes on a remote device through the execution-device layer. However, it gives no guidance about when to prefer this tool over a sibling like fpga_jtag_scan, and it does not mention exclusions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_primitive_lookupLogos2 原语查询A
查 Logos2 原语库(gtp_lib.v, 153 个 GTP_* 原语):name=精确查端口/参数/最小例化模板;category=列某类(clock_pll/ff_latch/lut/mem/io_buffer/serdes_ddr/mipi/pcie/analog/config_misc);query=关键词召回;都不传=返回分类汇总。结构化、省 token。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | 检索方式,默认 auto(有 embedding 则语义,否则关键词) | |
| name | No | 精确原语名,如 GTP_GPLL / GTP_LUT4 / GTP_DFF_RE | |
| limit | No | query/建议返回上限,默认 10 | |
| query | No | 关键词/语义召回,如 'pll' / 'phase locked loop' / 'fifo' | |
| category | No | 按类列出,如 clock_pll / mem / io_buffer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and meets it by disclosing output content per mode: ports/parameters/instantiation template, category list, keyword recall, and summary. It signals structured output; minor gaps are unspecified precedence if multiple selectors are combined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the resource and modes, and uses semicolon separators so the mapping is immediately parseable. No repeated or redundant phrasing appears; even '结构化、省 token' adds useful output-format and efficiency context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, no-output-schema, no-annotation lookup, the description covers the main behaviors, all category values, and the no-argument fallback; the schema covers parameter-level details. It is complete enough for correct invocation, though combination precedence such as name+query is not spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds real meaning: it specifies what name returns, enumerates the full category list, and defines the no-argument fallback. It does not restate the mode parameter, which is already documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific action '查 Logos2 原语库' and pins the resource to gtp_lib.v and 153 GTP_* primitives. It clearly distinguishes itself from sibling tools like fpga_ip_lookup or fpga_doc_search by scoping to primitive-level port/parameter/template lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance per invocation style: name for exact lookup, category for class listing, query for keyword recall, and no args for category summary. It does not explicitly contrast with sibling tools, but the narrow resource scope and mode-specific conditions provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_project_infoPDS 工程信息解析B
解析 .pds 工程文件,返回目标器件、顶层源文件、源文件列表、约束文件与括号平衡检查。
| Name | Required | Description | Default |
|---|---|---|---|
| pdsPath | Yes | .pds 工程文件绝对路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the behavioral burden; it does state the main action (parsing .pds) and an unexpected behavioral detail (bracket balance check). However, it does not disclose whether the operation is strictly read-only, what happens on invalid or missing project files, or how errors surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the action and then lists return payloads in order. No filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description reasonably enumerates all returned information categories. It could be more explicit about the structure or representation of the bracket-balance result and error behavior, but the essential call context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the only parameter, pdsPath, is already described as the absolute path of the .pds project file. The description reinforces that this is a project file path but adds no new format, encoding, or edge-case guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear verb ('解析' / parse) and resource ('.pds' project file) and enumerates exact outputs: target device, top-level source, source list, constraints, and bracket balance check. It does not explicitly contrast with siblings like fpga_pds_scan or fpga_pds_reports, so it falls just short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool versus sibling PDS tools such as fpga_pds_scan, fpga_pds_run, or fpga_pds_compile. An agent must infer from the name and return fields that this is an inspection/parse step, with no stated exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_server_cleanupMCP server 实例审计与孤儿清理A
审计本机 pango-mcp stdio server 的 PID、父进程、年龄与私有内存;只把父进程已消失或父 PID 已复用的实例列为 orphan_candidate。默认只读;confirm:true 才终止经二次身份复核的孤儿。仍由客户端持有的实例永不跨任务强杀。
| Name | Required | Description | Default |
|---|---|---|---|
| pids | No | 可选候选 PID 白名单;未列入或不是 pango-mcp 孤儿的进程不会终止 | |
| confirm | No | 省略/false=只读审计;true=仅清理经二次复核的 orphan_candidate | |
| minAgeSec | No | 孤儿最小存活秒数,默认 60;避免父进程退出瞬间竞态 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden, and it delivers: read-only by default, termination only with confirm:true plus secondary identity verification, anti-race minAgeSec behavior, and a hard guarantee never to kill client-held instances across tasks. This is a model disclosure of a danger profile for a process-killing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the audit scope front-loaded, then orphan criteria, then the guarded destructive path and the safety guarantee. Every sentence earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, it thoroughly covers the safety-relevant contract: what is audited, what qualifies as an orphan, when termination happens, and when it never will. Minor gaps: the audit's return format is not described and the 'secondary identity verification' mechanism is left unexplained, but neither blocks safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the three params (pids whitelist, confirm gate, minAgeSec race guard) is already well documented in the schema. The description reinforces the confirm default and the orphan criterion that pids depends on, but adds little meaning beyond the schema — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource — auditing local pango-mcp stdio servers (PID, parent process, age, private memory) and conditionally cleaning orphans. The orphan_candidate criterion is precisely defined (parent gone or parent PID reused), and none of the 45 FPGA-focused siblings perform process or orphan management, so the tool is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states when the destructive path applies — only orphan_candidates with confirm:true after secondary identity verification — and when it does not (instances still held by clients are never force-killed). It doesn't name an alternative tool because no sibling performs this function, but it gives strong contextual guidance on the read-only default versus cleanup mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_simVerilog 仿真 (iverilog+vvp)A
用 iverilog 编译 + vvp 运行一个 Verilog/SystemVerilog 设计(含 testbench),返回日志与 ok 判定;可选注入 wrapper 生成 VCD。
| Name | Required | Description | Default |
|---|---|---|---|
| top | Yes | 顶层模块名,通常是零端口 testbench | |
| vcd | No | 是否注入 wrapper 生成 VCD,默认 false | |
| wave | No | 仿真后把 VCD 渲染成波形图(SVG+HTML),默认 false。开启自动启用 VCD;产出见 artifacts.waveSvg/waveHtml。一步出图,免再调 fpga_wave。 | |
| detail | No | 返回粒度,默认 summary(日志小则完整返回,超阈值则只回 tail);full 强制全文 | |
| sources | No | 相对 workdir 的源文件;省略=workdir 下所有 .v/.sv,排除 ._fpga_* | |
| vcdPath | No | VCD 输出路径;相对 workdir 或绝对路径。vcd=true 时默认 ._fpga_sim.vcd | |
| workdir | Yes | 工作目录绝对路径(.v/.sv 文件所在) | |
| waveOpen | No | wave 出图后用默认浏览器弹给用户看,默认 false | |
| timeoutSec | No | 超时秒数,默认 30 | |
| waveSignals | No | wave 只画这些信号(省略=全部,上限 40) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description and parameter schema carry the full burden. They disclose the core workflow (compile + run, return logs, ok verdict), default source selection excluding ._fpga_* files, log truncation behavior via the detail parameter, VCD generation, waveform rendering, and optional browser opening. This is more than a bare description, though it could still mention file side-effects or exact return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main description is a single concise sentence that front-loads the toolchain and essential action, with the optional VCD behavior attached without extra fluff. Every word carries meaning; no redundancy beyond an acceptable restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no output schema and no annotations, the definition covers the essential invocation surface: required workdir/top, source selection, VCD options, wave rendering artifacts, timeout, and log granularity. It explains return essentials (logs + ok) and the main artifacts, sufficient for an agent to invoke and interpret results, although a more explicit return structure would push it to 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The main description adds only a general note about optional VCD wrapper injection, which loosely maps to vcd/vcdPath, but it does not meaningfully go beyond the already detailed parameter descriptions for wave, detail, sources, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: uses iverilog to compile and vvp to run a Verilog/SystemVerilog design with testbench, returning logs and an ok determination. The title's 'iverilog+vvp' and the description's optional VCD injection clearly distinguish it from ModelSim-based siblings like fpga_msim_sim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description identifies the toolchain (iverilog/vvp) and the optional VCD injection, giving an agent clear context about what this tool is for. However, it never explicitly states when to prefer this over fpga_msim_sim or other simulation tools; the only alternative mentioned is fpga_wave, and that appears only indirectly in the wave parameter description ('免再调 fpga_wave'), not as main usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_vault验证资产知识库A
检索/读取/校验 knowledge-vault,并在资产被读取时写 trace asset_use;recall 只读扫描 trace 反查受影响会话,不自动改 tier/status。candidate 只由 fpga_assert 或 fpga_ila_flow 的客观绿结果写入。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | get/validate/recall 的知识条目 id | |
| tier | No | search tier 过滤 | |
| limit | No | search 最大返回数,默认 10 | |
| query | No | search 关键词;空值列出最近条目 | |
| action | Yes | search=检索,get=读取并记 asset_use,validate=校验 schema,recall=反查消费会话 | |
| status | No | search status 过滤;默认 active | |
| traceDir | No | recall 要递归扫描的 trace 目录 | |
| vaultDir | No | 可选 vault 根目录;省略使用仓库 knowledge-vault 或配置路径 | |
| tracePaths | No | recall 要扫描的 JSONL 文件/目录路径 | |
| includeRecalled | No | search 是否允许返回 recalled;默认 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
无注解,描述承担了行为披露责任。它明确披露读资产会写 trace、recall 只读且不自动改状态、candidate 的写入来源,这些是关键的副作用与约束;但未展开权限要求、validate 是否会写等细节。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
三句话包含了动作、副作用、只读边界和写入来源,信息密度高;但以分号连接成整段,结构略显紧凑,尚未达到 5 分。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
在 10 参数、无输出 schema、无注解的情况下,描述仍覆盖了选择与调用必需的关键差异:get 写 asset_use、recall 只读扫描、candidate 写入约束。返回格式未说明,但有 action 枚举和 schema 补足基本信息。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
输入 schema 对 10 个参数 100% 覆盖,且 action 各枚举的中文语义在 schema 中已给出,描述基本是复述而非新增参数级信息,因此维持 schema 高覆盖时的基线 3 分。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
描述以“检索/读取/校验”三个具体动词指向 knowledge-vault 资源,并明确 get/recall 的行为差异,资源与动作都清晰,足以与 fpga_doc_search 等兄弟工具区分。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
说明 get 会记录 asset_use、recall 只读扫描 trace 且不自动改 tier/status,并限定 candidate 仅由 fpga_assert 或 fpga_ila_flow 的客观绿结果写入。使用场景和边界清楚,但没有系统性地说明何时不使用本工具或选择其他兄弟工具。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fpga_wave仿真波形绘图 (VCD→SVG/HTML 图像)A
把 VCD(任意来源:fpga_sim/iverilog 或 fpga_msim_sim/ModelSim 的 artifacts.vcd)渲染成数字时序图。产出 .wave.svg + .wave.html 文件并返回路径;inlineSvg(默认 true)在结果里带完整 SVG 供能渲染的 AI 直接展示;open:true 用默认浏览器把波形弹给用户看。signals 选信号、maxSignals 控规模(默认 40)。需要交互式深查/缩放用 fpga_msim_view 打开 ModelSim GUI。
| Name | Required | Description | Default |
|---|---|---|---|
| open | No | 是否用默认浏览器弹出 HTML 给用户看,默认 false | |
| width | No | SVG 像素宽,默认 1100 | |
| signals | No | 要显示的信号名(ref 或全名 a.b.c);省略=全部(上限 maxSignals) | |
| vcdPath | Yes | VCD 文件绝对路径(来自 fpga_sim/fpga_msim_sim 的 artifacts.vcd) | |
| inlineSvg | No | 是否在结果里返回完整 SVG 文本(供 AI 客户端内联渲染),默认 true | |
| maxSignals | No | 最多渲染信号数,默认 40(超出截断并提示) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that the tool writes .wave.svg and .wave.html files, returns paths, optionally embeds a full SVG via inlineSvg, and can open a browser with open:true. It also notes truncation behavior for maxSignals. Minor gaps remain, such as overwrite behavior, but the disclosed side effects are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences cover purpose, outputs, two boolean behaviors, parameter control, and the sibling alternative, all without redundant filler. The core function is front-loaded, and every clause contributes actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters and no output schema, the description explains the key return artifacts and option behaviors well. It covers all major invocation decisions and the interactive fallback. It stops short of perfect completeness by not describing failure modes or exact return path structure, but it is strong for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by clarifying defaults and behavioral effects: inlineSvg default true returns an embeddable SVG, open launches the browser, signals selects signals, and maxSignals defaults to 40 with truncation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: '把 VCD...渲染成数字时序图' and names the concrete output artifacts (.wave.svg + .wave.html). It also distinguishes itself from the interactive sibling fpga_msim_view by framing itself as the static rendering path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool vs. the alternative: '需要交互式深查/缩放用 fpga_msim_view 打开 ModelSim GUI'. It also identifies valid input sources (fpga_sim/iverilog or fpga_msim_sim/ModelSim artifacts.vcd), giving clear context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
45 tool updates
v0.3.1- First observed
fpga_assert - First observed
fpga_capabilities - First observed
fpga_cdt - First observed
fpga_doc_search - First observed
fpga_env - First observed
fpga_exe - First observed
fpga_flash_spi - First observed
fpga_flash_sram - First observed
fpga_gen_chain_file - First observed
fpga_gen_multi_file - First observed
fpga_gen_sfc - First observed
fpga_ila_adc_read - First observed
fpga_ila_build - First observed
fpga_ila_capture - First observed
fpga_ila_console - First observed
fpga_ila_flow - First observed
fpga_ila_generate_fic - First observed
fpga_ila_list_nets - First observed
fpga_ila_open - First observed
fpga_ip_lookup - First observed
fpga_jtag_capture - First observed
fpga_jtag_flash - First observed
fpga_jtag_gen_svf - First observed
fpga_jtag_scan - First observed
fpga_log_extract - First observed
fpga_msim_compile - First observed
fpga_msim_do - First observed
fpga_msim_doc_search - First observed
fpga_msim_exe - First observed
fpga_msim_sim - First observed
fpga_msim_view - First observed
fpga_pds_batch - First observed
fpga_pds_compile - First observed
fpga_pds_create_blink_project - First observed
fpga_pds_create_project - First observed
fpga_pds_register_fic - First observed
fpga_pds_reports - First observed
fpga_pds_run - First observed
fpga_pds_scan - First observed
fpga_primitive_lookup - First observed
fpga_project_info - First observed
fpga_server_cleanup - First observed
fpga_sim - First observed
fpga_vault - First observed
fpga_wave
TDQS
Many tools overlap in purpose or responsibility: there are three ILA capture paths (fpga_jtag_capture, fpga_ila_capture, fpga_ila_console), two scan tools with different stacks (fpga_pds_scan, fpga_jtag_scan), and multiple ways to build/compile (fpga_pds_run, fpga_pds_compile, fpga_pds_batch, fpga_ila_build). The descriptions are long and detailed, but an agent would struggle to confidently choose between them without deep context.
The fpga_ prefix and snake_case verb_noun pattern are consistent (fpga_pds_run, fpga_flash_sram, fpga_ila_open), with occasional deviation (fpga_pds_create_blink_project, fpga_vault, fpga_env). Minor irregularity in domain grouping (some tools use fpga_pds_, some fpga_ila_, some fpga_jtag_, some no subdomain) but overall readable and predictable.
45 tools is far beyond the well-scoped range, and many are thin wrappers (fpga_ila_adc_read, fpga_msim_compile, fpga_msim_do, fpga_pds_compile) around more general tools, resulting in a heavy, sprawling surface that will tax context and selection.
The covered domain—Pango FPGA build, JTAG scan/flash, ILA capture, simulation, and IP/documentation lookup—is remarkably complete, with multiple fallback paths and long-tail escape hatches (fpga_cdt, fpga_exe, fpga_msim_do). There are no obvious dead ends; if anything the surface is over-complete.
Maintenance
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
Run, build, and validate firmware on virtual hardware from your AI agent. Hardware knowledge corpus.
One MCP tool for verified AI-agent outcomes with success-only charging.
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI assistants with a complete FPGA toolchain for HDL linting, simulation, synthesis, and place-and-route across various hardware targets. It features a GitHub-backed IP core registry that enables users to search for and import MIT-licensed cores directly through their chat interface.151MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for deterministic Vivado FPGA automation including project scaffolding, simulation, synthesis, implementation, and gated bitstream generation.4MIT
- AlicenseAqualityBmaintenanceAn MCP server for FPGA toolchain operations including linting, simulation, synthesis, place-and-route, bitstream programming, and IP core registry via GitHub.255MIT
- AlicenseAqualityBmaintenanceEnables AI agents to design hardware by writing C-like HDL and compiling it to Verilog, with real toolchain verification including synthesis checks.101MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Renkos1/pango-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server