# MoonLiberty 项目申报书

**项目名称：** MoonLiberty：芯片标准单元库的 Liberty 解析、NLDM 时序查询与变更审计工具  
**参赛者：** 宋永振（SongYZZZ）  
**GitHub：** https://github.com/SongYZZZ/moon-liberty

**项目简介、方向与通用性：** 面向 PDK 维护、EDA 工具开发和数字电路教学的原创 MoonBit 基础库与 CLI。解析单元库、检查结构和引用、按物理单位查询时序表，并审计库升级中的有效数据变化。纯核心支持 native、JS、Wasm GC，原生命令行可接入持续集成。

**标准版本及完整兼容终点：** 唯一基线为 Synopsys《Liberty User Guides and Reference Manual Suite》Version 2017.06。最终目标是完整支持该版本合法词法/语法、全部标准分组及属性的结构承载和原义写回，逐条补齐参数、类型、作用域与模板引用规则，通过正反例及独立工具往返核对。CCS/LVF、总线、时序和功耗数据属于完整格式目标；逐条清单未闭环前不宣称完整符合。版本契约、家族矩阵与当前缺口见 docs/STANDARD_CONFORMANCE.md。

**兼容与求值关系：** 完整格式读写/验证与数值计算分开验收。当前只求值标量/一维/二维 NLDM，SI 查询限四类组合表；CCS/LVF 等结构保留并明确标记不求值，不因求值受限而删除其数据。不承诺完整 STA 或工艺签核。

**三个完整使用场景：** 输入、命令、预期结果见 [可复现案例](docs/STANDARD_CASES.md)。

1. PDK 维护者指定 2017.06，展开显式提供的 include 文件后分别执行 compat 与 lint，检查扩展声明、单元与引脚引用，依据路径和行列修复问题。案例：声明 integer 却赋值 1.5 时拒绝通过。
2. EDA 作者指定单元、关联引脚、输入转换时间与负载，以秒、法拉查询组合延迟，歧义及越界默认拒绝。案例：include 展开后的 0.025ns 标量表返回 2.5e-11 秒。
3. 库升级时比较函数、字段和表格，提取指定单元并保留库级上下文。案例：含 bus/ff/CCS/LVF/功耗及扩展组的结构可往返保留，CCS 数值求值显式拒绝。

**核心功能与当前进度：** 0.4.4 已在 moonc 0.10.16 下实现有界读写、版本报告、include、扩展声明、18 族标准结构检查、多名称标量引脚、局部类型、可推导总线边界与状态表检查、标量至三维格式校验、布尔函数、NLDM 求值、精确十进制差异及提取，共九个命令。361 项原生测试、33 次标准 CLI 检查及 55 次高精度 Decimal 对照通过；IHP/Nangate 两来源共 384 次独立数值核对，另有 Yosys 结构往返及原始错误样本拒绝案例。当前完整符合性仍为 false，全部标准字段、引用与特殊结构清单须继续闭环；不以测试数量替代该目标。

**原创、来源及生态差异：** 原创非移植，Apache-2.0；公开生态检索未发现同定位的其他 MoonBit 包，不能覆盖未公开报名。IHP、Nangate、ASAP7、Yosys 数据及两种 GPL 独立测试读取器的固定来源、哈希、许可证见 docs/REFERENCES.md；后者非运行依赖或源码来源。标准手册只引用、不分发。仓库超过十次有效提交，正式材料与作品均指向上述唯一仓库。
