2021英伟达暑期实习面经(芯片设计前端/DFT)

准备了将近一个月,终于赶在三月的最后一天拿到了offer,暑期实习算是上岸了,后面还有阿里/华为等一些国内公司的面试,但既然拿到了nv的offer,后面的先就当积累面试经验吧~

网上关于nv的实习or秋招面经很少,硬件岗的更少(约等于没有好吧)。之前准备面试的时候,在网上找了半天,好像就只在牛客网上见过一篇关于nv硬件岗的面经,幸好当时认真看了。所以既然幸运上岸了,想趁自己还记得,record一下,希望可以帮到有缘人呀~

好了,废话不多说,开始正题。

个人基本情况

先说一下博主的个人情况:上海某985硕,专业材料工程(没错我是转行的,现在周围同学转半导体的也越来越多。。。卷永远只会迟到,但不会缺席,所以建议大家有想法的话还是尽早行动吧!),去年10月开始自学相关数字ic设计相关知识,没报班纯自学;然后今年2月找了一个学校附近校友创办的芯片设计Startup的日常实习,除此之外没做过任何项目,也没参加过相关的比赛。

面试情况

nv技术岗大多都为2-3面,其中硬件类岗位除了ASIC pd(physical design)要笔试外,其他岗位都不用笔试(这点还是很香的,据说pd笔试很难,知识点杂而且细,从前端问到后端);此外听说nv一般都是走社招,校招/实习HC很少(我收到offer的第二天,一个同学上官网看职位的时候,发现DFT-intern就已经下架了。。这点和Google倒很像)

dft部门的实习面试总共为三面,三轮均为技术面,技术面一(1面试官,约了1h,但实际大概只和我聊了三十多分钟)+技术面二(1.5h,三个面试官轮流问,其中有你投递部门的部门manager)+技术面三(美国总部主管面,约了1h,实际聊了40多分钟,dft的总部主管是个印度老哥,印度老哥嘛,大家都懂的)。其中个人觉得最难的是二面,此外,与其他公司相比,nv的难度还是不小的(如华为实习是2轮;1技术+1主管,而oppo只有1技术面+1hr面),当我知道自己还有三面,而且面试官是个印度人的时候,差点当场裂开。。。

感觉外企对英文的要求确实是很高的,一面/二面近一半的时间是英文技术面(就是用英文问你技术问题,也要求用英文回答),三面因为是美国总部面试官,所以是全英文技术面。

3月7日 投递简历

感觉周围去nv实习or工作的师兄师姐确实很少,所以没能找到人内推,就直接在官网投递了简历,而简历上能拿的出手的就2月底找的实习和硕士期间的绩点。。。。所以当时投nv其实是不抱什么希望的。。

3月22日 一面,技术面

过了大概半个月,官网状态才变为in process,随后收到hr小姐姐的一面通知,约了隔天的面试。一面感觉总体还是比较轻松,没让自我介绍,上来就让我用英文介绍了下ASIC的一般设计流程,然后针对我的介绍,对里面的synthesis,STA等的细节和原理进行了提问,然后问了我setup time/hold time的定义以及当出现setup time violation /hold time violation的时候该怎么处理之类的问题(这部分是全程英文);然后转为中文,问了对dft的了解,也是让我介绍了一下dft的基本流程,然后问了我一些关于scan chain,ATPG,JTAG的相关知识(jtag是boundary scan design中用到的一个基本结构),问我知不知道jtag中的TAP其实是个状态机,这些内容其实在数集上都有。最后问了我一些关于意向实习时间,个人情况之类的问题,并让我提问,我就随口问了下自己如果想去这个部门实习,还需要学点什么,然后面试官就给我简单介绍了一下dft部门的一些情况,什么dft也越来越像前端,然后让我有时间可以多看看有关dft的相关知识(这里面试管补充说觉得我对dft还是蛮了解的),然后说我有时间的话还可以学下python,tcl等脚本语言,这里我表示了赞同,说自己在实习的时候也发现了,sl在诸如EDA工具交互过程等一些场景中还是经常用到的。

