2021届数字芯片秋招记录
HR面这类的就不记录了,只写一写技术面、主管面的经验。
vivo提前批
岗位信息
投递岗位:芯片验证工程师
一共两面,一面技术面,二面HR面
技术面
- 首先介绍教育经历和项目经历
- 聊项目,会扣得比较细,根据项目提问题
- 你的加速器有哪些模块?是并行的嘛?
- 你的项目中使用了m3软核,你能解释一下m3启动流程吗?我回答说我不了解
- 你用过axi嘛,axi的特点有哪些,size信号是做什么用的?
- 解释一下CNN的典型层,我项目里有相关的
- uvm有什么特点
- fork-join,fork-join_any,fork-join_none的区别,如果fork-join_none里面是a和b,后面再跟个c,他们的启动顺序是?如果想让c最后启动怎么做?我说的是加一个#0
- 启动sequence有几种方法
- vritual sequence如何工作?
- tlm接口有哪几种?实现tlm通信要做哪些工作?
- 你的参考模型是c吗?还是sv写的?
- 覆盖率有哪几种?代码覆盖率和功能覆盖率如何收集?
- phase有哪些?
- component和object的区别?
- new和create的区别是?
- 如何关闭随机约束?
结果
收到感谢信
乐鑫提前批
岗位信息
投递岗位:数字IC验证工程师
一共两面,技术面,HR面
技术面
- 自我介绍,教育背景,项目经历
- 你在项目中担任的角色和承担的任务是什么
- UVM有什么优点
- 工厂机制的好处是什么?
- 通过工厂进行覆盖有什么要求?
- vritual function/task的作用是什么?这属于oop的什么特性?
- 用任意语言找出100以内的质数
- 在sv或者v中产生一个100Mhz的时钟
- 域的自动化有什么好处?
- 如何启动test?
- config db有什么参数?
- 如果环境中有两个config db set,哪个有效?
- 你遇到问题的时候是如何一步步解决的
- rand bit data[100],如何约束它随意一位是1,剩下的都是0?
- 除了培训班和实验室项目,你为了进入IC行业还做了什么自主学习?
结果
收到offercall
卓胜微
岗位信息
投递岗位:数字验证工程师
邮箱投递,等待面试中
汇顶科技
岗位信息
投递岗位:数字验证工程师
技术面/25min
- inout能用logic吗,为什么
- sequence和sequencer有什么区别?分别继承自什么类
- 寄存器模型了解吗
- 为什么一定要进行网表仿真,网表仿真的作用是什么
- uvmcallback讲一下
- 你在项目中遇到过什么问题?如何解决的?
- IC设计的整个流程了解吗,讲一下
- 建立时间和保持时间是什么,违例了怎么办?
- clocking block是什么?
- 跨时钟域怎么处理
- 为什么想接触IC验证
- 你对汇顶了解多少?
- c和sv怎么交互?交互的接口叫什么?
- 你了解ovm、vmm他们是什么吗,和uvm什么关系?
- 用过脚本吗?
HR面/30min
- 你人生中遇到了什么重要的事件吗,对你影响很大
- 评价一下自己的大学生活
- 为什么比赛不找本校的要找本科室友?
- 你有没有什么坚持了很久的事情?
- 你公众号有多少粉丝?为什么说以后可能会更新频率下降?
- 你是如何看待目前华为的压力的?
- 你有拿到其他offer吗?如何考量
- 你对汇顶的了解如何?
- 你的职业规划是怎样的?
- 你对工作地点是如何考量的
面试官给我讲了很久汇顶的业务,还有汇顶的优势,下周出结果。
大疆正式批
岗位信息
数字IC工程师
笔试挂
oppo提前批
岗位信息
数字验证工程师
官网投递
面试
一面
和了解到的其他人比起来,我的面试官问的问题有点水,问了一堆设计的问题,说应届生不咋懂UVM,最后我建议他以后多问问验证的问题。。。。。
- UVM环境组件有哪些
- interface怎么传递到环境当中
- 动态数组和队列有什么区别,队列能通过索引取值吗
- always @ *的作用是什么
- 分支不写全会发生什么
- 什么是阻塞赋值和非阻塞赋值
- 描述一下AXI的特点,以及一个写事务的过程
- 用AXI,起始地址0x00,突发长度4,每周期发32bit,地址怎么变化
- 时序路径有哪几种
- 什么是建立时间和保持时间
二面
- 自我介绍
- 你在搭建UVM环境的时候从拿到任务到完成环境是一个怎样的流程?
- 分析spec
- 提取功能点
- 根据接口时序,规划drv的tranction内容
- 根据spec编写参考模型
- 完成验证环境组件编码
- 根据spec编写对应的sequence,testcase,定义功能覆盖率
- 你有遇到设计出现bug吗
- 如何处理bug
- 如何和设计人员协同解决bug
- 如何保证你的参考模型就是对的?
- 你的设计中有跨时钟域的内容吗,你是如何处理的,处理跨时钟域有哪些方法?
- 验证环境是你独立完成的吗
- 你是如何定义功能覆盖率的?考虑了哪些点
- 分支覆盖率属于什么覆盖率?
- 代码覆盖率达不到100%,你是如何分析的
- 对于内部数据的肯定会出现一些地方翻转覆盖率达不到100%,你是如何考虑的,会care吗
- 设计内部有很多模块,你们有做小模块的验证吗?
- 系统级联后出现过什么问题?
- 详细讲一讲你的另一个项目
- 你的简历上看起来设计验证各占一半,你的倾向是设计还是验证?
- 你的职业规划是怎么样的?
结果
收到offer
中兴微电子
投递信息
岗位:我记得我投的是IC验证,但是面试的是IC开发,总之中兴的招聘系统和投递方式实在太迷了,看不懂
投递方式:不知道是问卷星生效的还是官网投递生效的,迷
一面技术面
设计
- 自我介绍,专业,学校,实验室项目,比赛经验,实习经历
- 项目细节,负责的具体内容是哪些,你觉得哪一块最难,如何解决的
- 项目中有遇到异步处理吗
- 跨时钟域如何处理
- 什么是亚稳态,为什么会产生亚稳态
- 什么是建立时间保持时间,他们的关系是什么
- 你的成绩如何,在班级排名多少
- 老家哪里的
- 你了解中兴有哪些工作地点吗
- 你的第一意向是哪个城市
由于我明确表示了我想应聘的是验证,所以面试官跟我说如果有招聘验证工程师会把我的简历投过去,如果没有这次面试就算是技术面试,进入后续流程。
验证
之前面的设计,和HR沟通了一下转成验证的重新进行技术面试
主要还是在讲项目
- 教育背景,项目经历,实验室工作
- 介绍一下你的验证环境
- 你的覆盖率是如何收集的
- 激励是如何产生的
- 覆盖率没收集满你是如何处理的
- 实习主要做了什么?
还问我为什么不去中兴华为实习。大哥啊,华为一个没招,中兴我都没找到哪儿招实习了。
- 你有在投别的公司吗
- 你的意向有哪些公司?
- 除了SV你有别的OOP的经验吗?
然后让我问了一些问题
- 新人培训如何?和华为联发科差不多,导师带着做。
- 你们这里的业务是啥?网络芯片里的流量控制方面的模块,不太懂。
联发科
投递信息
岗位:IC开发工程师
投递方式:官网投递
一面
- 自我介绍,项目经验,实验室经验,学校背景
- 一句基础知识都没问,全都是在聊项目,两个比赛和实验室项目问了个底朝天。简历上些什么,问什么,每一个部分都问。
- 问了硕士毕设做什么,讲了一堆原理,然后就让我讲具体设计实现,正好我电脑上有自己写的毕设文档,直接对着讲。
- 其中一个比赛我说我电脑上有PPT,直接让我对着PPT讲。
最后聊了一下他们的业务主要做的是手机里通信这块的,调制解调器、wifi、蓝牙这些。新人入职培训和华为差不多,设计验证综合前端后端都会cover到。
本来应该是两个面试官的,估计一个设计一个验证,但是另一个面试官没来,主要都在问项目的设计部分。
最后还问我愿不愿意做设计,我说被分到设计也没问题,但是我的意愿是验证。
联发科分为笔试、一面技术面、二面主管面。
结果
收到感谢信
海思优招
岗位信息
芯片与器件设计工程师
投递方式:官网投递
一面
- 自我介绍
- 你说你了解uvm,什么时候开始接触的,用了多久
- uvm是一个类库,你能简单画一下类的继承关系吗
- 项目中模块的结构图画一下
- 讲解一下你的模块都是怎么工作的
- 模块的上下游接的是什么
- 考虑过模块的带宽问题吗,axi能满足你吗
- 手撕代码,上升沿检测,并且讲解一下思路,我没考虑到输入可能是异步的,要打拍
- 考虑留在实习的公司吗
二面
- 自我介绍
- 验证的流程
- 验证环境的构成
- 如何保证验证的完备性
- 如何评价验证的完备性
- 芯片设计的整体流程
- 从验证的角度来说,如何检查异步问题,内部信号拉出来看,延迟驱动,想不起来了
- 手撕代码给我改成写测试点了
一个模块,vaild会连续拉高,同时有16bit数据进来,vaild连续拉高的周期数为3-255,然后模块要把这些数据求和,但是要把最大值和最小值踢除,最后done和sum一起有效。另外不用考虑两次求和之间的间隔,假设无限长。
我写的测试点:
- 复位后done和sum的状态是否正常
- 3拍、255拍、随机拍功能是否正常,随机化数据
- done和sum是否在vaild拉低以后的有限拍内有效
- 特殊拍数,和拍数
- 特殊数据内容,全0,全FFFF
- 特殊数据分布,全部相等,全部只有两个值,全部只有三个值
- 16bit每一bit都翻转
- 数据较大时的溢出检查
- done和sum不能再vaild有效期间进行有效
- 数据分布:正态分布、均匀分布
- vaild和data不同步的时候异常处理
- 数据如果在0-2或者超过255个时的异常处理
- 这么多功能点,如何实现检查?
总结一波手撕代码的题型:
- 序列检测
- 序列生成
- 帧头检测,这个可以看我之前暑期实习的时候面试
- 红绿灯
- 前面提到的剔除最大最小值的累加模块
- 上升沿检测,记得做异步处理
- Round Robin仲裁器
- 有符号比较器
- 三分频
- 异步FIFO的关键代码
下面给一个4输入RR仲裁器的代码,核心就是使用优先级选择器
module arb_comb4 ( input [1:0]cur_arb_id, input [3:0]arb_req, input arb_en, output reg [1:0]nxt_arb_id ); always @(*) begin if(arb_en) begin case(cur_arb_id) 2'd0: case(1'b1) arb_req[1]:nxt_arb_id=2'd1; arb_req[2]:nxt_arb_id=2'd2; arb_req[3]:nxt_arb_id=2'd3; arb_req[0]:nxt_arb_id=2'd0; default:nxt_arb_id=2'd0; endcase 2'd1: case(1'b1) arb_req[2]:nxt_arb_id=2'd2; arb_req[3]:nxt_arb_id=2'd3; arb_req[0]:nxt_arb_id=2'd0; arb_req[1]:nxt_arb_id=2'd1; default:nxt_arb_id=2'd1; endcase 2'd2: case(1'b1) arb_req[3]:nxt_arb_id=2'd3; arb_req[0]:nxt_arb_id=2'd0; arb_req[1]:nxt_arb_id=2'd1; arb_req[2]:nxt_arb_id=2'd2; default:nxt_arb_id=2'd2; endcase 2'd3: case(1'b1) arb_req[0]:nxt_arb_id=2'd0; arb_req[1]:nxt_arb_id=2'd1; arb_req[2]:nxt_arb_id=2'd2; arb_req[3]:nxt_arb_id=2'd3; default:nxt_arb_id=2'd3; endcase default:nxt_arb_id=2'd0; endcase end else nxt_arb_id=cur_arb_id; end endmodule
结果
进池子录用排序
海光
岗位信息
SoC验证工程师
官网投递
一面
- 自我介绍
项目相关:
- 你的UART uvc的设计思路讲一下
- 你是如何考虑复用性的
- checker是如何检查的?
- 定义了哪些覆盖率,收集情况如何
- 有没有spec作为参考?
项目无关:
- 考虑一个加密模块和解密模块,如果模块加密然后再解密的输出和你的refmod的输出完全一致,是否可以认为模块没有问题
当时没想到,当时后面问了面试官,可能加密模块是错的,解密模块也是错的,两边错的一样,数据经过加密再解密后能够还原,但是其实加密解密模块都是错的。应该把加密和解密模块分开考虑,单独进行验证
- 如果一个地址转换模块,进行验证的时候,出现了bypass现象,无论输入什么都是原原本本的输出,有可能是什么原因造成的?
可能是模块顶层连线出错,或者模块具有bypass模式,验证时把模块配置到了bypass模式中
- 什么是vritual sequencer,作用是什么?
- object具有phase机制吗?
- 你是如何考虑工作地点的
我的提问:
- 成都的site主要负责哪些业务?
soc设计,南桥北桥芯片,高速接口,比如sata、pcie、ddr、usb
- 新人如何培训的?
虚拟lab+mentor机制
- 如果通过了,后续还有哪些流程?
一共两面,技术面和HR面,这次通过了的话后续等HR面就行了
紫光展锐
岗位信息
数字芯片验证工程师
一面
- 自我介绍一下
- 你在实习期间做的是什么?
- 为什么只实习了一个月?
- 详细讲一讲你复旦微的比赛内容
- 为什么你获得的是第三名
- 验证环境中,你定义了哪些功能覆盖率?
- 代码覆盖率有哪些?达到100%了吗?
- 为什么代码覆盖率没有达到100%
- vritual sequencer的作用是什么?
- 讲一讲集创赛的比赛内容
- 了解axi总线吗,axi总线有什么特点?axi总线有几个通道?什么是outstanding,什么是out of order?
- 你觉得的优势是什么?
- 你在实验室的内容是什么,发专利和论文了吗?
- 你对于城市是怎么选择的?
- 你现在有多少offer?
二面
- 本科是哪里的?
- 成绩怎么样,有获过奖吗?
- 复微杯这个比赛含金量怎么样?决赛有多少人?和实验室课题关系大么
- 毕设做得怎么样?最后要达到一个什么样的成果?实验室有没有和公司合作?
- 你的加速器是做算法还是做实现?
- 你广东长大的怎么没有广东口音?
- 实习期间做了什么?环境搭了多久?学习的vip是哪家的?
- 什么时候开始接触uvm的?有没有遇到什么困难?
- 你主管名字叫什么?(说是有同事跳槽过去了。。。
- 实习公司给你意向书了吗,如果都拿到了你会怎么考虑?
上海做的是消费电子,成都做的是近距离通信,验证比较缺所以可能会支援项目。跟我说一面问过技术问题了,就不再问了,遇到好多在平头哥实习的了,大概了解什么情况了。
AMD
岗位信息
设计与验证工程师
面试
- 自我介绍一下
- 你偏向设计还是验证
- 给你的sv和uvm打个分,满分100
- 讲一讲在项目中负责的内容吧
- 你是如何实现矩阵运算的,有没有考虑过低功耗
- 你的加速器设计的难点在哪里?
- 讲一讲你的环境构成吧
- 从那些角度定义的覆盖率?
- 什么是多态
- sv支持多重继承吗
- sv支持重载或者覆盖吗?
- sv的interface的作用是什么?
- rand和randc的区别是什么
- 如何关闭某个变量的随机
- 如何关闭某个约束的随机
- 如何指定某个coverpoint在特定条件下进行采样
- iff是什么的缩写
- 如何指定不要统计某些bin
- ignore bins和illgeal bins的区别是什么
- assertion中的交叠非交叠是什么意思
- Property是什么
- 如何指定对某一个Property进行覆盖率收集?
- build phase和connect phase分别做什么?自上而下还是自下而上?
- task phase有哪些?
- 控制phase的是什么机制
- post shutdown phase结束了run phase没结束,会进入下一个phase吗
- 环境中有ral model吗,解释一下为什么要使用ral model
- 如果给你一个ip,带寄存器配置接口,dma接口,还有spec,按照你的理解,你会怎么进行验证?
- 如果代码覆盖率95%,功能覆盖率80%,test pass100%,请问接下来怎么让覆盖率收敛?
这里我说把约束收紧,或者用直接激励,面试官说你要把代码覆盖率没有toggle的地方和功能覆盖率没覆盖的地方联系起来
- 如果功能覆盖率100%而代码覆盖率不到60%,原因是什么,如何收敛?
- 英文自我介绍一下