【验证技能】验证质量活动及其执行注意事项
验证策略评审:
重点在:DUT 的验证重难点在哪里?怎么保证芯片或者IP的正确性;
协议类IP重点在协议符合度上;SOC重点在各个IP配合是否正确;数模IP重点在模拟性能是否达标;
测试点评审:
完备性,某个功能点,激励怎么构造,需要配置什么,怎么检查,用什么检查,用什么覆盖;
测试点中FCOV空间规划的合理不合理,边界点附近有没有覆盖到;
验证方案评审:
环境是否够打出测试点中需要的激励;checker是否能满足验证DUT正确性的要求;checker的实现方案是否可行正确;
冒烟用例评审:
前仿真EDA仿真报告评审:
重点是用了什么版本的RTL、用的那个版本的EDA环境,最终用例回归结果情况,最终功能覆盖率覆盖情况,代码覆盖率情况,BUG 处理情况;
后仿真EDA仿真报告评审:
在于最终仿真的网表版本是否正确,因为前后会有不同的网表,如DFT网表、PR网表,不同网表中时序满足情况不同;
搭建的后仿真环境是否正确,比如input延时是否提供正确;用例仿真结果如何,有没有报时序违例,报的时序违例要与设计同事后端同事确认,这个违例符不符合预期,对电路的影响是什么?
RTL代码检视:
信号连接是否正确、功能实现是否正确、宏使用是否正确、参数化赋值是否正确;
EDA验证环境检视:
修改点、信号的连接、参数化使用是否正确、宏定义是否正确、用例回归结果、
文档归档确认:
RTL交付版本、网表交付版本、EDA验证环境版本均要上库,然后由1人,在其他目录下将环境和代码下载下来,进行回归仿真一遍,保证保存的版本号内容是正确的。
1) 专项验证(寄存器、中断、时钟复位、RAM、DFX、Function Mbist等等);
2) Bug review, 错误案例分析;
进行举一反三,看有没有类似的问题出现在其他地方而目前仍未发现;看看出现的这些bug的原因是什么,是什么让其引入bug的,验证中用什么办法可以将其拦截,而不留到样测时;
3) 波形确认;
对重难点波形进行确认,对接口行为进行确认,对改动点波形进行确认;并截图,保存文档,进行备份(RTL交付、网表交付、EDA验证环境均要有版本号,方便芯片样品实测时进行EDA问题复现);
4) 验证发散,比如随机约束放开;
尤其是上下游模块进行联合仿真时,往往按照预设的先后顺序进行仿真,一般不会出错,但是正在的出错就是在某次一起工作结束后,再次启动配合工作,此时上下游模块中某些信号或某些模块会保持特殊的值或状态,此时可能上下游模块配合就容易出问题。
5) 不常见的组合分析;
6) 修改点、影响点、耦合点分析;
对于小修小改的版本,往往重点放在改动点上,看改动点会影响那些功能,和什么有耦合;
7) 代码、文档一致性检查;
对于设计代码来说,可能协议或者规格书上对某个功能的具体特性支持的能力值,由于
8) 上下游配合检视;
波形检视;
9) FPGA测试检视;
FPGA测试一般会降频进行功能正确性测试,对于复杂的模块;
10) 验证代码检视(约束、配置、接口、coverage、断言、force、TC等);
11) Corner点确认;
12) End_of_check(case执行完毕,检查所有中断和状态寄存器符合预期);
大多数用例都要使能End_of_sim_check,对中断和状态寄存器进行判断,不能说某个功能下会出现中断和状态寄存器错误。
13) 初始化流程检查;
真正的完全按照初始化流程进行一次操作仿真,看这个流程是否正确。在某些子模块功能验证时为了仿真效率高,速度快,有时候会将初始化流程简化掉,或者通过后门的方式配置了,这个也是可以的。但是完整的流程仿真一次是必不可少的。
14) 异步、最小时钟、最大复位;
15) 遍历测试;
16) 环回测试;
17) 低功耗验证分析;
18) 文档、寄存器反标;
协议反标:把协议挨着看一遍,与实现进行对应,与测试点进行一一对应,保证协议中提到的要求都对应的实现了,并且对应的验证了,避免出现漏实现或漏验证,或者实现错误或错误验证;
设计文档反标:
19) 粘连检视(时钟、复位、数据、告警、中断、配置等);
20) 等效、等价类;
21) 设计、验证差异性检视(杜绝设计验证代码实现一致);
22) 头脑风暴。