如果微电子不相信眼泪,那你是否会爱上验证?

一段沉默的对话

 “你知道吗?”

“知道什么呀。”

“我想去考公务员”

“你已经上研了,还考毛线公务员”

“以前觉得对微电子不感兴趣,是因为自己大学是个学渣。当上研真正努力之后,才知道自己可能真的不适合微电子。我家在江西的一个小城市,我想考那里的公务员。”

“(沉默)。。。”

晚上9点左右,思修课上,我看到了这个朋友少有的45°仰望天空的模样。

“要不再试试吧,现在才研一。” 但脑海中不由得响起陈永仁的那句“三年之后又三年,已经十年了,老大!”

“考公务员也是一种很好的选择,适合自己才是最好的。”但放弃已经学了5、6年的专业,放弃现在已有的平台和技能,又是真的很残酷。

最终我选择了沉默。沉默,是今晚的思修教室。

微电子真是一个大坑啊

还清晰的记着高考完填志愿的事情。当时根据自己的分报了一个电子类高校,然后在几个录取分数线相近的专业中,一眼就相中了微电子。为什么呢?因为这个名字让年少的我觉得很牛逼。如果那会儿这个专业叫做半导体,恐怕就没有后面所发生的这些故事了。

从大一进入这个专业时,我就不懂懂微电子到底是做什么的。当时院长给介绍说微电子是造芯片的,中国每年进口最大宗的物品就是集成电路,所以我们会大有所为。但是我从未想到做一颗芯片要有如此大的分工:电路设计是设计芯片,但不算微电子;半导体器件是生产芯片和存储器的关键部分,它也不是微电子;芯片制造工艺是为了生产芯片,但它又不完全是微电子;芯片的封装和加工是芯片上市前的最后一个部分,它仍然不算微电子。实际上它们都微电子下的众多分支,所需要的专业技能和方向完全不同,就因为造芯片这一目标而统一起来。

如果是通信专业的同学,他们会知道自己将来会从事通信业,会去华为中兴。所以把大量精力投入学习通信相关知识去。

如果是软件专业的同学,他们知道将来会去做网页APP应用,会努力朝BAT努力。所以会把大量时间投入到学习编程算法等专业知识中去。

微电子的同学们就懵了,他们可能不知道自己将来会去从事偏向物理方面的芯片制造,还是从事偏向电路数字设计和模拟设计,还是从没听说过的偏向编程的验证。他们只知道:量子力学,半导体物理,半导体制造工艺,,材料学,半导体器件;数字集成电路,模拟集成电路,电路基础,VLSI,数电模电;C语言,Verilog这些课程都很重要。不知道产业分工,不知道根据自身选择日后方向,只是去学所有重要的课程。当然很多同学就学懵了,产生了迷茫。

我自身的情况是比较懒,没事会宅着玩游戏,当时在众多课程里对半导体工艺比较感兴趣一些。

到了大三下学期,一个问题就浮在了所有人的面前,读研还是找工作?我也陷入了这样的迷茫中,往往是白天复习当中就跑去参加宣讲会了,晚上就一个人去操场跑步。一直到秋招结束都没有自信投出一封简历,接着考研也结束了。最后考研成绩不太理想,就又不死心的跑去参加了春招。最后的结果是签了天马微电子(厦门厂)三班倒的设备工程师,工资每月税前4500,西电的学生比起其它985学校还少拿500块钱工资。还收到了京东方(福州厂)最终面的面试通知。但是最后都没有去,因为国家线出来可以稳稳地上研了。同时我也知道了,在一个设备和生产材料占据绝大部分投入资金的工厂里,自身价值可能不会高。

在拿到研究生录取通知时,我决定:将来去做数字芯片设计和FPGA,因为它们工作比较好找工资也较高。至于是否喜欢做这个?我的回答是:因为本科太学渣了,研究生好好学或许能够做好。

我们烦恼一样一样的,所以该怎么劝你呢

时间线回到了那个晚上九点的思修课,此时已经是研一下学期了。这一年里又跟着学校学了一遍半导体物理,半导体器件,数字集成电路,VLSI,Verilog,还在课余看了FPGA相关的东西。基础比以前扎实了很多,但用Verilog的语法不能独立写出一个最简单的模块,用FPGA开发板跑了一次走马灯,结果灯也没亮。关键是,做这些的时候没有感到乐趣,没有产生前进的正反馈。自己也忍不住想:真的适合做微电子和芯片设计吗?当然没有任何结果,感觉自己又变得越来越懒了。

突然,朋友说他不适合微电子,想去考公务员。真的不知道该说什么,因为一直逃避这个问题的自己,有什么资格对认真思考这个问题的他提意见呢。

所以只能沉默。

原来芯片验证很有趣呀

 由于是专硕,研一结束就要找实习。我就以最多能写一个移位寄存器和跑过一次FPGA板流水灯的水平,忐忑不安地跑去找实习了。第一个来学校招聘实习生的是一家知名外企,面试我的人正好是路桑,机缘巧合下就成功进入这家公司实习,当然企业导师也是路桑。

