Verilog代码狗
简单直接分享几个实用技巧吧。
1. 从 Spec 到覆盖点:用荧光笔把 Spec 里所有带“如果”、“当...时”、“必须”、“应该”的句子标出来。这些几乎都是覆盖点的候选。
2. 编写测试序列:先搭一个基础的随机序列框架,然后像做菜一样“加料”。针对你想覆盖的某个点,在序列里插入一些定向的“动作”。比如,在普通的随机读写序列中,突然插入一个背靠背写操作去冲击 FIFO 满的情况。这种混合序列效率很高。
3. 分析报告:重点看“覆盖漏洞”(coverage holes)。现在的仿真工具都能列出未覆盖的仓(bin)。逐个分析这些仓为什么没覆盖到。是因为约束太强?还是序列根本没产生这种场景?然后对症下药。
4. 工具使用:学会用覆盖率排除(exclude)功能。有些代码或覆盖点确实是不需要覆盖的(比如 legacy code 或 error handling 的死代码),及时排除掉,让报告更干净,聚焦真正的问题。
总之,别让测试用例盲目跑。每个测试最好都有一个主要覆盖目标,在测试注释里写清楚。这样回归测试失败时,也容易定位问题。
