打造IC人才
科技生态圈

SoC的功能验证

发布时间:2022-12-22

来源:IC修真院

随着设计的进行,越接近最后的产品,修正一个设计缺陷的成本就会越高。


图片

不同设计阶段修正一个设计缺陷所需费用示意图

1.功能验证概述

在IC设计与制造领域,通常所说的验证(Verification)和测试(Test)是两种不同的事

验证

测试

功能验证

功能验证一般是指设计者通过各种方法比较设计完成的电路和设计文档规定的功能是否一致,保证逻辑设计的正确性。

通常不包括面积、功耗等硬件实现的性能检测。

SoC功能验证的挑战


图片

发展趋势

2.功能验证方法与验证规划


图片


仿真为基本出发点的功能验证方法

功能验证开发流程制订验证计划

验证开发


图片


功能验证开发流程

3.系统级功能验证

行为级功能验证

测试数据控制流,包括初始化和关闭I/O设备、验证软件功能、与外界的通信,等等

性能验证

通过性能验证可以使设计者清楚地知道整个系统的工作速度、功耗等性能方面的指标。

协议验证

根据总线协议对各个模块的接口部分进行验证

系统级的测试平台

系统级的测试平台标准


图片

4.仿真验证自动化

图片


激励的生成

可以快速、准确地产生大量的与实际应用一致的输入向量

检测到测试者没有想到的一些系统缺陷带约束的随机测试激励是指在产生随机测试向量时施加一定的约束,使所产生的随机测试向量满足一定的设计规则。

带约束的随机激励生成的例子

x1和x2为系统的两个输入,它们经过独热码编码器编码之后产生与被验证设计(DUV)直接相连的输入

输入约束:in[0] + in[1] + in[2] <= 1


图片


这样产生的随机向量就可以保证它们的合法性。

用SystemVerilog语言写的带约束随机激励生成例子

输入data的数量限制在1~1000

image

响应的检查


图片


覆盖率的检测

可细化为:

限状态机覆盖率(FSM Coverage)

表达式覆盖率(Expression Coverage)

交叉覆盖率(Cross Coverage)

断言覆盖率(Assertion Coverage)

用SystemVerilog语言写的覆盖率检测的例子

image

5.形式验证

形式验证(Formal Verification)

静态形式验证(Static Formal Verification)和半形式验证(Semi-Formal Verification)

相等性检查(Equivalent Check)

半形式验证(Semi-Formal Verification)

仿真和形式验证形结合,如混合模型检查(Model Checking)或属性检查(Property Checking)的方法。


图片


6.基于断言的验证

仿真验证面临的问题:可观测性和可控制性

采用断言描述设计的行为,在仿真时起到监控作用,当监控的属性出现错误时,立刻触发错误的产生,增加了设计在仿真时的可观测性问题。

也可以用在形式属性检查中作为要验证的属性。属性检查(Property Check)时,是对整个状态空间进行搜索,能够控制到每一个信号并能指出错误的具体位置,解决了设计验证时的可控制性和可观察性问题。


图片


验证实现所花费的时间与验证的质量

断言的作用


图片



图片


断言语言及工具的使用

断言语言

C or SystemC

SystemVerilog Assertion (SVA)

Property Specification Language (PSL) (IBM, based on Sugar)

Open Verification Library (OVL)

Verilog, VHDL

SVA(SystemVerilog Assertion)例子

用Verilog实现的检查器:

image

用SVA实现的检查器:

image

基于断言的验证

在属性检查中使用断言

在属性检查中,最重要的就是属性描述。


图片


在仿真中使用断言


图片

相关推荐:

初学者如何学习FPGA?一文为你讲解清楚

数字IC后端设计如何快速入门?(内附免费资料)

小白如何自学数字 IC 设计?

立即下载

推荐阅读

换一换