总的来说,一面的面试体验比较愉快,面试官也很随和,第二天收到了hr小姐姐的电话,约了二面的时间,说是会有三位面试官,当时问小姐姐nv的暑期实习一共有几轮,小姐姐说她觉得这次应该是终面,因为二面的3个面试官里有我投递部门的manager。

3月25日 二面,3面1,技术面

十分忐忑地迎来了传说中的二面,在这之前我又把刷过的一些代码题复习了下,同时也恶补了下dft的相关知识(当时因为感觉时间不够,有一次在上班时间还偷偷刷csdn/eetop上的题,差一点被主管发现,这点还是很不建议的,虽然我们主管人很好哈哈。。。)

开始面试,当时只有一个面试官开了摄像头(也是第一个提问的,就叫他1号面试官吧),先让我自我介绍,我就简单介绍了下自己的一些基本情况,重点说了下自己目前实习在做的项目,最后顺带提了一下自己的减肥经历以及喜欢健身和长跑,成绩也还不错之类的(聊到这个的时候面试官们表示了一下惊讶和赞赏,这让我当时的心情放松了不少哈哈)。自我介绍完,面试官说我们用英文聊聊吧,我说可以,然后就让我用英文阐述下对DFT的了解,这个我还是准备过的,所以就用我的construction site English给他输出了差不多五分钟(讲的过程中看到面试官频频点头,说明他还是能听懂的),然后面试官根据我的回答问了我一些dft的细节问题,比如scan chain如何插入?扫描寄存器与普通寄存器有什么不同?结构是什么样的?用verilog代码怎么写?还有一些相关的技术问题,当时答得比较顺利,所以有些问题现在想不太起来了,不够大多都是面经或书上有的。和1号面试官总共差不多聊了有半小时吧。然后换2号面试官问。

2号面试官声音听起来还蛮温柔的,刚开始的时候就抓着我简历上的一些细节和项目问,看我简历上写了我懂synthesis,就问我synthesis的原理是什么?有没有用过什么综合工具?工具是如何实现综合的(这个问题可能比较细,但其实就是optimization+map)?我说我用过Synopsys 的design compiler,然后问了我做综合的的流程,我回答说要先要有spec,再RTL coding,再做pre-sim,这些搞好得到RTL code后导入dc,然后设置约束(constrain),这里他打断我问要设置哪些约束,我说一般要有sequential constrain、area constrain还有power constrain等等,他又紧接着问时序约束一般有哪些,我说有input delay、output delay、周期约束,时钟skew约束之类的;然后看简历上写我懂STA,就问我STA的基本原理,用什么工具,什么是关键路径(critical path),最小时钟周期计算,出现violation怎么解决等等;接着转问我实习项目,具体干啥,我说我现在做的是AI processor,主要负责交换机子模块与外部client logic模块之间通信interface,可能面试官对接口通信协议这块不是很清楚,所以就没继续追问下去;紧着就问我dft相关的东西,比如在综合的时候能不能做dft啊之类的,这部分和前面一面问的差不多,就是把dft相关的一些基本问题就又问了一遍(不过面试官在这里越问越深越问越细,感觉想把我掏空一样,可能是想看看我知识储备到底有多深把)。

