USC VLSI DV方向 学习/找工作经验小结

avatar 491277
Gyro.yu
20297
39
最近刚刚结束找工作,想起自己在master的第一学期为了GPA不得不drop课的时候,还是有些感慨。在美国的两年得到了很多学长学姐的帮助,也在地里看到了很多有用的帖子,受益匪浅。想分享一下我的经验,帮助一下坚守这个方向的学弟学妹少走一些弯路。

先说下背景把,楼主毕业于国内某2+2大学。本科的时候相关背景只有一些简单的数电课,simple schematic & layout design,和C++的基础。
总体来说,我认识的学长学姐里坚持DV努力找工作的最后都拿到了不错的offer。今年很不幸由于疫情,选择回国的人很多,我这届身边并没有很多DV的数据点,不过根据我自己面试的体验来讲,只要简历match,大公司还是很愿意给面试的。
我选择DV的理由其实很简单,首先第一学期的Computer Organization学的并不是很好,想尝试一下更多的可能,后面做了相关的project感觉自己也确实更适合这条路,就一直走下去了。

GPA
VLSI找工作是很看GPA的,可以的话越高越好。少部分公司3.0就够,大部分公司会要求3.5+。
比较有名的大厂会卡的更高,具体卡到多少我不太清楚,个人体验是3.8以上应该至少会让你不被卡在简历关上。
不过我感觉身边不少人都是3.9 4.0, 应该也不用我多提醒…

学习经验:
USC应该暂时没有Verification直接相关的课,之前有过但是反馈也很一般。
也就是大部分DV相关的知识是需要你自学的,我自己在这里也走了不少弯路。下面大概说一下我在DV各个方面学习的一些经验
提前说一下,自学DV相关知识需要很多时间,建议合理安排好核心457和77系列的时间,搭配水课和假期自学:) 确保自己在第三或者四学期之前熟练掌握找工作需要的知识。

1. Digital Circuit Design:
虽然是verification岗位,但是design的基础也是需要会的,一般DV的面试不会问太多,可能一轮左右会在design方面。
577B前两个lab的知识差不多够应付这些了, 常见的题目有sequence detector, edge detector, moore/mealy machine, frequency divider, round robin arbiter, setup/hold等等。
下面的面试链接里有详细的说明,这里就不多说了。

2. C++:
C++的一些基础算法和对DV很重要,OOP的概念也很重要,如果有C++基础的话这些应该不难。
链表非常非常有可能会被问到,建议熟练coding链表的数据结构和各种基本操作。
如果有EE595(Spring or Fall, not Summer)还是比较建议上的,DV需要的知识点都会讲到。没有的话网课或者其他CS/EE相关课请根据自身情况选择:)

3. 脚本语言:
一般是Python/Perl二选一。如果你会了一个就用会的,如果都不会就学一下python。
我平常用的最多的功能就是文件操作,代码生成,帮助自己写代码更方便。
也有可能面试官会问到一些常规的算法题,让你用脚本语言来解决。熟练基本操作即可,一般面试官不会在脚本这里为难一个毕业生的。

4. SystemVerilog:
DV方向主要的编程语言,USC现在似乎没有教这方面的课,自学的话我非常建议买一本SystemVerilog for Verification,对于系统的学习SV很有帮助。
多看几遍,记记笔记,基本上面试SV相关的问题都不会卡住。
另外建议常备一份SystemVerilog LRM,我用的是2012版本的。
书可以让你系统的学习SV,但是不会告诉你所有的细节语法。如果有不确定的一些细节用法,建议查阅LRM。
书也许会写错,但是你永远可以相信LRM(最新版LRM限定)

关于constraint random:
几乎是onsite必考题目,常见的题型有onehot, unique array (without unique keyowrd),
还有一些使用post_randomize的情况。建议熟练掌握各种array的用法,多练练,面试时随机应变。

关于assertion和func coverage:
很少有面试官会问,问到也不会问很复杂的用法
熟练使用assertion来check简单的req, ack信号即可
func coverage知道怎么自定义bin,ignore_bin, cross coverage, transition coverage我觉得就够了
另外有些面试官会问你code coverage,知道相关的用法以及和func cov的区别也差不多够了
想多学一点的话,udemy上有一个12小时的网课。不过那个讲的太多了,面试不一定都能用得上(而且也很贵,想买建议打折时候10刀拿下)

