相信大家看到标题已经猜到我们这期要探讨的话题了。要成为IC验证工程师我们首先要懂基础的数电、verilog、sv、uvm、懂得使用Linux,懂仿真工具的使用,懂Shell、Perl、Tcl、Makefile、Python这些脚本就差不多了 ,可是要成为一位好的验证工程师我认为需要掌握的技能不止于此,下面我们来探讨想要成为一位好的IC验证工程师应该具备什么样的技能,首先有请知乎
wafanmin:
想要成为一名IC验证工程师,首先要了解IC验证工程师每天具体的工作内容是什么,了解了具体做的事情以后才能更准确的学习需要学习的知识,把时间花在刀刃上。
总的来说,IC验证的具体工作内容几乎全部包含在下面五条中:
按照项目需求撰写测试方案和计划,搭建验证环境
编写直接测试用例和随机测试用例,完成仿真验证,撰写验证报告
理解模块及芯片设计规格,协助查找和修复设计缺陷
确保验证功能的覆盖率,识别覆盖率漏洞,管理和控制验证风险
使用脚本语言,维护和更新验证环境,提升验证效率
根据这些工作内容,再结合招聘网站上的任职要求,我将IC验证需要具备的专业能力做了一番总结,如下所示,排序有先后,最重要的在上面:
UVM及验证环境搭建:SystemVerilog Gvim
验证覆盖率(包括功能、断言、翻转等多种覆盖率的含义、收集方法、优化方法等)
必要的IC设计知识、芯片制造流程,用来与设计battle或者找出设计有误的地方,了解一些标准接口,如Ethernet、I2C、SPI、UART、CAN/CAN-FD、JTAG、APB、AHB、AXI等。
掌握一门或多门脚本语言如Python文档撰写能力
英语阅读能力
沟通能力
初学者可以放心的把时间放在学习这五条上面,以免浪费时间,例如一开始就学习多门脚本语言或者把英语学的棒棒的,那样是有用,但边际效益较低。
ic设计日记录:
数字IC验证属于数字IC设计流程前端,数字IC设计岗位的一种,主要是对数字前端的设计做验证。
数字IC验证工程师需要具备以下技能:1.会操作Linux,会使用vi编辑器,可以完成文本的编辑功能和操作命令。2.熟悉门电路,掌握组合,时序逻辑电路;3.Verilog基本概念框架建立,掌握Verilog 基础语法,熟悉Verilog任务,掌握状态机;4.掌握状态机和基于Verilog同步FIFO代码编写;5.掌握SV.全面综合RTL设计、测试平台、断言和覆盖率,能在多个项目中使用连续一贯的语法来构造可靠并且可重复的验证环境。6.学会如何用UVM搭建验证平台,包括如何使用sequence机制、factory机制、callback机制、寄存器模型等;掌握如何编写代码才能保证可重用性。
需要如何着手准备?
数字电路和Verilog
首先需要具备数字电路的基础和Verilog语言基础。这里给大家推荐基本书籍:
1.《数字电子技术基础》。会给大家全面系统的介绍数字电子技术的基础知识全书由数制和码制、逻辑代数基础、门电路、组合逻辑电路、半导体存储电路、时序逻辑电路、脉冲波形的产生和整形电路、数一模和模一数转换等八章和附录组成。
2.《verilog硬件描述语言与设计》EDA教学基础教材,全书从硬件描述语言VerilogHDL简介入手,重点阐述了硬件描述语言的基础语法、语法和与之匹配的硬件电路设计基础、电路设计案例等;除了对VerilogHDL语法基础详细阐述外,对逻辑电路、时序综合和状态机等复杂电路设计问题也进行了介绍。对复杂数字系统也进行了案例讲解。全书共11章,主要包含VerilogHDL语言基础、逻辑电路结构、状态机与时序综合、验证等主题的内容。
3.SV推荐绿皮书《systemverilog》测试平台编写指南,UVM则推荐白皮书《UVM实战》。由于每家公司的验证策略和验证平台搭建并不一定相同,但建议主流的验证工具一定要会,扎实的基础以及工具的使用能力,是你在项目上游刃有余的保障,否则将举步维艰。
4.在了解基本语法之后,建议去HDLBits这个网站去刷题。上面从最基础的wire,vector等基础概念,到各种门电路,组合电路,时序电路应有尽有,非常全面。
5.验证实战经验的积累,尝试自己去搭建验证环境的能力,在进阶一点就要根据具体验证的设计模块或者芯片,相应的学习各种协议、以及系统结构等。自学数字IC验证验证可能对很多同学都是比较困难的,尤其是关于验证更注重实战技能,项目积累。
木子李:
IC验证虽然相对于芯片设计,技术门槛较低,但要学习的知识宽度要大于芯片设计。1.基本的数字电路知识: 触发器、状态机、加法器、寄存器,锁存器,组合逻辑,时序逻辑,同步时钟等等;2.linux:IC开发绝大部分是在linux OS下,所以linux是必备技能,在这里需要掌握了linux的常见操作即可;3.RTL硬件描述语言:国内大部分是verilog,VHDL可以直接放弃了(军工除外,军工常用VHDL);4.核心基础:深刻学习理解SV语言,可以学习与SV类似的面向对象编程语言,帮助对SV语言特性的理解;深刻学习理解UVM验证方法学,理解源码5.EDA工具:要会使用,常见的百度或者看公司现有的脚本都可以,不常用的就去查手册;6.windows平台下可能用到的软件有:quartus II、Modelsim、questasim7.linux平台下可能用到的软件有:VCS、verdi、GVIM、VIM8.基础的脚本语言,Makefile必学、此外shell,python和perl至少要懂一个,建议两个都学一下;
之后的IC验证工程师的能力提升学习:
明白验证的Value,不只是搭建TB和写case,这一点特别重要。验证不仅要看得懂软件,玩的6硬件,通吃前端EDA工具,熟悉flow中得各种脚本,同时对芯片结构,设计得内容要看明白。主要是接口、功能,结构什么的 ,毕竟要知道我们验证的是个什么玩意儿。项目入手,深入研究某个方向的,比如GPU,基带,wifi、CPU、存储深入学习设计领域知识和IC设计架构深入领悟几个通用的协议,比如AMBA, AHB, APB, AXI, AXI-lite, ACE, PCIe等优化代码结构和项目层次,增强可复用性,增强集成度和自动化多平台验证工具的使用,对于覆盖率收敛很重要。
IC验证工程师的职业规划
一年 完成入门
三年 从初级到独立承担模块验证
五年 从独立承担模块验证到验证leader(也有可能转向芯片设计)
N年 从验证人员到验证主管(或全栈技术专家,或创业)
书单
ic验证有三大法宝:
绿皮书:《SystemVerilog验证+测试平台编写指南》
白皮书:《张强的UVM实战》
红宝书:《刘斌的芯片验证漫游指南》
要学习的内容很多,一朝一夕是学不完的。我见过很多0-5年经验的工程师,面对复杂的协议、改不成功的报错、找不到的bug被气到在电脑前唉声叹气、一脸愁容,后悔自己当初没学好。
面对繁忙的工作、学不完的知识,我认为一个“好”的验证工程师要懂得给自己减负,这里的减负一方面指遇到问题冷静思考,从根本解决问题,第二 指调节自己的心情让自己心情减负。
遇到接口的错误会不会是协议没有理解透彻,遇到怎么都找不到的报错会不会是基本功掌握的不扎实,遇到幽灵一般的问题会不会是对整个环境的理解还不够到位,一个问题解决后千万不要抱着终于解决,这辈子都不想再遇到这个问题的想法,一定要静下来心来分析问题出现的原因随时查漏补缺,这样下去问题会越来越少,否则下次遇到还是会浪费精力,好的学习习惯难道不是一种减负吗?
第二方面学习是一个要一直坚持下去的习惯,健康的生活方式也是,或许我们可以在休息时间把用在玩手机的时间分出来一些培养兴趣爱好。晨跑,清晨在感受多巴胺和内啡肽带来的双重愉悦中迎接新的一天;健身,没有时间去健身房可以买一副哑铃在家练,在力竭中感受一天天变大的力气和变强壮的体格;去喜欢音乐,累的时候戴上耳机感受着歌曲的律动;买一些好看的创意摆件、绿植放在办公桌,给自己营造一个轻松舒适的氛围。
做好一位工程师需要过硬的专业知识和个人能力,可好的学习习惯和生活习惯也会让我们一生受益,希望这期文章会带给大家一些启发。欢迎评论区留言互动!!!