uvm 形式验证_IC设计职位详解之“数字验证工程师”就业必学课程

  数字验证处于数字IC设计流程的前端,属于数字IC设计类岗位的一种。在IC设计中,数字验证所占的人数比重是非常多的,很多大公司,数字前端设计工程师与验证工程师的比例已经达到1:3。

  数字验证主要分成几种层次的验证:IP level, unitlevel,fullchip/SoC level, gatelevellevel,硬件加速仿真等。

1051e2fc0dcb217796fe47518e248370.png

  一、数字验证工程师主要干什么?

 1. 阅读各种SPEC

  最重要的一份spec是design spec,就是和你一起合作的好基友设计工程师写的设计文档,比如下面这种:UART IP Core Specification

  其中需要重点了解的是:

fetures:这个模块需要支持的性能列表。

  IO ports:这个模块对外的IO端口。

  operation mode:这个模块的主要工作模式。

  除了这份详细的设计文档之外,如果这个IP需要用到很多协议,那你自然还要去阅读一些协议文档咯,比如AMBA总线协议,MIPI协议,DDR协议等。

2. 撰写verification spec

  公司里面,工程师做事情之前都需要出一份详细的文档,验证工程师也不例外,你要出的文档叫做verification spec,其中主要的内容包括:

  验证平台架构:以UVM验证平台为例。

  现在IC行业内,很多公司的验证环境都不尽相同,比如有纯C/C++的环境,有纯UVM的环境,有UVM+C++的环境,甚至还有systemc的环境。总的来说,现在的趋势都是在往UVM的验证环境上转。

  测试用例(test plan)

  test plan的出炉是一个高质量的工作,因为它决定了你验证的工作量,最重要是它决定了你验证的完整度。验证工程师的终极目标就是:覆盖所有的情况,不放过任何一个bug。

  这份东西需要你和designer反复的详细讨论,在后面的过程中,还需要进一步的优化补充这份文档。

3. 码代码,搭建验证环境

  verification spec完成之后,接下来就要开始码代码了,使用各种验证语言去搭建验证环境,常用的验证语言有C/C++,systemC,systemverilog。

4. 创建test cases

  根据前面完成的详细test plan去创建验证需要用的test cases,每家公司对test cases的命名有一定规则,比如长这样的:

0caacfe2ff82a825965b57a4faa820d0.png

  有些公司就直接用数字来给test cases命名。

  还有些公司,直接用脚本来生成test cases,只要把关键的一些设置调好,用脚本一刷,case就全部生成了。

  当然每种创建cases的方法各有优缺点,你进去公司之后,也只能入乡随俗。

5. debug

  验证环境和测试用例都搭建好了,下一步重点就是仿真和debug了。前面搭环境的时间其实大概只占20%,debug才是最花时间的。

  仿真所用到的工具主要有:

  mentor:questasim

  cadence:NC-sim

  synopsys:VCS

  几款工具一个比一个好,当然价格也是一个比一个贵。工欲善其事必先利其器,要想提高你的仿真和debug效率,工具里面好的功能也要好好研究下的。

  debug主要目的是寻找RTL的bug,当然前面搭建的验证平台也会存在很多bug,最终的目标就是所有的test cases都能完全仿真通过。

  最主要的debug手段有:

查看log文件:仿真结束会生成很多结果文件。

  看波形:最常用工具就是verdi了。

  每家公司对于验证工程师debug的要求不尽相同,比如AMD,就要求验证工程师能找到最终的root cause,而大多数公司只要求验证工程师能基本定位,然后designer去详细debug。

6. regression和coverage

  到了项目的后期,所有的case都pass过了,并且比较稳定了,下一步就要开始跑regression和coverage了。

  所谓regression就是把所有的case同时跑一遍,因为大多数case里面会有很多random的机制,所以在不断重跑的过程中,会随机性的出现case fail。这也是regression的主要目的,就是抓出那些极端情况下出现的debug。

  coverage主要包括code coverage和function coverage等,每家公司的要求都不尽相同。

  每家公司跑regression和coverage都会使用脚本来完成,怎么高效顺利跑完,是最关键的问题,最终的结果一般会以网页的形式呈现,直观明了。