5. UVM:
一般来说面试官不期待一个毕业生能有UVM相关的背景,但是如果你有一些简单的UVM相关project,就会是一个加分项。
UVM不是一个容易上手的框架,不过他的学习难度主要来自于,需要你对SV有充分的理解,这样你才能明白UVM的很多机制。
非常不建议在SV基础没打好的时候强行学UVM(不要问我为什么知道)。我觉得在熟练掌握SV for Verification这本书里面的东西后,学习UVM就会轻松很多。
至于学到什么程度,我觉得如果你能理解一个用UVM验证FIFO的框架里每一行代码的含义,对毕业生就非常足够了。
如果还有时间的话,可以拓展一下自己知识的宽度。验证FIFO毕竟只是一个比较基础的框架,还有很多相对高级的用法,面试官不一定期待你用过,但是如果你知道相关概念的话,会是一个加分点。
(比如virtual sequencer,很多面试官都问过我。我回答我虽然没用过,但是我知道他的概念是blabla... 他们都很满意)
学习uvm这里我没有什么很好的材料,对我比较有帮助一个是udemy的一个免费uvm网课,另一个就是uvm cook book。
cook book内容很多,只看前面能帮助你理解UVM框架的一小部分就够了。
网课的链接在这里 udemy.com (我觉得课程质量一般,但是我在这里听懂了uvm_factory)
verification academy和verification guide也是很好的网站。不过我更倾向于把他们作为遇到问题时候的参考书而不是学习UVM的手段(毕竟里面的东西实在是太多了…)

6. Computer Organization:
虽然不一定会在面试里被问到,但是一个合格的verification engineer是应该对这方面有所了解的。
熟练掌握457学的东西应该就够用,包括但不限于:5-stage pipeline, Tomasulo algorithm, cache mapping, virtual memory, cache coherency。(我没上过560,面试里也没被问到过,所以这里就不多说了)

面试准备:
我面试基本是按照这个帖子准备的 1point3acres.com
里面各方面的题都写的很详细,个人感觉全部掌握的话过面试的成功率很高。
Leetcode可能new grad不需要里面要求那么高的水平。LC我自己只按类型刷过一些easy和随缘的一些medium题。
一般来说如果对算法没有要求比较高easy就够了,不过我在面试里也确实被问到过medium的题。所以先保证自己easy的常见类型题心里有数,时间有富余的话可以刷刷medium的题。
还有 地里其实DV方向的面经不少,善用搜索功能

有两本面试书对我也很有帮助:
Digital Logic RTL & Verilog: 一本小白书,里面只有51道题,都是些很基础的Digital Circuit Design题。刚开始准备面试可以从这本看起
Cracking Digital VLSI Verification Interview: 一本大绿书,里面涵盖了verification面试各个方向的知识点,题很多 很全面,有时间多看几遍

另外还有几篇paper对我也很有帮助,面试也经常会被问到。都是Cummings的,谷歌直接搜名字应该就有
Simulation and Synthesis Techniques for Asynchronous FIFO Design
Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog
Nonblocking Assignments in Verilog Synthesis, Coding, Styles That Kill!
SystemVerilog Event Regions, Race Avoidance & Guidelines

面试感受:
因为DV要准备的东西很多,所以可能越准备越心里没底。建议觉得自己准备的差不多了就出去面面,可以帮助你更好的准备以后的面试。
而且越早面试越好,早面试也许你就多一次机会。不过注意好安排一下面试的时间线,毕竟有名的大公司就那么几家。
投简历尽量找朋友组内直推,其次可以去linkedin上看看校友,一般都会帮你推的。
如果找不到组内直推,其实linkedin上勾搭recruiter也是一个好的选择,因为他也会帮你推到manager那里的。所以linkedin上尽量多加人,加的人越多recruiter能看到你主动联系你的概率就越大。

不同公司给我的面试感受很不一样,小公司一般会希望你能做更多的事,也许会问的更宽,但是不一定很深入,也不一定每一轮onsite都是你投的岗位的问题。面试时间可能比较宽松,留给你问问题的时间会相对多一些,可以多准备一些BQ和问面试官的问题。大公司会希望你在这方面有solid background,基本不会跳出你的岗位问问题,很多问题都会问的更细节。所以准备面试题的时候一定不能背答案,多思考一下问题的本质。不过总体而言,DV这个岗位都不会去为难毕业生,就算你哪道题当时答不出来,也一定要和面试官聊聊你的思路,问问有没有提示。他们很看重你的problem solving skill和沟通能力,有时候思路对了,即使结果不是那么完美,对于他们来说也是OK的。

DV相关岗位,大公司其实都很缺人,只要简历match,基本都会给你面试的。一个我自己面试时没有注意到的点是,不同公司处理面试速度其实很不一样,有些公司第二天就能出结果,有些公司可能你要等上十天半个月。可能同时开始面试的几个公司,一家offer已经出了,另一家还没有onsite的消息。还是建议提前问问身边人近期各个公司面试的平均处理速度,合理安排面试时间,这样可以确保拿到offer时手里有牌可以compete。

春招大概历时一个半月,非常感谢帮助过我的很多人。如果你准备走DV这个方向,希望我的经验能给你一些帮助。有问题欢迎问:)
  • 243
39条回复