面向模拟 IC 工程师的数字设计课程

这是完整数模混合控制课程的 01–24 基础部分。已选方向、25–48 专项课及结课目标见 48 节方向总纲。本页原有讲义和实验继续使用。

版本:2026-10-03。对象:熟悉晶体管、电路时序、负载和 PVT,尚未系统学习 RTL 的模拟 IC 工程师。

学完要能做什么

独立完成一个小型数模控制模块的规格、RTL、验证和逻辑综合;能解释时序约束的物理来源,识别跨时钟与配置更新风险;具备阅读布局布线结果的基础。

贯穿案例是 SPI 控制模拟配置。先用单系统时钟 Master 建立同步设计直觉,再学习 Slave、跨时钟和配置提交。不会一开始就同时加入全部 SPI 模式、处理器、DMA 或复杂总线。

这是一套完整的课程讲义、实验任务、答案和验收标准。第 01 阶段有现成且已验证的 RTL/testbench;后续阶段的设计题由学习者逐步实现,并不代表仓库已经包含这些模块的可运行实现。

如何使用

每节先读“讲解”,自己完成练习,再看 参考答案。每阶段留下三种证据:一张电路/时序图、一份实验记录、一段对结果的解释。工具运行成功和学习验收分别记录。

建议安排 60–90 小时,按每周 6–8 小时约需 8–15 周;这是起始预算,按理解程度调整。每次学习约 60–90 分钟:20 分钟理解,30–50 分钟预测与实验,10–20 分钟复盘。通过验收再推进,不以日期强行跳过基础。

已有模拟知识可以直接用于理解门延迟、负载和时钟质量。需要特别训练的是:离散状态、寄存器更新语义、接口契约、自动验证、约束与实现的一致性。

课程目录

节次 主题 练习产物
01 SPI 规格与接口契约 接口和时序表
02 A5/3C 逐沿推演 完整一帧采样表
03 寄存器与非阻塞赋值 数据通路和 next-state 推导
04 分频、计数器与状态机 分频计算及状态转移图
05 复位、请求和完成语义 边界行为表
06 自检查验证与错误注入 覆盖矩阵和失败证据
07 Liberty 与标准单元 单元模型对照表
08 综合、优化与网表 37 个触发器的解释
09 setup/hold 与时序报告 两类 slack 手算
10 SDC 与真实 SPI 预算 约束假设和外部预算
11 SPI Slave 架构选择 SCLK 域与过采样方案比较
12 单比特 CDC 与亚稳态 同步器及脉冲传输方案
13 多位数据与握手 mailbox 时序图
14 影子寄存器与原子提交 模拟配置更新协议
15 多域复位、读回与 CDC 验证 异常恢复矩阵
16 模块分层与寄存器语义 地址表和接口规格
17 FIFO、流控与吞吐量 同步 FIFO 边界推演
18 可选 APB 接口 握手表与适配器设计
19 物理实现输入与 floorplan 数据依赖表和资源预算
20 CTS 与时钟质量 setup/hold 偏斜比较
21 布线、寄生与时序收敛 违例归因及修复计划
22 活动、功耗与数模耦合 活动统计和功耗预算
23 SPI 模拟配置控制器规格 完整顶层契约
24 综合设计评审与交付 证据包和验收报告

六个阶段

顺序 讲义 学习门槛
一 01–06:同步 RTL 与 SPI Master 看懂首位、末位、复位和 done;验证能发现错误
二 07–10:综合与时序 把报告对应到电路,分别计算 setup/hold
三 11–15:SPI Slave、CDC 与配置 证明配置一致性,明确跨域与复位协议
四 16–18:集成与流控 明确一次操作何时接受、等待或拒绝
五 19–22:物理实现与功耗 根据物理数据解释时序变化和功耗来源
六 23–24:综合项目 规格、实现、验证和约束形成可审查的证据链

实验记录与验收表 用于记录自己的结果。现有 SPI 讲义 和 真实综合报告解读 是前两个阶段的工程参考。

实验环境和证据边界

本地保存源码,服务器 IC_Server 上运行独立 batch job。先读 进度记录,不重复安装已有工具。运行方式见 统一运行指南。不要修改现有 GUI 会话、共享服务或全局 PATH。

默认规格固定为 50 MHz 系统时钟、1 MHz SCLK、Mode 0、8 bit、MSB first;当前 Master 内部全部寄存器只由 clk 驱动,rst_n 同步低有效。后续 Slave 的时钟架构在单独阶段讨论,不回改第 01 课契约。

做修改前先查看 git status 和 git diff,保留未提交工作。改变 RTL/testbench/SDC 后,先运行 scripts/run_sim.sh 的分频 1、3、25 全套测试,再运行 scripts/run_synth.sh。检查退出码、完成标记、映射单元、约束检查及网表。恢复基线时同样确认恢复后的验证结果。

results/、波形、日志和 .tools/ 不进入 Git。文档记录命令、版本、结果摘要及证据位置,不复制许可证、PDK 或教学库正文。传输使用普通 scp,并校验 SHA-256。

现有 tutorial.lib 是教学模型,不是流片 PDK。逻辑综合讲义和数字预算计算可立即完成。Innovus 可执行文件存在并不意味着配套的技术 LEF、单元 LEF、RC 数据和多角库已具备;缺这些数据时,第五阶段做计算与报告阅读练习,不能虚构布局布线结果。

RTL 仿真不等于形式等价;正 slack 不等于接口或流片签核。后续物理实验是否能通过,需要真实运行确认。

第一轮学习安排

先做 01–02,不修改 RTL。标注默认参数第一帧的八个采样点,解释首位提前有效和末尾 CS 保持。把答案写入实验记录,再与老师讨论。之后推进 03–06,用小范围错误注入检查自己是否理解电路与验证。

不要先背完 SystemVerilog 语法。每遇到一段 RTL,都先回答:它描述哪些寄存器?D 端由什么逻辑产生?在哪个时钟边沿更新?外部信号需要满足什么时序?