IP、FPGA、SOC和CPU验证都在做什么?一文讲清楚!

科技   2024-11-01 12:02   北京  

最近看到行业群里面经常有人问CPU怎么验证,还有问SOC验证在做什么,今天和大家简要介绍下IP,FPGA,SOC和CPU验证。
一般一个芯片的团队组成由以下几个部门组成,Architecture部门,IP designer部门,IP DV部门,Analog 部门,SOC integrator部门,SOC DV部门,DFT部门,PD部门,Firmware部门。比较大点的公司还有CPU部门,CPU DV部门。如果把Firmware部门负责的FPGA验证算在内,验证(DV)在一个芯片设计公司里面占据很大一部分。
首先介绍IP验证。IP是英文IntellectualProperty的缩写。芯片行业将芯片设计工程师开发出的功能模块作为一种知识产权。我们可以理解IP为实现某些功能的模块,比如AXI,AHB,USB,PCIE,DDR等。IP验证工程师主要保证这些功能模块正常工作。IP验证工程师采用的验证方法主要有UVM验证,Formal验证,当然也可能用到C。一个典型的验证模型一般如下图所示
IP验证又可以分为算法类验证和协议类验证,采用的验证方法大同小异。目前来讲还是以覆盖率(coverage)收敛为导向。IP验证工程师主要做得事情有:
a.  读spec,列测试计划(testplan)
b.  设计验证环境架构,搭建验证环境
c.  根据测试计划,设计测试用例
d.  收集code coverage 和function coverage

e.  测试IP性能

以上五点是IP验证工程师的主要工作内容,有些公司也会让IP验证工程师参与功耗的测试,FPGA验证,以及SOC验证中。
FPGA验证是指将设计综合成bitfile 烧录到FPGA平台进行测试的过程。FPGA验证的工作主要是Firmware部门主导完成。在成熟的流程里面FPGA验证甚至都可以不用,理论上FPGA能验到的问题通过IP DV都能验到。FPGA的缺点是debug起来非常麻烦,但是由于FPGA跑起来非常快,FPGA相较于IPDV 更侧重于高频次的压力测试,即对某一场景或者很多种场景重复很多次的测试。
很多公司希望能够获得FPGA的仿真速度又可以直观的拉波形进行debug。已有的解决方法有研发硬件加速器,以Cadence的Palladium和Synopsis 的ZEBU为代表。还有通过云计算加速仿真速度,目前国内有创业公司在做这方面研究。此外国外有公司将FPGA和动态仿真进行结合,如Smart DV SimXL。相关知识如果有想了解可以在网上搜索,这里不展开讨论。

图片来源:Smart DV
SOC验证主要做什么呢?SOC是System On Chip的缩写,SOC验证工程师验证对象为整个芯片的设计,是保证整颗芯片功能正常运行的重要工作岗位。SOC的验证更侧重于系统级连线,电源管理,多个模块(核)协同工作以及系统级的性能测试等。有时候SOC DV也会配合Firmware部门做一些软件的debug。

图片来源:百度百科
SOC验证的手段主要是通过编写C/asm软件代码来完成一系列测试用例,然后通过调用工具链将C/asm代码编译成二进制的文件放在RAM/flash里面,通过CPU读取RAM/flash里面的资料执行相关指令去驱动对外设内存等控制。整个的过程就在模拟一个芯片的实际运行。其工作包括以下内容:
a.  罗列测试计划
b.  Bootrom的测试
c.  各个IP在SOC上集成的测试
d.  总线互连的测试
e.  各种时钟和复位测试(时钟开关/调频,软硬件复位等)
f.  电源管理测试
g.  性能测试
h.  功耗测试(如PTPX)
i.  电源连接性相关测试(UPF/CPF测试)
j.  网表功能测试(Postsim)

k.  覆盖率的收集

SOC验证除了用C去完成,有些也会用到UVM和Formal。当芯片超过2000万门时可能还会让SOC验证工程师跑emulation,就是上面提到的采用ZEBU或者Palladium验证整颗芯片的功能和性能。
CPU验证对大部分人比较陌生,主要是因为自己开发CPU的公司比较少。目前RISCV发展迅速,很多公司将自己集成在SOC的功能用拓展指令去控制,因此会对CPU进行改动,未来对CPU验证需求可能会变多。CPU验证的方法学和IP验证稍有不一样,其主要验证手段有通过软件自测,用随机指令产生器(ISG)结合指令仿真器(ISS)进行验证和用Formal进行验证。
软件自测是通过程序自己运行然后与正确的结果进行比对进行检测,比如运行一个乘法运算时,程序将CPU的计算的结果与预存的结果进行比对。
运用ISG和ISS的测试是通过ISG产生随机指令,然后将随机的指令程序给CPU执行,同时将该份程序给ISS执行,最后通过CPU执行产生的跟踪文件(trace log )和ISS执行的跟踪文件比对判断CPU执行的指令是否正常。其验证框架一般如下:

图片来源:openhw网站
目前ISG用的比较经典的是google的ISG,也有公司用UVM自己实现ISG。如果要自己拓展RISCV的指令集,ISS和ISG都需要自己去开发。

以上是本文的全部内容。同样在文章的结束送给大家一个福利,关注公众号回复”验证”可获得一份CPU验证相关的资料。感谢大家关注!


END

来源:处芯积律


版权归原作者所有,如有侵权,请联系删除


推荐阅读

遇到一位被国产MCU伤透了心的老板

稚晖君的机器人开源了,含全套图纸+代码

美国民兵III型核导弹制导系统和计算机内部欣赏


→点关注,不迷路←
嵌入式微处理器
关注嵌入式相关技术和资讯,你想知道的都在这里。
 最新文章