前面大部分问题,因为准备比较充分,所以答得比较快,直到面试官突然问到我怎么用Verilog产生一组一维伪随机数,这个题目我之前也见到过,但是当时认为这个比较偏软件,我投硬件岗应该不会被问到,所以就没仔细看。这个确实不会,瞬间心情就紧张起来了,不过心想虽然不会但总得说点啥,还好我之前自学过一段时间python,依稀还记得怎么用python写一个伪随机数组,所以我当时就和面试官说了自己的理解,说自己觉得这个用硬件语言实现感觉很困难,但自己在实习的时候听做验证的同事说过可以用sv调用function和数组来写,或者用高级程序语言如python实现,然后口述了一下用python实现的大致逻辑,最后只能直接说不好意思这个我确实不懂。。。(这里废话几句,感觉硬件设计确实是这样,用高级程序设计语言如C++、JAVA等很容易描述的一些功能,在用底层硬件语言具体实现的时候就比较困难,因为HDL比较底层,涉及到实际电路和算法,有很多约束条件,这也是做硬件设计比较难的地方吧。。。)。因为这个问题没答上来,说实话当时心里有点慌了。接着面试官继续深挖关于dft的细节,问着问着就问到我知不知道dft里面有一个DRC(design rule check)的步骤,我说我知道,一般是在scan chain insertion的时候要进行drc,然后他就问我dft中的drc一般是要检查哪些东西,这个知识点确实很细,加上我当时被那个伪随机数搞得很紧张,所以一下子就懵了,没办法只能把我知道的后端PnR后的drc给面试官讲了一下,面试官说你讲的没错,但是我想问的是dft中的drc是检查什么(我当时心想我知道呀,我又不是听不懂中文,这不是不知道嘛。。),然后给我一顿引导,因为当时确实慌,对那个知识点也不是很熟,所以楞是没想起来。。。(其实我个人是比较怕面试官给你引导的,因为万一人家给你一顿引导还答不上来的话,这就很尴尬了呀)。这个时候1号面试官发话了(这里真心感谢下1号面试官),说我们的candidate对DFT了解可能没那么深,说换一个角度问,然后问我dft设计是如何实现测试的,这个我当然知道呀,给面试官们一顿输出,还引用了之前不知道什么的时候在eetop上看的一个老哥的比喻,说dft设计相当于搭建了一条专门用于测试的“高速公路”,完事后1号面试官说嗯虽然专业名词没出来,但回答的是这个意思,然后总结其实就是DFT设计的三个原则,可控性(Controllability)、可观测性(Observability)、可隔离性(Isolatability),当时听完这个我瞬间就明白了drc那个问题,确实还是理解不够深呀!后面2号面试官还问了我一个关于dft的问题,好在答上来了。

2号面试官给我的感觉,是那种典型的技术大牛,讨论技术问题时层层深入,富有激情,而当聊到我知识盲区的时候,也乐于启发,循循善诱,还是十分期待能有机会和这样的同事一起共事的哈哈~

接着是3号面试官提问,3号面试官是位女面试官,光听声音就像成功人士,因为从她的声音中感受不到任何的情绪波动。。。上来第一句话就说,只问下我一些最基础的Verilog知识(当时听到这句话后我心里一紧,最基础的问题要是我都答不上来咋办。。。)。接着问我知道不知道同步/异步复位的区别以及用Verilog怎么实现?同步释放,异步复位的Verilog代码怎么写?状态机的Verilog怎么写?经典的跨时钟域(CDC)传递有哪些方法?数字电路中为什么要用触发器(Flip Flop)?接着问知不知道时钟分频,我说知道呀,我以为面试官会继续问我用Verilog怎么实现,所以就补充了一下说可以写一个计数器,然后计算时钟上升沿/下降沿的方法来实现,谁想到这里面试官不按常理出牌,而是让我搭一个四分频电路,这个虽然之前看到过,但是当时关注的重点是在代码实现上,至于电路我就只扫了一眼,还好记得这个是用D触发器实现的,二分频用一个就够了,那四分频就用两呗,而且要四分频的话肯定得级联,但当时有几根线怎么搭确实一下子没想到(这对微电子本专业的同学来说应该比较简单,毕竟这个应该算是他们的专业基础,转行的同学在电路方面可能要薄弱不少)不过好在这位女面试官和上一个面试官一样,也喜欢启发和引导,在她的不懈努力下我也终于是成功搭出来了。最后一个环节就是让手撕代码,共享屏幕,打开一个常用的文本编辑器,现场看着你写,当时给我出的题是写一个带异步复位和LOAD端的移位寄存器,并同时写出testbench,这个比较简单,花了几分钟给她写出来了。

