CHIP DESIGN · COURSE

嵌入式固件与软硬件协同设计

把软件可见 SoC 规格转成可复现固件与硬件证据。从一个生成契约定义寄存器副作用、地址映射、端序、屏障与原子责任;把芯片从复位向量带过 ROM、链接镜像、认证启动、栈、存储、时钟与早期诊断;建立无竞态或陈旧时期的驱动状态机、中断、超时、DMA 责任、缓存维护、IOMMU 拆除与恢复;用独立总线/状态预言机、软硬件覆盖、故障注入、仿真加速与长负载验证固件;实现生命周期感知安全启动、任意掉电下事务式 A/B 更新、回滚、调试与制造权限;认证制造固件、校准、标识、日志、性能、DVFS、看门狗与遥测;最后交付一版经独立审查、能启动、传输、诊断、更新、恢复,并准确说明哪些硅片结论仍不属于固件证据的发布。

本课程之前: 已完成计算机体系结构、RTL 设计、功能验证、SoC 集成与硬件安全、高级 SoC 验证、流片、EDA 自动化及 IP 认证。需要 C 或 Rust、汇编阅读、链接/构建基础、并发、缓存、虚拟内存、密码 API 概念与 Python/Shell 自动化。量产 ROM 签名密钥、专有调试器、仿真加速器、测试机访问、不可逆 OTP 与已制造硅片需要受控合法外部资源,本课程不提供。

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

寄存器是有时序协议端点,不只是地址

目标: 对“寄存器是有时序协议端点,不只是地址”,哪些冻结输入决定结果、首个可独立观察的结论是什么、哪项变更证明检查器确实有效?

字段可为读写、只读、写一清零/置位、读清、自动清除、粘滞、保留、影子、锁定、别名、原子、特权或硬件更新。 本节采用“构造最小可观察案例”路线。调用自动化前,先构造可手工检查实例:说明进入该步骤的状态、允许的转换、必须变化的观测,以及能够推翻结论的证据。从一个可执行源定义软件可见状态、访问语义、顺序、原子性、错误、复位、并发与生成工件。 把每种抽象连接回它所代表的物理结构或可执行证据,并说明该表示从哪里开始不再可靠。

“寄存器是有时序协议端点,不只是地址”具有可审契约:RTL、总线适配器、寄存器生成器、文档、头文件、固件访问器、验证模型、复位值、权限与副作用逐周期一致。 使用结果前要说明适用范围、身份、单位、条件、排除、阈值、证据来源、责任人与变更规则。 必须把控制流程成功与设计证据分开:进程可以返回零,却使用错误修订、跳过工作、复用陈旧输出、压掉违规或发布不完整工件。固件对写一清零状态字段执行读改写,意外清除第二个待处理事件。 学习者必须找到首个分歧并修复依赖,不能只是反复运行直到看板变绿。

RTL、总线适配器、寄存器生成器、文档、头文件、固件访问器、验证模型、复位值、权限与副作用逐周期一致。 该不变量只对具名候选与声明环境成立;任一输入变化都会使全部依赖结果失效,直至重建重新证明。

冻结案例“追踪两个待处理状态位、固件确认其中一位及同时发生的新硬件事件。”中的精确对象、条件、单位与源证据。 第一步冻结候选,并在阅读生成摘要前预测预期观测。

应用声明的物理或工程模型,展示每次转换,并保留失败值、缺失值及模型外状态。 第二步执行最小转换,保留原始标准输出、标准错误、退出状态、生成文件与资源使用。

把推导观测同“RTL、总线适配器、寄存器生成器、文档、头文件、固件访问器、验证模型、复位值、权限与副作用逐周期一致。”比较,并指出失效边界首先使哪个下游决策失效。 最后把观测与不变量核对,注入具名故障,并验证预期消费者拒绝损坏或陈旧状态。

追踪两个待处理状态位、固件确认其中一位及同时发生的新硬件事件。 阅读追踪前,先预测精确命令或状态转换、预期退出与工件状态、应首先响应的检查器及最小安全恢复。

  1. 冻结案例“追踪两个待处理状态位、固件确认其中一位及同时发生的新硬件事件。”中的精确对象、条件、单位与源证据。
  2. 应用声明的物理或工程模型,展示每次转换,并保留失败值、缺失值及模型外状态。
  3. 把推导观测同“RTL、总线适配器、寄存器生成器、文档、头文件、固件访问器、验证模型、复位值、权限与副作用逐周期一致。”比较,并指出失效边界首先使哪个下游决策失效。

结果: 访问器写入显式单比特掩码;另一位与新到事件按声明优先级保持待处理。 只有干净的第二次执行复现决定性工件,并且定向变更在预测边界失败后,才接受结果。