7. support

  前面属于验证工程师的常规任务差不多就完成了,support属于进阶版的。比如项目用的database出问题了,跑仿真用的flow碰到问题了,经常就会叫验证工程师去support,帮忙解决问题。

  当然搞不定也无所谓,但是如果你经常能帮同事搞定这些问题,那你在公司的地位就能与日俱增,升职加薪就更有筹码了。

8. meeting

  作为验证工程师,和其他工程师一样,经常还有无穷无尽的会议要开,各种review,各种讨论。

  如果你作为会议组织者,请记得事先做好充分的准备噢,不然很容易被人鄙视的。

  所以总结来说,最主要做的两件重要的事情是:编程、debug

二、数字验证主要打交道的人有哪些?

  1.验证工程师打交道最多的就是前端设计工程师(RTL设计工程师),一起讨论问题,经常一起debugcase,目的就是让写的verilog代码没有bug。

  2.还经常需要和架构工程师打交道,去了解更多芯片的整体架构和features;

  3.如果你也负责后仿gatelevelsimulation的话,那还经常需要和后端工程师打交道,因为后仿的网表是他提供给你的;

  4.DFT工程师经常也会来找你,因为他也需要做测试和验证,很多时候他的验证平台经常就是从你的验证平台移植过去的;

  5.FPGA工程师也经常会打交道,因为FPGA验证也是数字验证的一种,你们会复用很多的测试用例,他也会经常来找你复现一些错误现场。

  当然,如果你是在一家大公司的话,分工就非常明确,你也就不需要和这么多人打交道了,比如如果你只负责IP level的验证,那基本只要和前端设计工程师打交道就可以了。

三、数字验证需要掌握的技能和条件。

  现阶段由于数字验证的平台有很多种,主要的平台有:

纯verilog平台、SystemC、纯C/C++(CPU验证)、纯UVM平台、UVM+C/C++平台、其他语言混合平台(Matlab等)

  每种平台需要你掌握的技能不大一样,但比较主流的平台是3、4、5三种。一个初级工程师想全部掌握这些技能也很难,如果这些平台你都搭过,就变成老司机了。

  由于验证工程师需要编程,所以掌握编程语言也是必须的,比如掌握下面知识就显得比较重要:

Verilog、 C/C++、 Systemverilog、 UVM

  另外,验证工程师经常需要流程的自动化,所以一些脚本语言也是必须的:

Shell、 Makefile、 Perl、 Python

  除了这些外,熟悉一些协议和架构,也是有很大帮助的,比如:

ARM架构、 AXI/AHB协议、 MIPI协议、 DDR协议等等

  所有的技术类岗位,主要看的两点就是:专业技能(skills)和项目经验(experience)

  所以除了上面列的这些技能,你能实际做过一两个项目,哪怕是IP级别的验证项目,也是很重要的,尤其是做项目过程中积攒的debug经验。

  如果你是在校学生,早几年懂验证的人极少,所以基本上你只要会verilog,可能就可以找到验证工程师的职位了。现在在校学生通过各种渠道(比如:ic修真院)学习,掌握了上面的这些技能,甚至积累了一两个项目经验。

1051e2fc0dcb217796fe47518e248370.png

四、数字验证谁可以学习?

  现阶段,数字验证工程师主要以招聘本科以上学历,对专业的要求并不是很苛刻,非集成电路方向也可以,只要你掌握了上面的这些技能,哪怕不相关专业,比如材料、物理、自动化、机械等专业,也是可以成功应聘。

五、数字验证发展方向?

  未来的发展,一些人会一直做技术,成为一名资深验证工程师,有些人会成为验证经理,做一些管理类的工作。好消息是大部分人只要一直做下去都能成为一名资深工程师(STAFF级别)或者经理。

  有少数人也可以转,比如转去做架构工程师,去EDA公司做应用工程师(AE),要么就索性创业。总的来说,绝大多数验证工程师还是会一直做下去,毕竟这个岗位还算一个天花板不低的岗位。

9a6102bd3ff9729f7605f1503932c9b6.png

f306eaa46b892ff7e09007d3f748ef7b.png

  关于《数字验证》就介绍到这里!!!

  你唯一需要保障的只是时间和坚持!

