关于 wavedrom-gen
wavedrom-gen 是一项技能,可将自然语言时序描述转为可编辑的 WaveJSON 和渲染图表。它采用固定版本的官方 wavedrom 引擎,并提供验证、渲染及检查时序假设的流程。
主要功能
- 01生成可编辑的 WaveJSON/JSON5
- 02渲染 SVG,可选 PNG 和 HTML
- 03使用官方 WaveDrom 引擎验证
- 04支持 signal、assign 和 reg 图表
- 05检查时序语义和渲染结果
适用场景
- 01根据文字描述创建时序图
- 02呈现协议或实现层面的时序细节
- 03生成用于编辑和检查的离线 HTML
MCP 相关
该技能优先使用可用的 wavedrom_validate 和 wavedrom_render MCP 工具,也说明了如何注册尚未提供的 MCP 工具。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ siliconpeasant/ soc_agent_skill --skill wavedrom-gen安装后在 Claude Code 中输入/wavedrom-gen确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEpackage-lock.jsonpackage.jsonagents/openai.yamlexamples/a-pgm-mode-datasheet.json5a-pgm-mode-datasheet.svgasync-fifo-cdc.json5async-fifo-cdc.svgaxi4-read-write.json5axi4-read-write.svgqspi-quad-io-read.json5qspi-quad-io-read.svgreferences/datasheet-annotations.mdmcp-registration.mdmcp-tools.mdprotocol-questions.mdsemantic-review.mdwavejson-official.mdscripts/datasheet-annotations.cjsmcp-server.mjsregister-mcp.mjsrender-wavedrom.mjsvalidate-wavejson.mjswavedrom-engine.mjswavejson-lint.cjs详细介绍
WaveDrom 生成器
将自然语言转换为可编辑的 WaveJSON/JSON5,并使用固定版本的官方 wavedrom 主包引擎进行渲染。将 [email protected] 的 renderAny 行为作为语法依据;自定义 lint 仅作为质量检查层。
必需输出
- 将可编辑源文件保存为
<descriptive-name>.json5。 - 默认渲染为
<descriptive-name>.svg。 - 用于栅格交付或视觉检查时,添加 PNG。
- 添加独立 HTML,以便离线编辑、实时渲染、验证、缩放、复制和下载。
- 可选的 Datasheet 尺寸标注保存在同一 JSON5 文件的顶层
datasheet.annotations中。 - 说明会实质影响时序语义的假设。
- 返回每个产物的绝对路径。
工作流
-
对请求分类。 自然语言时序图使用
signal。若明确要求,则保留或生成官方assign和reg图。将提供的规范、RTL、跟踪记录或时序表视为权威依据。 -
建立时序约定。 确定时间单位或时钟域、有效边沿、初始状态、信号及有效电平、事件顺序、延迟、传输条件、最终状态和未解决的假设。
-
消除重要歧义。 只有缺少的信息会实质改变实现精确的图时,才提出问题。对于概念草稿,采用惯例默认值并说明。
-
阅读官方语法参考。 编写 WaveJSON 前,阅读 references/wavejson-official.md。对于标准协议,也阅读 references/protocol-questions.md。对于同步或实现精确的工作,阅读 references/semantic-review.md。对于规格表时序尺寸标注,阅读 references/datasheet-annotations.md。
-
编写官方 WaveJSON。 保留所有官方字段。根据所需图表使用
signal、assign或reg。对于时序图,始终一致地使用一个时隙,除非需要period、phase或官方的<...>子周期语法。因果关系放在edge中;Datasheet 尺寸标注放在datasheet.annotations中。不要在两处重复同一对端点。 -
使用官方引擎验证。 优先使用
wavedrom_validateMCP。否则运行:node <skill-dir>/scripts/validate-wavejson.mjs --input <source.json5>默认情况下,只有 JSON5、官方渲染或 Datasheet 扩展错误会导致验证失败;语义 lint 仅提供建议,不会阻止官方语法通过。对于自然语言生成的交付内容,如果每条警告都必须导致质量门禁失败,请添加
--strict。 -
在本地渲染。 优先使用
wavedrom_renderMCP。否则运行:node <skill-dir>/scripts/render-wavedrom.mjs --input <source.json5> --svg <output.svg>根据需要添加
--png <output.png>或--html <output.html>。渲染器对 SVG 和离线 HTML 使用相同的固定版本官方引擎以及所有随附皮肤。它仅对signal图处理datasheet.annotations,并对 PNG 和 HTML 一致地使用增强版 SVG。不要静默安装依赖;获准安装时,请在 skill 目录中运行npm ci --omit=dev。 -
检查并调整。 检查标签、转换、分组、箭头、裁切、皮肤和裁剪情况。对于 Datasheet 尺寸标注,还要检查投影线、箭头、下标、堆叠和隐藏的节点标签。将渲染结果与时序约定进行核对;能够渲染并不能证明协议正确。
自然语言策略
- 保留明确事实,不要用协议默认值替代。
- 区分未知状态
x、高阻态z、保持状态.、间隙|、数据框=/2-9,以及子周期<...>。 - 切勿仅为让图示看起来完整而虚构信号。
- 如果指定的协议存在歧义,请询问协议参数,或生成明确标注为概念示例的内容。
- 每张图聚焦一个主题;如果拆分不相关的阶段或时钟域能提高清晰度,就应拆分。
- 将有关建立时间/保持时间/脉宽/周期样式的请求视为对可选
datasheet.annotations的修改,而非替换官方 WaveJSON。 - 除非用户要求修改,否则原样保留现有官方语法。
质量门槛
- JSON5 可解析。
- 固定版本的官方引擎可根据
signal、assign或reg生成 SVG。 - 请求严格模式时,严格 lint 不报告未解析的标签、节点、未记录的波形字符或可疑配置。
- 存在数据手册注释时,注释应指向现有的
signal节点,且不得重复edge对。 - 同步转换和传输周期符合时序约定。
- SVG 文件存在且非空,并包含 SVG 根元素。
- 如果请求 HTML,则 HTML 为自包含格式,可在无需网络访问的情况下重新渲染嵌入的源内容。
- 最终交付应链接源文件和渲染产物,并列出假设。
依赖基线
要求使用 Node.js 20 或更高版本。将官方主包固定为 [email protected],并加载随包附带的六款皮肤:default、narrow、dark、lowkey、narrower 和 narrowerer。仅使用 @resvg/resvg-js 从规范的官方 SVG 生成 PNG。
官方主包的 CLI 仍可单独使用:npx wavedrom --input source.json5 > output.svg;此技能会直接调用同一包的引擎,以确保 MCP、SVG、PNG 和离线 HTML 共用同一兼容性基线。
如果 MCP 工具尚未注册,而用户需要使用这些工具,请阅读 references/mcp-registration.md,并优先使用随附的注册脚本。