回忆起整个找实习的过程,只有一个感觉:我是不是把这二十几年的运气都攒到找实习上了。还有一种不太真实的感觉,我这种渣渣水平竟然可以进这么好的公司去实习。导致在正式签约之前,都没敢把这件事告诉父母,因为怕让他们空欢喜一场。税前的实习薪资再加上学校每月补助的500块将近有4000。想起一年前自己本科签的4500每月的工资,确实有点唏嘘。

当然我进入的是芯片验证岗。还记得路桑在面试时让描述验证平台的结构,我只能支支吾吾的说出:外面是Testbench,包着DUT,然后向DUT发送简单的激励。

刚开始的时候,我和同桌被路桑安排自己看书,C语言,SystemVerilog绿皮书,UVM验证方法学,Python。然而我们之前的完全没有编过码,对各种语言特性都感觉一头雾水。往往是一般书前十几页认真看一整天,后面几百页就直接在一两天内翻过去了,看完一遍一点印象都没有。接着就打开另一本书看,其实这样效果并不太好。 过了一段时间后,路桑让我和我同桌用SV给MCDF(多通道数据整形器)搭一个极其简陋的验证平台。

这种东西我们怎么可能做出来呢,但路桑发话了,只好硬着头皮去做。我和同桌参照着路科验证发过的相关文章,勉强搭出了一个能够发简单激励的简陋验证平台。但是回想起搭这个简陋验证平台的过程,确是一个小小的转折点。虽然我们还是很多东西不会,但是对sv的特性懂了一点,对验证平台的结构懂了一点,对面向对象和封装也有了一点理解。正是依靠这么一点点理解,我们慢慢对验证结构有了较清晰的理解,也能看懂UVM书了,慢慢的也可以自己写一点点简单的Python代码。从这里学到的经验就是,当对很多东西都存在疑惑时,可以专攻一个很小的模块或是应用,然后把理解的这一小点带着再去回顾以前不懂的部分,会发现可以由点及面的把很多问题解决。

接着路桑在西电的芯片验证课开始啦,我和同桌还有一个外号“石神”同学被拉去做助教。其实我们的水平也比新同学们高不了多少,哈哈(偷笑)。

路桑对这门课程十分重视,从课程结构还有实验都是重新设计的,上课时与同学们弹幕交流还发红包,而且诚意满满每节课将近四个小时。当然课程效果很好,从第一节课的180人左右到最后一节课还有近160人来上课。这可是十几节课时,每节课就是一下午,这课讲的是大家都害怕的SV呢。

我们跟着把SV验证语言系统的过了一遍,也终于见识到了路桑好看整洁而且一看就是高级货的代码。通过这一遍的学习确实对SV和UVM还有验证平台有了更深理解。一直想把路桑的SV实验代码找一个词来形容,直到一个学长说:“路桑写的这个是UVM源码吧”,才豁然开朗。这个lab到后期还是比较拔高的,如果完全掌握的话相信对验证流程,结构,SV,UVM都有更深的理解。

把路桑在西电的SV验证课程大纲贴出来给大家看看呢:

序号

课程内容

学时

教学方式

1

【通识】芯片开发概述、验证职业前景、验证任务和目标、验证周期

2

讲授

2

MCDF设计介绍、实验介绍、Verilog知识点回顾

2

综合练习

3

【SV】数据类型、过程语句和子程序、设计连接和验证结构

2

讲授

4

实验1(MCDT):Function,Task使用以及基本验证结构

2

上机

5

【SV】接口、采样和数据驱动、测试的结束和开始、调试方法

2

讲授

6

实验1讲解、习题讲解

2

综合练习

7

【SV】随机约束、随机分布、约束块控制、数组约束、随机控制

2

讲授

8

实验2(MCDT):接口和类的使用

2

上机

9

【SV】类的继承、类的方法、动态对象、包该使用

2

讲授

10

实验2讲解、习题讲解

2

综合练习

11

【通识】验证的计划(设计功能描述、内容构成、进程评估)

2

讲授

12

实验3(MCDT):随机约束,测试控制和完整验证平台

2

上机

13

【通识】验证的管理(检查清单、管理要素、回归测试、验证能力培养)

2

讲授

14

实验3讲解、习题讲解

2

综合练习

15

【通识】验证环境的结构和组件(激励器、监视器、比较器)

2

讲授

16

实验4(MCDF):理解验证环境,根据测试功能点写Case

2

上机

17

【SV】线程控制、线程间的同步(事件、旗语、信箱)

2

讲授

18

实验4讲解、习题讲解

2

综合练习

19

【SV】功能覆盖率(覆盖组、覆盖事件、数据采样、覆盖选项、数据分析)

2

讲授

20

实验5(MCDF):生成覆盖率,合并覆盖率和分析覆盖率

2

上机

21

【SV】类型转换、虚方法、对象的复制、回调函数、参数化的类和设计

2

讲授

22

