docs: refresh contest proposal for 0.2.1
项目链接:GitHub · GitLink · Mooncakes · 项目申报书
MoonRCInspect 是一个使用 MoonBit 原生实现的 SPEF(Standard Parasitic Exchange Format)寄生 RC 网络解析、分析、审计与可视化工具。它面向布局布线后的寄生参数检查、 EDA 数据流水线、教学和轻量级自动化,不只是一个文本解析 Demo。
项目把 SPEF 文本转换为带物理单位和拓扑语义的 RC 模型,并提供网络统计、连通性检查、 孤立节点/环检测、Elmore delay、数据质量规则、Graphviz DOT、JSON 和命令行工作流。
商业 EDA 工具和现有 C/C++ 工具链通常可以读取 SPEF,但 MoonBit 生态此前缺少针对物理 设计寄生网络的原生基础组件。MoonRCInspect 探索 MoonBit 在以下工程场景中的适用性:
公开检索到的相邻 MoonBit 项目主要覆盖 Verilog RTL、VCD、拥塞布线、通用电路求解和 Graphviz 布局。MoonRCInspect 聚焦 SPEF 与提取后寄生 RC 审计,不重复实现这些项目。
*NAME_MAP
*PORTS
*D_NET
*CONN
*CAP
*RES
*END
Design
RCNetwork
Net
Pin
Node
Resistor
Capacitor
当前版本面向 IEEE 1481-1998 中最常见的 distributed net 工作流。它有意不宣称完整 STA 或完整 IEEE SPEF 覆盖:
*R_NET
详见 SPEF 支持矩阵。
SPEF text -> source-positioned lexer -> section-aware parser -> syntax AST -> name/unit model builder -> RCNetwork -> topology + RC + Elmore analysis -> rule-based audit -> JSON / DOT / Markdown -> moonrc CLI
主要包:
src/diagnostic
src/model
src/parser
src/graph
src/analyzer
src/path
src/coupling
src/reduction
src/audit
src/visual
src/report
src/cli
cmd/moonrc
更详细的设计见 架构文档。
需要近期 MoonBit 工具链和 native 后端。开发版本使用:
moon 0.1.20260819 moonc v0.10.9
克隆后检查、测试和构建:
moon check --deny-warn moon test --deny-warn moon build cmd/moonrc --target native
开发时可直接运行:
moon run cmd/moonrc -- --help
项目只依赖官方 moonbitlang/async 来完成 native 文件 IO。解析、模型、图算法、分析、 审计和序列化逻辑均在本仓库中用 MoonBit 实现。
moonbitlang/async
安装已发布的库版本:
moon add alicedhaha/moonrcinspect@0.2.1
分析示例:
moon run cmd/moonrc -- analyze examples/small.spef
典型输出:
MoonRCInspect analysis nets: 1 nodes: 4 resistors: 3 capacitors: 4 total resistance: 60 ohm total capacitance: 4e-15 F
执行质量审计:
moon run cmd/moonrc -- audit examples/medium.spef moon run cmd/moonrc -- audit examples/invalid.spef --strict
生成单个网络的 DOT:
moon run cmd/moonrc -- visualize examples/small.spef \ --net clk --output clk.dot dot -Tpng clk.dot -o clk.png
导出完整 JSON 或 Markdown 报告:
moon run cmd/moonrc -- parse examples/small.spef -o small.json moon run cmd/moonrc -- report examples/small.spef -o report.md
查询节点间最小电阻路径和全网电阻距离矩阵:
moon run cmd/moonrc -- path examples/small.spef --net clk --from clk --to u_buf:A moon run cmd/moonrc -- matrix examples/small.spef --net clk --format csv
分析跨网络耦合关系并生成降阶 RC 摘要:
moon run cmd/moonrc -- coupling examples/medium.spef --format json moon run cmd/moonrc -- reduce examples/medium.spef --format csv moon run cmd/moonrc -- audit examples/invalid.spef --format sarif -o audit.sarif
moonrc parse <file.spef> [--format json] [-o FILE] moonrc analyze <file.spef> [--format text|json] [-o FILE] moonrc audit <file.spef> [--strict] [--format text|json] [-o FILE] moonrc visualize <file.spef> [--net NAME] [--format dot|json] [-o FILE] moonrc report <file.spef> [--format markdown|json] [-o FILE] moonrc path <file.spef> --net NET --from NODE --to NODE [--mode resistance|hops] [--format text|json|csv] moonrc matrix <file.spef> --net NET [--format text|json|csv] [-o FILE] moonrc coupling <file.spef> [--format text|json|csv] [-o FILE] moonrc reduce <file.spef> [--format text|json|csv] [-o FILE]
audit --strict 会把所有 warning 提升为 error,适合 CI 门禁。JSON schema 使用带版本的 标识,例如 moonrcinspect.network.v1 和 moonrcinspect.audit.v1。
audit --strict
moonrcinspect.network.v1
moonrcinspect.audit.v1
SPEF-A001
*SPEF
SPEF-A100
SPEF-A103
SPEF-A104
SPEF-A201
SPEF-A202
SPEF-A205
SPEF-A300
SPEF-A301
SPEF-A302
SPEF-A303
SPEF-A304
SPEF-A400
moon test moon test --deny-warn
40 个测试覆盖模型单位、Lexer、Parser、错误恢复、Name Map、拓扑、Elmore、路径查询、 电阻矩阵、耦合分析、RC 降阶、审计规则、空网络、悬空 R/C 节点、JSON/DOT/CSV/SARIF/ Markdown、CLI 参数和完整多网络工作流。样例包括:
examples/small.spef
examples/medium.spef
examples/invalid.spef
全部样例由本项目原创编写,不包含商业 EDA 输出或受限设计数据。
本项目为原创 MoonBit 实现,未移植 OpenTimer 或商业 EDA 代码。公开资料只用于理解 SPEF 结构和验证术语,详见 来源与合规说明。
许可证:MIT。欢迎阅读 贡献指南 后提交问题和改进。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonRCInspect
项目链接:GitHub · GitLink · Mooncakes · 项目申报书
MoonRCInspect 是一个使用 MoonBit 原生实现的 SPEF(Standard Parasitic Exchange Format)寄生 RC 网络解析、分析、审计与可视化工具。它面向布局布线后的寄生参数检查、 EDA 数据流水线、教学和轻量级自动化,不只是一个文本解析 Demo。
项目把 SPEF 文本转换为带物理单位和拓扑语义的 RC 模型,并提供网络统计、连通性检查、 孤立节点/环检测、Elmore delay、数据质量规则、Graphviz DOT、JSON 和命令行工作流。
为什么做这个项目
商业 EDA 工具和现有 C/C++ 工具链通常可以读取 SPEF,但 MoonBit 生态此前缺少针对物理 设计寄生网络的原生基础组件。MoonRCInspect 探索 MoonBit 在以下工程场景中的适用性:
公开检索到的相邻 MoonBit 项目主要覆盖 Verilog RTL、VCD、拥塞布线、通用电路求解和 Graphviz 布局。MoonRCInspect 聚焦 SPEF 与提取后寄生 RC 审计,不重复实现这些项目。
功能
*NAME_MAP、*PORTS、*D_NET、*CONN、 接地/耦合*CAP、*RES、*END;Design、RCNetwork、Net、Pin、Node、Resistor和Capacitor公共数据模型;*D_NET耦合端点解析、网络对聚合、最强耦合伙伴和未解析端点统计;支持边界
当前版本面向 IEEE 1481-1998 中最常见的 distributed net 工作流。它有意不宣称完整 STA 或完整 IEEE SPEF 覆盖:
*D_NET,暂不支持 reduced*R_NET;详见 SPEF 支持矩阵。
架构
主要包:
src/diagnostic:源码位置、严重度和稳定诊断;src/model:物理单位、节点、连接、R/C 元件和设计模型;src/parser:Lexer、AST、Parser 和模型构建;src/graph:面向电阻拓扑的图算法;src/analyzer:统计、复杂度和 Elmore delay;src/path:最小电阻/跳数路径、可达性、电阻矩阵和电气直径;src/coupling:跨网络耦合解析、聚合和伙伴排名;src/reduction:首阶矩保持 RC 降阶和负载摘要;src/audit:可组合审计规则;src/visual:JSON 与 DOT;src/report:文本、JSON、CSV、SARIF 和 Markdown 报告;src/cli:纯命令配置与执行逻辑;cmd/moonrc:native IO 入口。更详细的设计见 架构文档。
环境与安装
需要近期 MoonBit 工具链和 native 后端。开发版本使用:
克隆后检查、测试和构建:
开发时可直接运行:
项目只依赖官方
moonbitlang/async来完成 native 文件 IO。解析、模型、图算法、分析、 审计和序列化逻辑均在本仓库中用 MoonBit 实现。安装已发布的库版本:
快速开始
分析示例:
典型输出:
执行质量审计:
生成单个网络的 DOT:
导出完整 JSON 或 Markdown 报告:
查询节点间最小电阻路径和全网电阻距离矩阵:
分析跨网络耦合关系并生成降阶 RC 摘要:
CLI
audit --strict会把所有 warning 提升为 error,适合 CI 门禁。JSON schema 使用带版本的 标识,例如moonrcinspect.network.v1和moonrcinspect.audit.v1。审计规则示例
SPEF-A001:缺少*SPEF;SPEF-A100:网络没有连接声明;SPEF-A103/SPEF-A104:R/C 元件引用不存在节点;SPEF-A201/SPEF-A202:负值或非有限 R/C 参数;SPEF-A205:声明电容和*CAP明细和偏差过大;SPEF-A300:电阻网络断连;SPEF-A301:孤立节点;SPEF-A302:电阻环;SPEF-A303/SPEF-A304:无驱动或多驱动;SPEF-A400:网络复杂度超过阈值。测试
40 个测试覆盖模型单位、Lexer、Parser、错误恢复、Name Map、拓扑、Elmore、路径查询、 电阻矩阵、耦合分析、RC 降阶、审计规则、空网络、悬空 R/C 节点、JSON/DOT/CSV/SARIF/ Markdown、CLI 参数和完整多网络工作流。样例包括:
examples/small.spef:单个分支 RC 树;examples/medium.spef:三个网络与耦合电容;examples/invalid.spef:缺失头部/结尾、重复 ID 和负参数。全部样例由本项目原创编写,不包含商业 EDA 输出或受限设计数据。
技术亮点
路线图
*R_NET和更多 IEEE 1481 可选段;开源与来源
本项目为原创 MoonBit 实现,未移植 OpenTimer 或商业 EDA 代码。公开资料只用于理解 SPEF 结构和验证术语,详见 来源与合规说明。
许可证:MIT。欢迎阅读 贡献指南 后提交问题和改进。