FPGA的验证(Verification)

逻辑验证
数字IT的流程规范如下图所示,在这里我们关心两个问题,一个是“Is what i specified what i wanted”,即设计验证(确认),另一个关心的问题就是“is what i implemented what i specified”,即实现验证FPGA的验证(Verification)
文章图片

一般来讲,验证的工作量较大,验证工程师的数量一般是RTL设计师的两倍。因此,现在我们也在研究如何减少验证工作量,下面提供三种方法。①验证并行化,多用并行处理。挖坑,使用多个工人同时挖。②验证抽象化,不需要关心底层的细节(不需要与0和1打交道),直接在事物级、总线周期级验证。这就好比用挖土机挖土,只需使用操作杆和踏板,而不需要直接与泥土打交道。③自动化,将某些验证过程自动化,比如挖浅钩机来自动挖浅钩,而不能用来挖大坑。
FPGA的验证(Verification)
文章图片

下图为恢复模型。Transformation为变换路径,比如将RTL编码转换为门级网表等。Verification为恢复路径(双向的),用于验证。在大型的集成项目设计中,一般不采用testbench验证,而是采用计算机辅助工程工具来辅助验证(专门的硬件语言)
【FPGA的验证(Verification)】FPGA的验证(Verification)
文章图片

功能仿真:黑盒法、白盒法、灰盒法。黑盒法不需要了解内部设计,只需要通过接口完成,但是对设计的可控性和可观测性不佳,不能对故障源精确定位。白盒法则是具有完全的可观性和可控性,常常用于SOC和系统级的设计,不适合运用于底层。灰盒法,在黑盒和白盒之间折中
FPGA的验证(Verification)
文章图片

形式验证:比较两种网表或RTL的等价性,此方法缺陷是无法排查两个描述的固有缺陷
FPGA的验证(Verification)
文章图片

模型检查:能达到百分百的覆盖率,检查RTL代码是否满足规范要求,将RTL代码转换为断言(Assertions),并证明。但一些功能的断言可能难以证明。
FPGA的验证(Verification)
文章图片

测试与验证的比较:测试是检验生成的网表与芯片的一致性(与制造相关),测试矢量指使芯片内部的物理节点发生从0到1的变化,测试的物理节点数和总的物理节点数之比称为测试覆盖率,测试矢量可通过ATPG软件产生。验证是确保功能正确
FPGA的验证(Verification)
文章图片

DFT(面向测试的设计),见下图

    推荐阅读