实验5讲解、习题讲解

2

综合练习

23

【通识】验证方法(仿真、形式、模拟、虚拟、功耗、性能)和UVM简介

2

讲授

24

知识点回顾、实验验收

2

综合练习

最近我和同桌要学习维护路桑开发的两个很有趣的工具和进行一些技术支持。据说后面的会变得忙起来,心里还是很忐忑,希望能接受收住考验,顺利完成工作。

回顾过去这一段时间是什么感受呢?

验证真的很好玩,我怎么以前不知道微电子里面有这么有趣的工作呢 ^_^。

我眼中的芯片验证

梳理了一下这几年的纠结和迷茫,大概是下面这个过程:

1.本科通过找工作和略微了解,筛掉了做器件和工艺进工厂这一选项(个人觉得找工作不易)。

2.研一通过学习和自学筛选掉了FPGA和芯片设计(觉得自己没这个天分)。

3.研一结束后开始接触验证(直到现在觉得验证还是很有趣的)。

正好趁这个机会介绍一下我眼中的验证吧。

验证的地位和前景:

芯片设计和验证同属数字前端。数字前端在IC行业中属于薪资待遇较好,人员需求量大,技术较有挑战性的部分。以前的设计和验证基本是不分家的,但是随着芯片的规模不断变大和市场窗口时间的缩短,验证重要性越来越高。现在的IC公司中验证是和设计同等地位的存在,甚至有些大公司的验证人员要多于设计人员。

验证的内容:

大概就是搭一个像前面那个图的结构类似的验证平台,通过写测试用例(test case),检查DUT输出的结果是否符合预期。不符合预期的话,发回给设计人员进行修改。最终使整个覆盖率到达100%,当确定这个芯片不存在漏洞(bug)时,就可以交由后端人员拿去流片了。

验证和其他微电子学科的主要区别:

说到芯片验证与其他微电子学科的区别是验证的技能树基本是全软件的。验证对语言和编程的的需求较大,包括整个平台和思维也是软件式的。因此它不太需要了解CMOS,器件,材料等物理方面的知识。但验证平台要和设计模块用接口连接,还要针对需求产生激励,这又要求验证人员懂一些电路设计和Verilog的知识。

对我而言,进行电路设计完成指定功能是一个很抽象的过程,会因为不知道干什么而卡在那里不知所措。而做验证就像玩乐高玩具一样,根据设计的要求给平台安装上Driver,Monitor,Scoreboard,Checker等组件。之后再开始根据需求写test来检查预想的结果。感到整个工作流程和目的性都十分清晰,也会很快就能得到正向的激励和满足感。另外看多了,也会觉得面向对象的编程语言比Verilog更好理解,更有趣一些。

验证的薪资和工作:

由于大规模的芯片验证兴起时间不长,加上高校教育缺乏与之绑定,导致验证人员比较缺乏。另一方面越来越大的芯片量级需要更多的验证人员来对芯片进行系统的验证。因此验证缺口很大,工资较高,工作也较好找,有挑战性。

现有的主流验证语言SV和UVM,也是些年才兴起的。很多老员工或是入行更早的设计人员,未能很好掌握它们。新人即没有以前的负担,又有更多的精力去学习,这是一个优势。

验证确实是有难度的,但它的上手门槛比工艺和设计都要低。本科生,学校或基础不够好的学生,已工作但寻求转行的朋友都有机会和有能力学好芯片验证。这也为微电子不大感冒的同学提供更多机会,更优秀的薪资,更好的平台。现在研究生做验证还是主流,可能几年后会有大量的学校给本科开放验证课程,将来会有越来越多的本科生参与到芯片验证中来。

兄弟,面向验证,春暖花开!

如果能回到一年前晚上9点的那个思修课上,我不会再沉默:“兄弟别灰心,你还没试过芯片验证吧,它很有趣前景也不错,一起加油!!”

当然我会把写的这篇文章转发给那个朋友,希望他现在还没有放弃。如果有身在微电子行业,但是对继续走下去已经失去了信心或动力的朋友,希望可以试试芯片验证,这和你们以前所学的课程都不一样。如果你周围还有处于迷茫期的朋友,也欢迎转发给他们,芯片验证需要有更多的人去参与。

至于想学验证却不知道怎么学,请关注路科验证技术订阅号和路桑今年即将推出的芯片验证教材。还有,路桑预计今年开启第一期现场亲授芯片验证小班课程,这个可能是我能想到的可以从业余进入验证领域最高效的方法。

最后啦,这篇是小编十分走心的介绍自己如何从微电子专业的差班生,开始逐渐成为一个新手Verifier的故事。希望有过类似经历的朋友能有些许借鉴,也许我们不必转行,只需走到验证那扇窗前,你会发现:面朝大海,春暖花开!!!

 

 

谢谢你对路科验证的关注,也欢迎你分享和转发真正的技术价值,你的支持是我们保持前行的动力。

发表评论

邮箱地址不会被公开。 必填项已用*标注

陕ICP备18003383号-1