1051e2fc0dcb217796fe47518e248370.png

  了解→

  就业、面试、课程、未来职业规划@小编

  喜欢你就分享,有想法、有疑问你就@私信我,实在不行还可以在评论区哔哔......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关联查询数据重复怎么办_在设计数据表的时候,是一个宽表好,还是多个维度表好?...

数据仓库每张表的搭建,主要依赖于这个表在整个数据仓库中的作用和相关意义。首先要清楚这个表的存在是为了解决那些问题,什么角色使用,怎么保证使用者尽可能好的体验解决问题。从以上所提到的角度去看待问题,拆解以下几点因素&…

用python画出叶子_太疯狂了!原来用粉笔画画,也可以这么美,简单几招教你,美到邻居羡慕嫉妒...

......点进来之前先让大家瞧瞧相信这是用粉笔画的吗?▼玫瑰花▼山茶花▼蓝色鸢尾花▼樱花树▼这一张张让人直流鼻血的作品没错这就是用色粉笔画出来的很多人问:是不是平时老师上课时用的粉笔呢?这里给大家科普下:色粉画&#xff0…

jsonp react 获取返回值_必须要会的 50 个React 面试题(下)

翻译:疯狂的技术宅原文:https://www.edureka.co/blog/interview-questions/react-interview-questions29. 你对受控组件和非受控组件了解多少?受控组件非受控组件1. 没有维持自己的状态1. 保持着自己的状态2.数据由父组件控制2.数据由 DOM 控…

snipaste截图软件滚动截图_截图工具的逆袭,Snipaste 还可以这么玩

这是我们的历史文章。为让大家更好找到自己需要的软件,我们会在三条位置推送,那些备受关注的APP和软件。提到「截图」大家会想到什么呢?微信,QQ 或者 功能更加完善的截图工具?有想过「截图」可以这样用吗?还…

plsql developer无监听程序_微信小程序支持分享到朋友圈啦!技术解读跟我来

千呼万唤始出来!微信小程序页面分享到朋友圈的功能,终于在安卓系统灰度测试了!目前只在安卓系统!只在安卓系统!只在安卓系统!iOS系统还没有办法体验。首先,我们看一下官方文档的描述&#xff0c…

mixin network_【译文】Mixin——以最高的安全性满足所有区块链资产的交易需求

一个免费的闪电般快速的数字资产端对端交易网络。01.概况Mixin 由一个理论上永久的内核、许多动态域和不同的多用途域扩展组成,以构成扩展的星形拓扑结构。Mixin Network 已经支持 BTC,BCH,ETH,EOS,ETC,SC&…

python柱形图代码_Python数据可视化:基于matplotlib绘制「条形图」