整个二面给我的感觉确实是比较累,三个面试官应该是主要做三个不同方向的,1号面试官主要是做dft(后来才知道他其实就是主管),2号面试官应该是做综合相关的,3号面试官感觉比较偏前端设计,所以问我Verilog的问题比较多。当时是周四面的,大概在下个周一的下午,再一次听到了hr小姐姐的声音,说是要求我还要进行一轮美国总部manager的技术面,并被告知面试官是位印裔美国人,让我好好准备。。。

3月31日 三面,美国总部manger,纯英文技术面

因为有时差,所以约了北京时间中午的面试。说实话,打开摄像头,见到总部manager的一瞬间我就紧张起来了,因为我印象中的印度工程师都是黑黑胖胖,慈眉善目甚至有点搞笑的形象,但是面我的面试官五官硬朗,面容清瘦,而且十分严肃,面试全程基本没笑过。上来先让自我介绍,然后就直接开始手撕代码,还是共享屏幕那个操作,让我写一个简单的触发器,我问常用的d触发器可不可以,他说ok,然后我就开撕了,写完后他问了个奇奇怪怪的问题,因为我写的是常用的带异步reset端的触发器,所以代码里面用了negedge clk,然后他当时其实是让我解释一下什么是negedge(negative edge),我以为他是问我为啥要用negedge(这位印度老哥口音确实蛮重的,而且应该在美国呆了很多年,所以语速很快,加上我潜意识里认为不应该会问什么是negedge这么基础的问题),好在后面反应过来了。这个问题完事后就开始问我一些基础,也还是关于竞争冒险,亚稳态,跨时钟域、异步FIFO、STA基本原理、低功耗设计方法/原理那一套,接着又开始问我格雷码,什么是Gary码呀?它有什么特征?在哪些场景会用到?我当时说了一个在异步FIFO中,因为跳变位数少只有一位,所以用Gary码可以减小进入亚稳态的概率,然后面试官紧接着问我还有什么其他的地方会用到,当时想到之前在一本书上看到过,在状态机中给状态编码的时候,也会用到Gary码,因为减少相邻状态跳变位数可以减少动态功耗;接着又让我举例Gary码跳变位数比二进制码少的情况;因为这里聊到了功耗,所以他就问了我功耗的来源有哪些?有哪些低功耗设计方法?原理是什么?哪些方法是用来降低静态功耗的?哪些是用来降低动态功耗的?答完我就问我对DFT的了解,然后我就开始balabala,正当我准备展开详细输出的时候,面试官打断我说可以了。。。接着问了我一些关于dft的问题;最后问了如何用一个mux来实现一个与门;时钟分频如何实现;set violation 和 hold violation 如何解决等等。感觉这轮面试的最大难度还是在于要听懂印式英语和如何用英文来表述技术问题。

三面全程在问基础知识,没有问实习和项目的东西,当时约了1h,实际只聊了四十多分钟,最后面试官说他没有啥问题了,问我有没有什么问题,我当时心想咱两交流都费劲呢,还是别问你问题了吧,所以说了no,最后和印度老哥说了byebye并挥了挥手,老哥也回了我一个挥手,并第一次露出了自己的笑容。

3月31日 电话offer

中午面完,没想到当天晚饭刚吃完的时候,就收到HR小姐姐的电话offer,电话里hr再一次和我确认了入职时间,以及告诉我说DFT部门和美国/印度那边工程师的交流会比较多,让我做好心理准备,我说ok,因为我投的是暑期实习,hr随后问如果需要我提前入职的话,可不可以先远程实习之类的问题。

写在最后

感觉全程还是蛮幸运的,NV算是之前一直都不敢想的公司,作为GPU领域的老大,技术上就不说了,此外的955不加班、男员工三个月带薪陪产假,钱却不比阿里华为少(这点是真的香,我也是后来才知道哈哈),也许这也是为什么nv校招hc少的原因吧。感谢幸运女神的眷顾,不过还是需要继续加油呀,希望在nv实习的几个月里可以多学到点东西,争取转正~

猜你喜欢

转载自blog.csdn.net/Hadleysjtu/article/details/115384639
今日推荐