gowin-mcp

gowin-mcp

An MCP server that turns Gowin EDA build reports into structured data.

Category
访问服务器

README

gowin-mcp

Beta. Working and in daily use, but verified against a narrow slice of Gowin output so far — see Beta status before trusting a number that matters. Bug reports with a sample report attached are very welcome.

An MCP server that turns Gowin EDA build reports into structured data.

Gowin EDA writes everything you need after a place & route — resource usage, achieved frequency per clock, the exact register-to-register path that failed setup — and then buries it in a multi-megabyte HTML file nobody opens. This server reads those artifacts and hands back the numbers.

Built for Sipeed Tang boards (GW1N / GW2A / GW5A) but it only cares about the report format, so any Gowin EDA project works.

What it answers

  • Did this build close timing, and if not, which path failed and by how much?
  • What is the achieved fMax on each clock domain versus its constraint?
  • How much of the device am I using — CLS, LUT, ALU, registers, BSRAM, DSP, I/O?
  • What did my last change cost me? (gowin_compare diffs two builds.)

Install

git clone https://github.com/Papipapito/gowin-mcp.git
cd gowin-mcp
npm install
npm run build

Then register it. For Claude Desktop, in claude_desktop_config.json:

{
  "mcpServers": {
    "gowin": {
      "command": "node",
      "args": ["C:\\path\\to\\gowin-mcp\\dist\\index.js"]
    }
  }
}

For Claude Code:

claude mcp add gowin -- node /path/to/gowin-mcp/dist/index.js

Tools

Tool Purpose
gowin_summary Device, resources, fMax and violations in one call. Start here.
gowin_resources Full resource tables, including I/O banks and clock resources.
gowin_timing fMax per clock, total negative slack, worst setup/hold paths.
gowin_check Pass/fail gate — violations only.
gowin_compare Diff two builds: resource deltas, fMax deltas, violations introduced/fixed.
gowin_list_builds Find every Gowin build under a directory tree.

Every tool takes format: "json" if you want the raw structures instead of text.

Paths are forgiving: pass the project directory, its impl/ directory, or the .rpt.txt itself.

Example

Build: project  (GW5AT-60, GW5AT-LV60PG484AC1/I0)
Tool:  V1.9.11.03 Education
Built: Thu Jul 16 20:58:03 2026   PnR 0h 3m 29s   peak 1848MB

Resources
  Logic: 28034/59904 (47%)
    LUT 21883, ALU 3325, ROM16 0
  CLS: 19618/29952 (66%)
  Register: 15014/60780 (25%)
  BSRAM: 73/118 (62%)
  DSP: 10.5/118 (9%)
  I/O Port: 141/297 (48%)

Timing: 3 VIOLATIONS
  setup clk_54m    -1.826 ns  1 endpoint failing setup — worst path -1.826 ns:
                              cpu1/u0/ISet_1_s87/Q -> mem1/ram_busy_s0/CE
  setup clk_hdmi   -0.378 ns  ...
  hold  clk_27m    -0.028 ns  ...

fMax per clock
  clk_54m: 33.548 MHz vs 53.996 MHz constraint (-20.448) [FAIL]
  clk_hdmi: 72.221 MHz vs 74.25 MHz constraint (-2.029) [FAIL]
  clk_108m: 159.744 MHz vs 107.991 MHz constraint (+51.753) [ok]
  ...

And a comparison between two builds of the same design:

Resource changes
  LUT,ALU,ROM16                13361 ->   13450  +89 (+0.67%)
  BSRAM                           33 ->      44  +11 (+33.33%)
  CLS                           8912 ->    8901  -11 (-0.12%)

fMax changes
  clock_54m          50.404 ->    45.284 MHz  -5.12
  clock_audio       411.534 ->     437.8 MHz  +26.266

Violations: 0 introduced, 0 fixed, 1 persisting
  still  setup clock_54m -1.615ns

VERDICT: no regression.

What it reads

File Used for
impl/pnr/<name>.rpt.txt Device, tool version, resource tables, PnR runtime
impl/pnr/<name>_tr_content.html fMax, total negative slack, setup/hold path tables

<name>.tr.html is only a ~350-byte frameset wrapper — the data is in the _tr_content sibling.

Tables are parsed structurally (tr/td), not by flattening the HTML, so a column layout change between tool versions surfaces as a missing field rather than a silently misaligned number.

Scope

This server reads results. It does not run builds.

A GW5A place & route takes minutes, which does not fit an MCP request, and driving long builds through a tool call hides their output. Keep building with gw_sh, make, or the Gowin GUI as you already do — then point this at the results.

Beta status

What has actually been exercised:

Verified
Tool versions V1.9.11.03 Education, V1.9.9 Beta-4 Education
Devices GW5AT-60 (Tang Console 60K), GW2AR-18 (Tang Nano 20K)
Host Windows 11

Known gaps, in rough order of how likely they are to bite you:

  • Only the proprietary Gowin EDA flow. Output from the open-source chain (yosys / nextpnr-himbaechel / apicula) is a completely different format and is not parsed at all. If you build with nextpnr, this server has nothing to read.
  • GW1N is untested. It should work — the report layout looks family-independent — but nobody has run it.
  • Report headers have already been seen to drift between releases (PnR Version became Tool Version around 1.9.11). Other fields may drift the same way on versions not listed above.
  • Only tested against English-language reports.
  • Power and pin reports (*.power.html, *.pin.html) are written by the tool but not read yet.

Failures should be visible rather than silent: fields that do not parse come back absent instead of wrong. If you get a missing or implausible number, please open an issue with the offending .rpt.txt or _tr_content.html attached.

Notes

  • Setup and hold violations are taken from the Total Negative Slack summary rather than the path tables, because the path tables are capped by -max_paths at report time and would under-report a design with many failures.
  • An fMax failure is only reported separately when no setup violation already covers that clock — otherwise it is the same defect counted twice.

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选