简介 条形图 (bar chart)是用宽度相同条形的高度或长短来表示数据多少的图形,可以横置或纵置。纵置时的条形图也称为 柱形图 (column chart)。 绘制条形图 1 import matplotlib.pyplot as plot 2 3 data [5., 25., 50…

源码 连接mysql_MySql轻松入门系列————第一站 从源码角度轻松认识mysql整体框架图...

一:背景 1. 讲故事 最近看各大技术社区,不管是知乎,掘金,博客园,csdn基本上看不到有小伙伴分享sqlserver类的文章,看样子这些年sqlserver没落了,已经后继无人了,再写sqlserver是不可…

asp.net mvc使用的心得和问题的解决方法(陆续更新ing)

1、在mvc下webform的分页控件不能用&#xff0c;只好自己山寨一个轻便的。 1publicclassPageHelp2{ 3 /**//// <summary> 4 /// 总页数 5 /// </summary> 6 public int TotalPageNum { get; set; } 7 /**//// <summary…

h5 一镜到底_这些一镜到底的H5还能怎么玩?

前文《单个公众号收入过亿&#xff0c;条漫为什么成为2019风口》提到&#xff0c;加入插画元素的条漫和ps拼接的长图文正处在2019年风口&#xff0c;这种现象也适合描述H5。以往扁平化的H5内容新颖&#xff0c;但视觉上缺乏大幅度的起伏。想要让H5看起来更有律动&#xff0c;就…

打开端口_打印机ip及端口设置

越洋帮路由网原创&#xff1a;文章是关于"打印机ip及端口设置"的相关知识分享&#xff0c;希望可以帮到大家。 - 素材来源网络 编辑:小易。随着科学技术的发展&#xff0c;各种技术成果也进入到千家万户&#xff0c;近日&#xff0c;有人咨询怎样设置和修改打印机ip及…

分计算iv值_快捷、经济、实用的光伏及IV曲线测试仪PVPM 1500X

PVPM 1500X IV曲线测试仪pvpm 1500x (1500V,20ADC)可测量光伏模块以及字符串或阵列的 iv 曲线。通过专利程序, 该设备可以直接在光伏系统的安装位置测量和计算峰值功率 ppk、r 和 rp。计算结果和图表可以显示在内部彩色的 tft 显示屏上。因此, 光伏系统的质量控制可以快速、经济…

Open Source Blog 开源ASP.NET/C# 博客平台 v2.5 发布(提供源码下载)

EntLib.com Blog 开源ASP.NET/C# 博客平台 v2.5 发布&#xff08;提供源码下载&#xff09;基于Subtext v2.0 开源ASP.NET博客系统的中文汉化及定制化开发&#xff0c;EntLib.com 开源博客小组根据用户的反馈意见&#xff0c;不断改进系统。2008年11月22日正式发布 EntLib.com …

兄弟3150cdn加粉后清零_兄弟MFC1618MFC1816 tn1035加粉清零方法

兄弟MFC-1618\MFC-1816 tn-1035加粉清零方法 有今天要发的题目的话؛兄弟MFC-1618\MFC-1816 tn-1035加粉清零方法 墨粉盒型号&#xff1a;兄弟TN-1035兄弟MFC-1618的清零方法有两种&#xff1a;一、清粉盒(转动粉盒右侧的齿轮180度)&#xff1b;二、在机器上操作&#xff1b;(以…

字体外面怎么加边框_有钱人家连电视墙都发“光”,大理石墙周围加一圈镜面边框,华丽...

阅读本文前&#xff0c;请您先点击上面蓝色字体&#xff0c;再点关 注这样您就可以继续免费收到文章了&#xff0c;每天都有分享&#xff0c;完全是“免费订阅”&#xff0c;请放心关注注&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系我们进行删…

计算机与人脑_类脑计算机:一种新型的计算系统

近日&#xff0c;中国浙江大学联合之江实验室共同研制成功了国内首台基于自主知识产权类脑芯片的类脑计算机(Darwin Mouse)。这台类脑计算机包含792颗浙江大学研制的达尔文2代类脑芯片&#xff0c;支持1.2亿脉冲神经元、近千亿神经突触&#xff0c;与小鼠大脑神经元数量规模相当…

吴玉禄他的机器人_中国人— 我们村的机器人

他是北京郊区的一名普通农民&#xff0c;二十多岁的时候突发奇想&#xff0c;一门心思要研制机器人。吴玉禄说&#xff0c;他自己也搞不清楚这个念头到底是哪儿来的。吴玉禄没有受过正规教育&#xff0c;他研制机器人所用的材料&#xff0c;都是些平时收捡来的“破烂”。吴玉禄…

c++ map iterator 获取key_JAVA | Map集合使用详解

引言了解Set集合如何使用和旗下各类比较&#xff0c;这篇我们继续和大家一起看看Map集合的使用机制。MapMap集合介绍 Map(也称为字典、关联数组)是用于保存具有映射关系的数据&#xff0c;保存两组值&#xff0c;key和value&#xff0c;这两组值可以是任何应用类型的数据。  …

儿童的身高标准对照表_2020“儿童身高标准”出炉,10岁身高140,你家娃达标吗...

文丨小哥(文章原创 &#xff0c;版权归本人所有&#xff0c;欢迎妈妈们转发分享)孩子的身体发育是非常重要的&#xff0c;如果有家长看到自家孩子的身高不如别人&#xff0c;内心多半是非常痛苦的&#xff0c;因为谁都希望自己家的孩子长得高一些。要判断孩子的身高合不合适&am…

晚上答辩的理论知识准备

web2.0介绍&#xff08;对比web1.0&#xff09;&#xff1a; 有个人这么说的&#xff08;呵呵&#xff0c;引用一下&#xff0c;觉得他说的不错&#xff09; web1.0还是web2.0&#xff0c;不要去管二者的定义&#xff0c;那将毫无意义&#xff0c;WEB1.0也好&#xff0c;2.0也好…