主要的验证方法包括:
 动态仿真(dynamic simulation);
 静态检查(formal check);
 虚拟模型(virtual prototype);
 硬件加速(hardware acceleration);
 电源功耗(power consumption);
 性能评估(performance evaluation)。

动态仿真

通过测试序列和激励生成器给入待验设计适当的激励,随着仿真进程的推进,判断输出是否符合预期。简而言之,我们需要仿真器来配合这一项工作,验证人员也需要查看比较结果和仿真波形,最终判定测试用例是否通过。按激励生成方式和检查方式,可以将动态仿真进一步划分为:
 定向测试(directed test);
 随机测试(random test);
 参考模型检查(reference model check);
 断言检查(assertion check)。

定向测试(directed test)

定向测试指的是激励内容在仿真之前已经决定下来,测试用例给出的激励序列不会在下一次提交任务时改变。
定向测试最终的数据比较分为两种情况:
 通过内置的 C 代码进行数据正确性检查;
 通过外置的参考模型或者其他检查器来进行信号一致性检查

2024-07-05T03:33:39.png
2024-07-05T03:33:39.png

随机测试

随机序列通过预先定义的约束,每次随机产生合理的数值,通过激励产生器给出测试序列。

2024-07-05T03:35:32.png
2024-07-05T03:35:32.png

断言检查

需要检查各种可能的行为是否符合预期。断言(assertion)提供了这样的特性,它善于针对某一特定的逻辑或时序进行预设,一旦设计的实际行为不符合断言的描述,则给出检查报告。
应用场景:
 集成连接。例如,片上网络多个发起端和目标端之间的访问路径检查,或者系统集成
中各个模块之间的连接关系。
 总线协议。针对工业标准总线,有商业验证 IP 可以协助验证设计是否按照总线协议
实施。
 仲裁机制。仲裁机制中的各种模式通过检查来保证仲裁执行的合理。
 数据一致性。对于存储单元,数据的一致性检查可以通过检查端口读写来预期数据的
一致性。
 数据进出。对于队列设计,也可以建立模型来检查断言。
 状态机。检查状态机的跳转是否正常。
 输入限定。基于假设的输入限定可以通过断言来判断输入是否符合预期,这对错误源
排查也有帮助。
 自定义断言。用来检查各个设计的细节,通常这些细节属于设计人员和验证人员关注
的功能焦点。

2024-07-05T03:38:57.png
2024-07-05T03:38:57.png

静态检查

 语法检查(syntax check);
 语义检查(linting check);
 跨时钟域检查(CDC,Cross-clock Domain Check);
 形式验证(formal verification)。