芯学长 | 掌握芯资讯,引领芯未来

您当前所在位置:首页 > 芯片设计 > 数字IC验证

一个在数字IC验证领域工作10+年的ICer验证随想

发布时间:2023-07-27来源:芯学长 0

图片
验证


和设计的关系


  

   为什么会最先想到这个问题,其实也比较好理解,做过芯片的同学普遍更熟悉设计,对验证了解的都很少。在很多小公司,其实对验证的重视都不太高,基本上就是在FPGA上跑跑常见的应用场景,没啥问题也就交差了。当然也不能说这样做是不行的,因为在很多公司设计的芯片规模也不大,场景也不复杂,而且也没有那么多人投入专门的验证,基本上设计和验证都一个人干。


   随着芯片的规模越来越大,复杂度也越来越高,基本上已经不太不可能通过构造常见应用场景就可以验证充分了,并且也不可能设计和验证一个人干完了。因此设计和验证是同等重要,并不会因为不重视,这个规律就消失掉。在大厂里面设计人员和验证人员的配比,都要超过1:1,就是一个设计人员,至少要有一个验证人员对应。设计和验证是一体的,没有说谁更重要,大家一起对某个模块,某个子系统,某个系统负责,挨板子一起挨。


image


   设计和验证的工作内容会有一些差异,设计工程师是根据模块规格编写RTL,追求的是功能正确下的PPA,验证工程师就是要检查RTL实现是否符合规格。


验证


是不是就是EDA验证


   提到数字芯片前端验证,大家容易听到如下几个观点:

  1. 验证就是UVM搭环境,编写用例,覆盖率100%。

  2. 把环境搭好,验证就差不多了。

  3. 验证就是越随机越好。

  4. 验证就是把RTL代码验证充分就可以了。

   上面这些观点显然是对前端验证误解了,这些观点都是片面的。

image


   前端验证肯定不仅仅就是EDA仿真,并且EDA仿真也不仅仅就是搭个验证环境,搭个验证环境也不一定是越随机越好。

EDA仿真,就是利用EDA仿真工具,对RTL进行功能验证。比如VCS,Modelsim等工具。



数字芯片前端验证目标

   验证目标并不是把RTL代码验证充分了,而是检查RTL实现和功能规格是否一致,这就是测试点。

  

  测试点是验证人员的验证规格,我们的目标就是确保测试点是完备的,和功能规格是一致,并且RTL实现也是一致的。请一定要记住我们的目标,是验证工程师的根本出发点,所有的工作都围绕这个事情来展开的,如果没有这个认识,那我们是不可能做好验证的。如何分解测试点,这里是有方法学的,也是一个系统性的工程,将在后面的文章中重点讲。



    数字芯片前端验证方法


       前端验证方法,也就是我们在前端验证的时候会用什么手段。验证方法很多,肯定不是UVM/VMM这种EDA验证方法学,常见的方法如下:


    01
    EDA仿真

       这个是前端验证最重要的方法,投入的时间和人力也是最多的。在项目早期就开始了,整体流程有:规格理解,测试点分解,验证方案,验证环境搭建,编写测试用例,收集覆盖率。EDA效率是比较好的,对质量也是第一层的保证,并且是最重要的保证。


       EDA仿真按照验证的设计规模大小,又会分为模块验证,集成验证,子系统验证,系统验证。规模越小的验证,效率和质量都是最好的。因为规模大了,仿真的效率就会很低,所以在大系统上跑一条用例就会花上大半天,甚至一天。因此有些用例就要原型验证来帮忙测试。


       EDA仿真不仅可以验证verilog代码,也可以验证网表,这就是经常说的前仿和后仿。


       后仿就是在RTL综合成网表后,我们用带SDF时序文件的网表进行仿真,环境和激励可以重用前仿的。有人可能会问,RTL转成网表后不是做了formality检查吗,为啥还要做后仿?其实后仿真的唯一目的就是检查异步时序,看是否存在时序违例,出现X态传播。

    02
    formal验证

       这是近年来逐渐起来的一个验证方法,目前还算小众。在后端流程中有一个formality工具,和formal验证,其实是属于同一个祖宗,都是静态验证,但方向和算法不同


      静态验证有个好处,就是不用写激励了,工具会自动遍历所有的输入组合。

      

       formality是检查两个寄存器之间的逻辑要等价,一般是RTL和网表进行比对。formal验证是做功能验证,是modeling check。它和EDA仿真一样也是早期就可以用的。

    03
    原型验证

       这个方法就是我们常说的FPGA验证,当然如果有条件的公司还可以加上emulator验证。


       EMU验证其实就是把多块Fpga集成在一起形成了更大的FPGA资源容量,这样就可以把整个系统放下,而不用做裁剪。当然如果设计规模小,直接用一般的Fpga验证就可以。

      

       从上面的介绍可以看到,前端验证方法很多,要根据具体设计来规划验证方案,最终达到高效率高质量。同时在这些验证验证环节中,UVM搭建验证环境只是所有验证工作中占比极小的一个工作。

    图片


    • 1

        数字芯片前端验证技能


           很多人对验证有误解,以为验证的门槛低,要求没有那么高,很容易上手,谁都可以来做。那通过前面这些介绍,我想大家都不会觉得验证的要求低了。一个好的验证工程师,一定是要能很好的理解RTL代码,对RTL的理解程度不亚于设计人员,只有这样才能做好验证。


           验证的技能范围是非常广的,不同的岗位要求都是不同的。我们就以EDA仿真为例,简单进行说明:

        1. 对数字电路的掌握不能低于设计人员。

        2. 要掌握验证的基本技能,比如UVM,SV,验证理论等

        3. 脚本编写

        4. 业务的掌握


           我们做验证不能只是做黑盒验证,验证工程师必须要能掌握RTL代码,同时还要掌握具体的业务,这里的业务不是验证的基本技能,而是真实的业务场景。所以对验证工程师提出的要求是很高的。我们再后面的文章中也会不断强化这些内容。


        验证


        小结


          

           从我的角度来讲,系统的了解验证对一个刚入行的人来说是非常重要的,只有把知识体系框架搭建起来了,后面具体的知识点或者技术点,随时都可以补上。这里再总结一下如下几点,希望大家能有正确的认识:


        1. 数字芯片验证不仅仅只有EDA仿真验证;

        2. EDA仿真也不仅仅就是UVM,而是要检查每个测试点的功能是否实现正确;

        3. 设计和验证同等重要,大家一起对这个逻辑功能的正确性负责;

        4. 验证要求的技能和设计是一样的,甚至比设计的要求还广。


           今天开了一个头,让我们从现在开始,一起成长为一个优秀的验证工程师。

        【免责声明】:本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。

        原文标题:
        一个在数字芯片验证领域工作10+年的ICer验证随想
        文章来源:
        https://mp.weixin.qq.com/s/r49HDvLphrgcD7xqxv6wUQ

        文章评价

        -   全部 0 条 我要点评

        有疑惑?
        在线客服帮您
        029-81122100

        立即咨询 >