不二鱼
FOR YOUR DREAM
从材料转行的IC验证工程师,材料人的一束微光,欢迎关注我,与我同行,愿你所有的努力都不被辜负。
前言
嗨,好久不见,你是否还在坚持学习呢?我是不二鱼,今天又是故事分享,希望每一个分享的故事,都是激励你前进的力量。
正文开始
22届秋招进入尾声,幸得不二鱼师兄厚爱,邀请我写这一篇转行经验贴,分享我的转行历程,并给即将要转行IC验证的同学一点小小的建议。
我是材料双非本、211硕,因为遇到神仙课题组,彻底地断了我想读博的念头。近三四年来,课题组每届超过70%以上延期拿学位甚至拿不到学位(PS:某教授天天洗白自己,所有错归咎于学生不努力,NMSL…)。本来就身处四大天坑,外加没有学位,找工作的时候连乞丐都不如。无能狂怒之后的无奈,心里着实咽不下这口气,我开始尝试各种转行的可能。2020年2月份,疫情爆发让我有幸在家自学了4个月的java,然后因为种种原因放弃了转Java的打算,但学Java的经历却冥冥中做起了铺垫。之后,考虑过教师、公务员和事业编,但没法按期拿学位又将自己拉回现实。那段日子,人生没有光。
2021年3月中旬,偶然看到鱼哥的知乎,经过多方求证后确定当前IC验证是站在风口上,我知道我转行的时机成熟了。两周后,那天是愚人节,打开崭新而又厚厚的《数字电路技术基础》,心中满是期待地开始了我漫长而又艰辛的转行之路。但这却又是我整个研究生生涯中最令人回甘的日子,不思量自难忘。每天凌晨走在回寝室的路上,嘴中不自知地哼起了自己喜欢的歌。时而回头,心里却笑道“好似已经没有退路了”。四个月后,我投了50多家简历,做了无数家笔试,面了十几家,最后拿了7家苏州的offer,结束了今年的秋招。
选择转行时,你会不停地问自己会不会找不到工作?行业发展好不好?自己未来发展怎么样?与我而言,还存在没有学位证公司会不会不要我?每个人的追求、硬性条件和课题组环境不同,都会影响自己的决定和判断。但就客观因素来说,目前IC行业对转行的包容度还是很高的,因为行业缺人嘛。只要你使劲学,就和考研一样,肯定就有心仪的offer。在薪资上,今年一线普遍的薪资可以开到30W ,这是我们材料人所不敢奢求的待遇。至于材料人在行业的发展会怎样,我持有的观点是既然选择了验证,那么它就是你的事业。入行从来不是结束,这仅仅是开始,根本没法躺平。我们需要付出更大的努力去追赶,要时刻保持危机意识,避免风口后被行业所抛弃。另外我想谈一下和我有类似情况的战友,目前行业处于严重缺人的形势,所以只要你肯努力学,面试时就会在主管那留下很深的印象,拿到offer后真诚地和HR沟通,基本公司都会等你甚至不需要你的学位。在此我也向给予我机会的公司表达诚挚的谢意,在我最困难时拉了我一把。
当你决定要转行时,那就不要犹豫一分一秒。每多学一点,秋招工资就多涨一点,上岸大厂的几率就大一点。学习路径就是数字电路、Verilog、SystemVerilog、UVM和虚拟项目。数字电路可以看慕课上的西安工业大学杨聪锟老师的课程,主要就是学习逻辑门、组合逻辑和时序逻辑电路,其他暂时不管。Verilog可以在B站上看蔡觉平老师的课。但毕竟是门语言,那就是要多练习,把夏宇闻老师书上的代码平时多敲敲,掌握用Verilog描述基本的计数器、分频器、移位寄存器、同步异步复位、三段式状态机和FIFO等,然后自己搭简单的TB跑仿真、看波形。此外,还需要掌握跨时钟传输、时钟切换无毛刺、低功耗设计、门控时钟、异步FIFO的设计以及异步复位同步释放,这些基本都是笔试面试中的“常驻嘉宾”。SV是一门面向对象的编程语言,如果你发现你直接看路桑的SV很吃力,那么我建议你先去找一门教学非常详细的C 课程看一下,了解面向对象的概念后,再回头看路科的SV视频课和绿皮书。UVM主要还是看路科的视频课,辅以《UVM实战》和《芯片验证漫游指南》两本书。SV和UVM的基础一定要扎实,基本的概念和机制要清楚。之后就是一些tcl或makefile脚本的学习,做到能看懂并且可以模仿着写简单的脚本用于仿真就好。
当你走完数电、Verilog、SV和UVM后,你可能又会发现虚拟项目(以I2C为例)又像一座难以翻越的大山。第一次遇到I2C中那么多寄存器,手无足措?第一次根据测试点写Testcase,难以下笔?没错,估计转行的都经历过这段痛苦的回忆。我的建议是用两个星期仔细看设计文档、寄存器描述文档和I2C协议,虽然枯燥,但是一定要细致的看。看完之后,你可能就对整个项目的结构有了初步了解,明白I2C和APB的VIP 在项目中是干什么用的。这时先分析整个验证环境的结构,组件之间的是怎么连接的。再去用参考的sequence跑仿真,结合寄存器文档认真分析波形,怎么对不同偏移地址的寄存器做读写操作?寄存器模型做的操作是如何反映到总线上?波形上看中断是怎么触发的?等你把所有的参考的sequence跑完,就差不多明白这个项目了。这时候要沉下心仔细分析参考代码,底层VIP中driver和monitor是怎么实现的?scoreboard中是怎么对比的?覆盖率是怎么定义和收集的?element sequence和virtual sequence是怎么剥离和组合的?最后,自己还需要再去做一些与别人不一样的事,比如你可以自己写VIP替代原有的VIP,自己写一个sequence验10bit地址第2个Byte不匹配而触发ABRT,自己写一个scoreboard等。同样的都是培训班的项目,你要想着怎么做出和别人不一样的来,这是很多面试官想要听到的。
这里我有一些个人拙见:
1.转行的最好还是先看视频,再去看书。看视频比较易懂一些,也比较容易抓住重点,再看书去深入理解,会有比较好的效果,也容易提高自己的学习积极性。
2.到了SV和UVM部分时,需要代码练习。前期你可能一个代码也敲不出来,我建议你不要死磕,先读懂别人的代码,然后想都不要想,抄就完事了。抄着抄着你就明白mailbox是怎么传递的,TLM端口是怎么连接等。不要想着上来就改别人的代码,咱脑子里都没有几个好的代码风格,改也是一堆bug,最后bug调也调不出来,反而消耗自己的学习积极性。建议先阅读和仿真参考的代码,再把自己抄完的代码编译、仿真,debug一下。
3.秋招一定要提早(7月初)投简历,而且我建议海投,哪怕你不去这家公司,多做一做别人公司的笔试,然后把这些笔试题总结。后面你会发现公司的笔试题大同小异,那些东西颠来复去的问。面试更是要多面,并且面试真的可以提升你的水平。你可以把每次面试说的不好或没答上来的,查缺补漏,后面你会发现在面试时会得心应手。笔试和面试一定要提前准备,在网上搜一搜笔面经,提前总结。
4.我建议转行的战友花点时间写自己的个人博客,总结自己学习的知识点和遇到的技术难题及解决方案。既方便随时随地查阅,同时博客可以直接证明自己的学习路径。当你在面试时,你跟面试官说有自己的个人技术博客,你觉得面试官会不会给你加分?很多次面试,面试官提前查看了我的博客,此时面试时氛围会很轻松。转行的战友们,一定要想办法增加自己筹码。
5.转行如果没有人带,我建议你在碰到棘手的问题时,可以先百度或博客查一下。如果没有办法解决,就在学习群问问人,还是不能解决的话就先跳过去,不要耽误后面的学习。同时,这里我也建议你要调动你所能调动的一切关系,尽量能找到科班的同志带一带。实在觉得自学很困难就报个班。
6.很多公司面试会深挖SV和UVM的细节,基础一定要牢。SV中和oop概念、句柄、多态、静态与非静态、数组和队列、数据类型、function和task的细节、深拷贝与浅拷贝等,以及SV中特有的约束、随机化和覆盖率收集都要门清。UVM基本的机制(工厂、phase等),尤其要理解寄存器模型,比如要知道这玩意怎么和总线沟通,又怎么和物理寄存器保持一致的。同时要把《UVM实战》一书认真看,很多诸如发送错误激励、覆盖机制的要素和sequence的启动方式等常见的笔试面试问题都出自这本书中。
7.对23届天坑战友说一句,明年势必会更卷。但是不用害怕,抵抗内卷的最好办法就是比别人学的多一点点,我建议AMBA中学到AXI都不为过,甚至PCIe的协议都可以看看。常见的外设,如I2C、UART、SPI的协议等都可以学。学有余力下,自己做一些设计相关的,比如AHB2APB、I2C之类的设计,网上的资料也很齐全。
8.工具上我建议前期跟着视频走,使用Questasim,方便学习和参照。后期等学了一些tcl脚本,开始I2C那些虚拟项目时,我建议还是要转到linux下跑仿真,学一学linux常用的命令以及脚本仿真的步骤,面试的时候有的面试官会问的。
9.最后强烈建议使用DVT来阅读代码,非常有助于你理解代码结构,对于新手而言就一句话“唉呀妈呀!真香!”。
最后,我想谈一谈对转行的看法。转行意味着芯片验证将是我们的事业,所以我们学习时不要太功利,要一步一个脚印来。速成的代价就是后期还是要回头重新学习,需要认真、全面和细致的弥补专业知识的不足。转行并不是一个应试环节,而是需要长期学习、终身学习来不断地提升自己,学习和工作时应该要力求细致、深入。从材料到验证,不是逃难,而是风口给了我们人生再选择的机遇。既然行业给了材料人机会,我们要对行业承担该有的责任感,相信大家应该也都不愿未来被人戳着脊梁骨骂道“都是材料那帮人把行业弄得乌烟瘴气”。至此,由衷感谢未婚妻和家人的理解,愿所有有心人终得偿所愿。