什么是Soc验证,一个简单的uart验证实例

2022-10-28 16:08:52 浏览数 (1)

哈喽,我是不二鱼,感谢您的阅读。在上一篇文章中,我大概讲了什么是Soc,没看的朋友可以点开链接阅读一下。

什么是SOC?

其实很多人都讲过这些内容,我的出发点是从我理解的角度去讲,不会很学术风,可能也不够专业,尽量通俗易懂,我也一直在学习,讲的不对的地方也欢迎批评指正,相互学习,下面正篇开始。

下面这款芯片是华为的麒麟990,7nm工艺的5GSoc芯片,性能强悍,Soc芯片的应用是很广泛的。在这款芯片批量生产之前,会进行小批量的流片(tape out ),当性能满足要求的情况下,才会批量生产。大概的流程就是前端设计→前端验证→后端→fab厂(下次再仔细谈全流程)。流片的费用很昂贵,试错的代价太高了,一个小小的失误可能会葬送一家公司,但是庞大的SOC芯片,难免会各种各样的疏漏,这也是为什么需要验证的原因。IC验证人员的存在大大降低了流片失败的风险,这也是我们存在的意义。换句话说,IC验证人员是相当于测试员的,只是很多测试员测试的是实体,而我们测试的是代码。

不,我们不是测试员,我们是IC验证工程师,哈哈。那Soc验证,顾名思义就是验证Soc芯片。上篇文章讲了Soc的基本组成,我自己手画了一个丑图,原谅我不拘一格的画法,哈哈哈。一般来说,对于刚入行的新人,会从低速模块开始,会负责其中的一个小模块。你的大概工作内容就是,看协议,提取功能点,根据功能点造case。低速模块的协议都不会太长,也不会太复杂,从协议中了解这个模块的功能特点,然后根据功能点编写验证的case,一般带core的验证使用C语言会比较方便。这个协议我们称为为databook,和原本的协议还是有一些区别,因为这些模块是IP公司根据协议编写的,相当于一个化理论为实践的过程。

一个不太完整的SOC,哈哈

举个简单的验证的例子,比如验证uart的写功能,如果只有一个uart的情况下,我们可以使用loopback(环回)功能。如果你了解过UART的协议就知道,uart只有两根数据线,TX和RX,将它们俩对接,即可以完成数据的流转。使用C语言,通过core对Uart的寄存器进行配置,比如初始化,打开loopback功能,然后就是往uart的数据buff中写入数据。配置信息和数据,通过AXI总线到APB总线,再到UART,通过TX端口再到RX端口,我们可以通过观察这几个地方的数据波形,来判断我们的数据是否正常,如果正常,则表明写功能是没有问题的,如果某个点没有数据,那就往回溯源,找出数据在哪里断了,一直追波形,直到找出问题所在,有可能是模块内部的问题,逻辑错误,也有可能是连接错误,这就要验证人员抽丝剥茧去找问题了。往往经验丰富的验证人员,很快就能找到问题的症结所在。

一个模块的验证比我描述的复杂很多,这里也是讲个大概,隐去了很多细节。越复杂的模块验证的过程也会越复杂,如果是验证公司自己从零写的IP,那就更加复杂了。验证的工作比较繁琐,转行的朋友也要有心理准备。

我是IC验证工程师不二鱼,欢迎关注我。如果有疑问也可以在评论区留言或者私信我,如果觉得文章对你有帮助,麻烦给我点个赞鼓励一下,你的鼓励是我最大的动力,谢谢。

0 人点赞