前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是Soc验证,一个简单的uart验证实例

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

作者头像
用户10108023
发布2022-10-28 16:08:52
8700
发布2022-10-28 16:08:52
举报
文章被收录于专栏:不二鱼的芯片验证记录

哈喽,我是不二鱼,感谢您的阅读。在上一篇文章中,我大概讲了什么是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验证工程师不二鱼,欢迎关注我。如果有疑问也可以在评论区留言或者私信我,如果觉得文章对你有帮助,麻烦给我点个赞鼓励一下,你的鼓励是我最大的动力,谢谢。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不二鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档