4. 能力等级与过程属性
说实话,我见过太多检查表了。有的厚得像本字典,有的又简单到只有几个勾选框。但真正“好用”的检查表,其实不多。
我个人习惯是,拿到一份检查表,先看它的检查项描述。如果描述模糊,比如“检查文档是否完整”——这种表基本就是废纸。为什么?因为不同的人对“完整”的理解可能天差地别。
今天我们就聊聊,怎么设计一份真正能用的检查表。核心就一句话:检查项的描述要具体、可验证。
4.1 为什么“具体”这么重要?
我在项目中遇到过这么一件事。有一次做设计评审,检查表上写着“检查时钟方案是否合理”。结果呢?评审会上大家吵了半小时,有人说“合理”,有人说“不合理”。最后发现,大家对“合理”的定义完全不一样。
你看,这就是问题所在。模糊的描述会导致:
- 执行标准不统一——张三觉得行,李四觉得不行
- 检查结果不可复现——今天查和明天查,结果可能不同
- 无法追溯责任——出了问题,谁也说不上来当初是怎么查的
核心原则:检查项的描述,要让一个刚入职的新人,拿着表就能知道该查什么、怎么查、查到什么程度算通过。
4.2 检查项描述的“三要素”
我总结了一个小方法,叫“三要素法”。每次写检查项,都问自己三个问题:
| 要素 | 说明 | 反面例子 | 正面例子 |
|---|---|---|---|
| 检查对象 | 查什么?哪个文档、哪个模块、哪个参数? | 检查设计文档 | 检查《时钟树设计文档》第3.2节“时钟源选择” |
| 检查标准 | 查到什么程度算合格?有没有量化指标? | 时序要满足要求 | 所有建立时间裕量 ≥ 50ps,保持时间裕量 ≥ 30ps |
| 检查方法 | 怎么查?用什么工具?看哪份报告? | 验证功能正确 | 运行仿真用例 tc_clk_001,检查波形中 clk_div 信号上升沿与参考时钟对齐 |
嗯,说白了,就是让检查项变成一道“填空题”或者“判断题”,而不是“作文题”。
4.3 常见“坑”与避坑指南
这些年我踩过不少坑,也帮别人填过不少坑。下面这几个是最常见的:
坑1:使用“适当”、“合理”、“充分”等主观词汇
我曾经见过一份检查表,写着“测试覆盖率应充分”。结果项目组吵了一周,也没吵清楚什么叫“充分”。
避坑:把主观词换成客观指标。比如“代码行覆盖率 ≥ 90%,分支覆盖率 ≥ 85%”。
坑2:检查项太长,包含多个检查点
比如“检查电源方案是否满足功耗要求,且散热设计是否合理,同时还要考虑成本”。这种一条顶三条的写法,最容易漏查。
避坑:一条检查项只查一件事。拆成三条:
- 检查电源方案是否满足峰值功耗要求
- 检查散热设计是否满足结温 ≤ 85°C
- 检查电源方案成本是否在预算范围内
坑3:只写“查什么”,不写“怎么查”
“检查复位信号时序”——然后呢?看哪个波形?量哪个时间点?新手根本无从下手。
避坑:给出具体的检查步骤或工具命令。比如:
检查步骤:
1. 打开 PrimeTime,加载 post-layout 网表
2. 运行 report_timing -to [get_pins *rst_n_reg*/D]
3. 确认 recovery time ≥ 100ps,removal time ≥ 100ps
4.4 检查表设计的“好”与“不好”对比
咱们直接看例子。同样是检查“时钟模块”,两种写法差距有多大:
| ❌ 不好的写法 | ✅ 好的写法 |
|---|---|
| 检查时钟频率是否正确 | 检查 PLL 输出频率:配置寄存器 0x04=0x2A 时,CLK_OUT 引脚实测频率为 100MHz ± 1% |
| 检查时钟抖动是否满足要求 | 检查 100MHz 时钟的周期抖动:使用频谱分析仪测量 10,000 个周期,峰峰值 ≤ 50ps |
| 检查时钟门控是否合理 | 检查时钟门控单元 ICG_X100 的使能信号 EN 是否在时钟低电平期间变化(参考波形图 Figure 5-3) |
| 检查复位是否正常 | 检查上电复位时序:VDD 上升到 90% 后,RST_N 保持低电平至少 10ms,然后释放为高电平 |
你看,好的写法就像一份“操作说明书”。任何人拿到手,照着做就能得出同样的结论。
4.5 检查表设计的核心流程
下面这张图,是我自己一直在用的检查表设计流程。每次做新项目的检查表,我都会走一遍:
4.6 一个完整的检查表示例
最后,我给大家看一个我实际用过的检查表片段。这是某次芯片设计评审中,关于“时钟树综合”部分的检查项:
| 编号 | 检查项 | 检查方法 | 结果 |
|---|---|---|---|
| CLK-001 | 确认所有时钟源(PLL、OSC、外部时钟)的输入频率在数据手册规定的范围内 | 查看原理图,核对各时钟源型号,确认其输出频率规格 | □ 通过 □ 不通过 |
| CLK-002 | 确认时钟树的最大 skew ≤ 200ps(在 slow 工艺角、85°C 条件下) | 运行 PrimeTime:report_clock_skew -type global | □ 通过 □ 不通过 |
| CLK-003 | 确认每个时钟门控单元的使能信号在时钟低电平期间稳定 | 查看仿真波形:检查 ICG 的 EN 信号在 CLK 为低时是否无毛刺 | □ 通过 □ 不通过 |
| CLK-004 | 确认异步时钟域之间的同步器已正确插入(至少 2 级触发器) | 检查 CDC 报告,确认所有跨时钟域路径都有同步器 | □ 通过 □ 不通过 |
小技巧:我习惯在检查表最后加一列“备注”,用来记录检查过程中发现的异常或需要后续跟进的事项。这样检查表本身就成了一个很好的问题追踪工具。
好了,关于检查表的设计技巧,今天就聊到这儿。记住一句话:好的检查表,是让不同的人做同一件事,得到同样的结果。下次设计检查表的时候,不妨试试我说的“三要素法”,你会发现,检查表真的能“好用”起来。