1、概述
验证方法的分支和其工具种类很多,我们要根据设计的特点选取不同的验证方法,最终达到要求。验证工程师需要选择合适方法和工具,来“保质高效低耗”地完成验证任务。
主要的验证方法分类:
· 动态仿真(dynamic simulation)
· 静态检查(formal check)
· 虚拟模型(virtual prototype)
· 硬件加速(hardware acceleration)
2.1、动态仿真(Dynamic Simulation)
动态仿真:通过生成测试序列和激励产生器给到DUT,伴随着仿真时间,判断输出是否符合预期,需要仿真器来完成这项工作。
业界主要的仿真器有:
· Cadence:NCSIM
· Synopsys:VCS
· Mentor:Modelsim/Qusta
按照激励生成方式:定向测试(directed test)、随机测试(random test)。
定向测试:根据验证计划,建立特定的验证环境以及相应的测试数据,对DUT进行特定的仿真测试,以检验该功能点是否以及被覆盖。
随机测试:在有限约束的条件下尽可能多地自动产生测试数据,来对DUT进行大批量的随机测试,这里的随机测试是指带有约束的随机。
按照检查结果和方式:参考模型检查(reference model check)、断言检查(assertion check)。
2.2、静态检查(Formal Check)
静态检查本身不需要仿真、波形激励,只需要通过工具的辅助,发现设计中存在的问题。
主要分为:
· 语法检查
· 语义检查
· 跨时钟检查
· 形式验证(等价检查、属性检查(模型检查))
语法检查:编译器检查语法错误,例如拼写、声明、引用、例化、连接等等。
语义检查:在设计可行性上做深入检查。
跨时钟检查:拥有多个时钟的硬件,跨时钟的逻辑通讯需要考虑同步问题。
形式验证:数学上完备的证明或验证电路的实现方案确实实现了电路设计所描述的功能。分为属性检查(PC)和等价检查(EC)
2.3、虚拟模型(virtual prototype)
虚拟模型即高抽象级的硬件模型,软件模型可依赖虚拟模型在早期开发、并且将反馈交给硬件设计。通过虚拟模型,硬件可以更早的获取软件反馈而对设计进行修改。
2.4、硬件加速(hardware acceleration)
动态仿真和静态检查随着SoC的设计体量越来越大,需要的时间越来越长。目前业界主要的硬件加速方式分为两种:FPGA和专用的模拟器(emulator),FPGA主要为软件开发提供平台,而模拟器为硬件和软件协同验证和整个系统的测试。