CHIP DESIGN · COURSE

EDA 自动化与可复现 ASIC 流程

建立一条能让另一位工程师从空工作区重建的 ASIC 流程。课程从 Linux 进程与文件系统状态、清单、摘要、权限及原子工件开始。先精确处理 Shell 参数、管道、超时、信号与清理,并验证 Python 配置、单位、缺失值与版本化报告语法。随后通过 Tcl 对象、集合、基数断言、消息、选项与检查点安全控制 EDA 数据库。课程还会表达语义依赖、内容寻址缓存、资源感知并行与确定性合并,并锁定工具与主机假设,同时遵守商业许可及专有 PDK/IP 边界。最后设计 CI 分层、不稳定测试处理、摘要绑定批准、策略、归一化证据与精确豁免,完成一条经独立重建、跨层故障注入的 RTL 到签核教学流程,并在晶圆厂或量产结论前保留诚实边界。

本课程之前: 已完成 SystemVerilog RTL 设计、功能验证、静态时序/CDC/约束、物理设计/功耗/信号完整性及流片/良率/硅后调试。需要基础 Linux 与 Python 使用能力。练习使用开源或合成工具及 PDK 形教学数据;课程不提供合法商业工具、专有 PDK、IP、晶圆厂接收、掩模、已制造硅片、量产测试或产品认证。

COURSE FACTSStage, chapters, units, prerequisite, and outcome
第 1 章

可复现运行是关于状态的结论,不是复制目录

目标: 对“可复现运行是关于状态的结论,不是复制目录”,哪些冻结输入决定结果、首个可独立观察的结论是什么、哪项变更证明检查器确实有效?

复现是指声明环境把相同冻结逻辑输入转成等价声明输出,并暴露每个允许的非确定字段。 本节采用“构造最小可观察案例”路线。调用自动化前,先构造可手工检查实例:说明进入该步骤的状态、允许的转换、必须变化的观测,以及能够推翻结论的证据。本单元目标是:建立复现硬件结果所需的操作系统、文件系统、进程与清单模型,不依赖 GUI 操作记忆。 因而每种捷径都必须依据是否保留可复现性、可诊断性与设计结论身份来评价。

把“可复现运行是关于状态的结论,不是复制目录”视为可执行接口,声明输入、输出、状态、副作用、资源限值与责任。 必须把控制流程成功与设计证据分开:进程可以返回零,却使用错误修订、跳过工作、复用陈旧输出、压掉违规或发布不完整工件。把昨天报告复制到今天网表旁,会形成看似完整却指向两个候选的发布。 学习者必须找到首个分歧并修复依赖,不能只是反复运行直到看板变绿。

只有易变时间戳、路径、种子、主机名与顺序被固定,或按已审规则归一化后,两次运行才等价。 该不变量只对具名候选与声明环境成立;任一输入变化都会使全部依赖结果失效,直至重建重新证明。

执行前计算源文件、约束、配置、工具身份与环境摘要。 第一步冻结候选,并在阅读生成摘要前预测预期观测。

把语义网表结构与易变报告元数据分开比较。 第二步执行最小转换,保留原始标准输出、标准错误、退出状态、生成文件与资源使用。

记录并测试一条时间戳字段归一化规则。 最后把观测与不变量核对,注入具名故障,并验证预期消费者拒绝损坏或陈旧状态。

两次运行小型综合;两份报告都写 42 个单元,但因其中一份嵌入时间戳而摘要不同。 阅读追踪前,先预测精确命令或状态转换、预期退出与工件状态、应首先响应的检查器及最小安全恢复。

  1. 执行前计算源文件、约束、配置、工具身份与环境摘要。
  2. 把语义网表结构与易变报告元数据分开比较。
  3. 记录并测试一条时间戳字段归一化规则。

结果: 只有明确允许时间戳差异且其余身份全部一致,语义工件才算复现。 只有干净的第二次执行复现决定性工件,并且定向变更在预测边界失败后,才接受结果。