2021 汇顶科技 IC验证面经
汇顶科技提前批
一、感谢 。+1 同学投稿
项目相关的问题:
1.你做了哪些和uvm验证有关的项目
2.SPI的验证环境主要是怎么搭建的
3.APB总线端口处的transaction里面包含哪些
4.AHB和APB的比较
5.SPI端的vip是自己写的吗?(是)
6.vip作为master的时候,dut如何获得配置
7.IP和SOC的验证环境有什么区别
8.中断怎么验
9.仿真环境的打印如何实现
10.带CPU跑的时候CPU如何boot起来的
基础知识相关问题:
1.uvm验证环境中用到的通信机制?(实际上想问的是config_db,但我不认为这是通信机制)
2.sv中的通信机制,简单介绍
3.sv中的fifo如何实现
4.uvm中的port,export,imp
5.C语言如果想一个信号跨模块(层次),需要将这个信号设置为什么
6.uvm中run_phase和main_phase的关系
7.断言中如果两个sequence要同时开始同时结束,用什么判断
8.断言中信号的上升沿如何表示
9.断言中的$firstmatch什么意思
10.uvm的sequence要去调用sequencer中的东西,怎么实现
11.uvm的factory(覆盖)和callback的区别
二、感谢 ZZH 同学投稿
技术面:
1.自我介绍
2.为什么突然想接触数字IC验证
3.神经网络,用的什么开发板;项目门数,综合下来多大
4.UVM环境是师兄基础上改的吗?还是自己设计的。
5.SV队列和动态数组的区别
6.SV的并行进程用过吗?fork...join/any/none介绍一下?fork...join_any,想关掉单独的一个子进程。
7.SV的event搭环境用过吗?除了@还有别的触发方式吗?
8.你的环境socreboard里的TLM接口用的是哪种?TLM_FIFO和scoreboard之间用什么端口。
9.analysis_port?一对多端口,命名冲突怎么解决?
10.tlm_fifo默认深度是1吗?
11.有没有接触过UVM寄存器模型?如何和bus总线产生联系
12.CNN加速架构完整介绍一下。
13.UVM仿真脚本用的是什么?
14.VCS编译选项了解吗?
15.timescale了解吗?如果多个地方设置了timescale,以哪里的为准?
16.UVM环境testcase/每跑一个testcase都要编译吗?
17.代码覆盖率有哪几种?
18.GVIM相关。将10-20行的字符替换;块操作;
19.芯片验证的流程
20.后端流程一般做什么?
三、感谢 Jeff 同学投稿
SV相关知识:
1.动态数组,队列的区别。队列有什么方法?删除队列是怎么做的?
2.介绍一下logic类型,他跟wire,reg有什么区别?有什么优劣?
3.随机化怎么做?rand,randc,还有怎么做约束?
4.fork...join, fork...join_any, fork...join_none的介绍,怎么关闭一个子进程?
5.event怎么用?怎么等待触发?@和wait的区别?
UVM:
1.介绍一下寄存器模型。RAL中,有哪些内建序列?为什么内建的sequence只有0,5,A,F和random这几种?
2.RAL是怎么跟driver做互动的?
3.RAL有两种方式,一种是写一个寄存器就读一个,另一种是全部写完再读,那种比较好?为什么?
4.RAL中,如果set了,然后总线上一直get不到transaction,是什么导致的?怎么解决?
5.phase机制有哪些?哪些是task,哪些是function?
6.interface怎么传递?config_db在哪里set,在哪里get?
通识:
1.验证的主要工作是哪些?
2.功能仿真跟后仿真有什么区别?
3.为什么想做验证?
4.对网表的了解
5.脚本用什么写的?正则表达式的相关内容
6.还问了实习的一些工作
四、感谢 leelix 同学投稿
项目(MCDF):
1.介绍一下项目
2.是验证的某个模块还是子系统
3.MCDF有哪些部分
4.寄存器模型种有哪些变量(端口?没太听清楚)
5.Chnl的agent怎么构建的。有几个sequence。三个sequence信号传输是不是同时传输。三个sequence合并成一个的话,里面的代码该怎么写。
6.Soreboard和monitor怎么通信(好像是这么问的,不太记得了)
7.DUT和验证模块是通过什么连接的(interface),interface里面有什么。如果不用logic,进行双向传输的改用什么?(wire,当时说reg在verilog种类似于触发器,触发器不可双向传输)
基础题:
1.介绍一下fork join。有哪几种。如何停止fork join。如果要停止fork join中的某一个具体的线程该怎么做。
2.Event知道吗?介绍一下下event。Event的作用域。
3.用过随机化函数吗,说一下有哪些。
4.UVM学习过吗?UVM的各个组件和大框架说一下。
5.UVM寄存器模型知道吗?(这个我不会,他也没再问)
6.如果把SV改造成UVM的话,应该如何改造。(因为我说的MCDF是用SV写的,不是UVM)
7.UVM的phase机制介绍一下。Phase中一般常用的是哪些。Build_phase和connect_phase作用。Build_phase和connect_phase是自顶而下还是自底而上?介绍一下为什么是这样的。
8.验证的流程
五、感谢 龟龟 同学投稿
非科班转行IC验证,年初开始学习sv,uvm,两个项目经历。
一面:
1.自我介绍
2.uvm compent object讲一下
3.寄存器模型前门访问后门访问
4.前门访问详细的流程
5.后门访问的使用方法
6.virtual function
7.综合是什么
8.怎么综合出组合逻辑,时序逻辑,latch,dff
9.跨时钟域怎么处理
10.多bit信号能不能直接打两拍
11.讲一个最熟悉的项目,详细介绍验证环境结构
12.测试点怎么分解的
13.test case怎么写
14.driver直接发送激励给scoreboard行不行
15.sequence发完最后一个事务后直接结束行不行
16.set drain time是什么
17.项目怎么考察验证的完备性
18.覆盖率怎么收集,用的什么eda工具,哪个指令,生成的文件格式是什么
19.多个覆盖率文件怎么合并
20.makefile的目标与依赖,执行过程是怎样的
21.makefile时间戳的概念
22.uvm,Verilog学了多久
二面:
1.自我介绍
2.优点缺点
3.怎么弥补缺点
4.怎么看待加班
5.想拥有的专业技能是什么
6.那之前为什么不去掌握这个技能
7.最近一次失误导致承担责任的事情
8.项目里和别人怎么合作
9.怎么提升合作效率
10.期望工作地点
11.对汇顶的了解
12.重复性高的工作怎么面对
13.为什么转行
14.怎么弥补与科班同学差距
15.有没有其他公司offer
16.你对验证岗位的了解
17.未来职业规划
18.项目的收获
19.想来汇顶吗,给你offer你会来吗
三面:
1.自我介绍
2.项目中发现的第一个bug
3.想要拥有的专业技能是什么
4.怎么调节加班状态
5.职业规划
6.怎么和设计人员合作
7.对未来主管,导师有什么期待
8.对汇顶了解多少
反问:
1. 工作强度
2.上海业务
3.培训制度
4.我的面试表现
六、感谢 TY 同学投稿
技术面:
1.logic和wire、reg的区别
2.队列、数组的常用方法
3.fork join有哪些,如果用fork join_any,往后执行怎么等待或者关闭fork里的进程
4.项目简单问了句,几乎没怎么问
5.tlm有哪几种接口,sorceboard用什么接口
6.config_db相关,作用是什么,怎么用
7.在哪里用config_db set virtual interface,哪里get?
8.如果想在sequence里使用config db要注意哪些东西?
9.如果使用tlm接口,一个类中有多个同类型的接口,需要注意什么?
10.assertion相关问题,什么是throughout?
11.覆盖率有哪些?行覆盖率冗余是什么意思,面试官有的时候if没写else,case没写default,就会出现
七、感谢 兼珏同学投稿
项目相关:
1.AHB的trans类型,burst类型,AHB和APB的区别,和AXI的区别
2.C语言的条件判断在x86的isa和mips的isa中分别应该怎么写,有什么需要注意的地方(延迟槽)
3.Instruction memory中如何读取hex文件,asm到hex的脚本是怎么写的
基础知识:
1.SV中logic和wire,reg的区别,logic有什么局限性
2.SV中event的用法
3.SV中queue和array的区别,如何删除一个queue
4.uvm中有哪些tlm通信方法,analysis port和nonblockng port有什么区别,anaysis_fifo
5.uvm寄存器模型,为什么内建的sequence只有0,5,A,F和random这几种,前门访问和后门访问的区别
6.带参数的断言用过么(没用过)
7.vcs编译选项,如何把多个case的coverage合并
8.default sequence用过么(没用过)
9.vir seq中包含哪些东西,怎样挂载到vir seqr中
八、感谢 ZH 同学投稿
1.一半时间都差不多是关于项目,围绕简历上的项目去问,写的基本都会涉及,主要会关注项目职责,自己承担了哪些工作,tb架构,难点是什么,golden data 怎么来,如何去配寄存器,寄存器值采用什么方法去传递到C中2.DMA的项目,围绕apb ahb axi总线去问了下,三种总线的区别,优缺点,ahb axi为什么是高速总线,ahb最快几个clk就可以完成一笔command(这个我不太会…..面试官笑了笑,emmm,了解不太熟嘛)。 3.关于基础知识,断言断言还是断言!!!汇顶貌似特别看重断言。。。
4.tlm port有什么各自区别
5.phase机制
6.uvm有啥通信机制(第一个想起的只有tlm,他问还有啥,就只能答了mailbox,再问的时候一脸蒙蔽….)
7.sv怎么实现一种类似于fifo的功能,还有就是一些DPI的东西,感觉可能做系统级多??问了不少SOC的方面
九、感谢 ZDZ 同学投稿
一面技术面(60mins): 1.自我介绍
2.AXI有没有实现out of order 和 outstanding?
3.AXI有没有实现背靠背?
4.介绍一下FIXED,INCR和WRAP传输?
5.WRAP模式下首地址为4,burst length=4,burst size=4 bytes 的地址变化?
6.AXI有哪五个通道?
7.是否了解SPI和AHB?
8.并发断言检查了哪些时序?
9.简历中说使用了SV和UVM搭建验证环境,用到了哪些SV功能?
10.UVM环境是如何搭建的?
11.scoreboard是如何写的?怎么比较读写数据包?
12.UVM组件是如何通信的?
13.除了TLM通信还有哪些组件通信方式?(config_db)
14.SV中有哪些线程间通信方式?
15.semaphore和mailbox有何差别?
16.在UVM和SV中如何实现一个FIFO?
17.请问你有什么问题要问?
二面HR面(20mins):
1.你之前的简历申报中写:平台>技术>新人培训,能否阐释一下?
2.为什么说汇顶是个好平台?
3.你是通过什么渠道了解到汇顶的?
4.如果阿里给你Offer你会选择去么?
5.说一下你研究生阶段导师和同学对你的评价?
6.说一下从本科到现在遇到的困难以及如何解决的?
7.有什么专业能力以外的兴趣爱好?看书
8.最近读了什么书?心理学,春秋战国,《动物凶猛》
9.讲一下你最印象深刻的书,并从书中学到了什么?
10.你是独生子?
11.你还想问些什么?
三面综合面(20mins):
1.简单介绍一下你自己
2.说说你实习期间做了什么?
3.介绍一个设计中遇到的Bug?1 byte读写时Wlast信号拉高
4.为什么选择验证而不是设计?
5.进公司以后你希望你的主管和导师具备什么样的品质?
6.你对工作以后三到五年是如何规划的?
7.你对汇顶有哪些了解?
8.你想问我什么问题?
十、感谢long 同学投稿
技术面:基础知识:
1.fork join哪几种,区别 怎么关闭fork进程 和等待进程
2.UVM常见的通信方式
3.sv常用的通信方式 旗语怎么用 抱歉我不会用 就看过书
4.config_db怎么用
5.tlm有些什么端口,你的项目中怎么用的
6.断言会不会 我就会一些简单的。。。那就说说你用过什么断言吧
7.覆盖率怎么写的 你是怎么收集覆盖率的
8.寄存器模型会吗 讲一下
9.用过哪些接口 讲一下时序
10.Fifo怎么用sv来实现
11.讲一下phase机制
项目:
1.ahb接口说一下 问得比较细 每个信号有哪些都说了
2.你用过svtb平台是的吧 说下在你的项目中和UVM平台有什么不同
3.你报过培训班吗 没
4.讲一下你的验证环境的搭建
5.怎么实现循环跑同一个测试用例
6.你说用过fpga,什么项目 讲一下怎么实现的
反问:汇顶做些什么
HR面:
1.项目都是自学的 原因--做器件的
2.工作地点 老家在哪 挺近的
3.为什么保研选了个器件的导师
4.为什么选择突然选择做数字验证