开出50w+最受欢迎的IC公司合集及面试经历(下)
其它
全志、复旦微、汇顶、晶晨、紫光同芯、乐鑫、格科微、奕斯伟、联芸、翱捷、奥比中光、大华、星宸科技、沐曦、壁仞、摩尔线程、澜起、vivo、长鑫存储、tplink……IC里边大厂各有各的优劣吧,其它独角兽公司也都挺不错的,今年创业公司挺舍得给钱的,整体提高了行业薪酬,反正平台、薪酬、岗位综合考虑吧。能开出50W左右(ssp)的公司有:平头哥、大疆、zeku、壁仞、比特大陆、算能、嘉楠科技、商汤、禾赛(算上期权也差不多)、地平线、中兴蓝剑、华为天才少年~
晶晨半导体
- SV中循环都有哪几种?
- OOP是什么?
- AHB协议和APB协议,AHB中Hready是怎么回事儿,APB中psel和penable的作用
- 一个子类可以有多个父类嘛?一个父类可以有多个子类嘛?在C++中呢?
- Struct的作用,union是什么?struct和类的区别,struct和union的区别
- 知道DPI嘛
- 对UVM的了解,什么是phase机制,你常用的phase机制,都是什么作用?
- Sequence是在哪个phase跑的
- Sequence中信号的随机,参数的定义写在哪个函数中?
- Run_test是启动UVM平台,应该怎么跑testcase,怎么启动
- C语言中指针是什么意思,怎么写数据
ARM中国
- 介绍自己
- APB和AHB的协议
- 如何完成APB和AHB之间的握手
- AHB怎么完成burst传输
- AHB to APB Bridge的测试点
- MCDF中的仲裁是怎么仲裁的
- 如果优先级一样采用轮询机制的话,你对轮询机制的理解
- 同步FIFO的测试点,FIFO的空满是怎么判断的
- 收集覆盖率了嘛,都有哪些?代码覆盖率都有哪些
- MCDF的测试点有哪些?
- 断言覆盖率都检查了哪些
- 寄存器和锁存器的区别
- 什么是建立时间和保持时间,如果违例怎么办?
- 跨时钟域应该怎么处理
汇顶科技
- 介绍一下自己,讲讲你在做这些验证项目中对verilog、systemverilog以及UVM的了解
- 这两个项目的driver有什么不同,你的数据怎么送进去的
- AHB的写过程和读过程,简述一下是怎么读的
- AHB的monitor是怎么写的
- Interface是怎么传递的,config_db的参数是什么样子的
- DUT和interface的连接
- Sequence是怎么启动的,你这有几个sequence,比如说3个通道的sequence怎么处理的,是有3个sequence嘛,有几个sequencer呢,怎么发送数据
- 说一下你对流水线操作的理解,是怎么流水的
- 说一下对burst的理解
- 你的AHB to APB的reference model是怎么写的
- 对TLM通信的了解,你sequencer和driver之间用的是什么端口
- 什么是阻塞和非阻塞端口,那driver用的是阻塞还是非阻塞?
- 对寄存器模型的了解
奥比中光
- 介绍一下寄存器怎么集成
- 寄存器怎么运用到环境中
- 还有你这个reg2bus和bus2reg的区别
- 只读寄存器怎么验证
- Sequence的启动
- 如何关闭约束
- 队列的使用方法,以及push back和pop front的区别
- Rand 和randc的区别
- Uvm的phase机制,各个component之间的phase是怎么运行的
- 组件之间的通信机制,analysis port和其它的区别
- AHB的传输类型,说一下4回环突发的传输应该是怎么样的,这个回环边界怎么确定
禾赛科技
- 自我介绍
- 你自己的项目是硬件的嘛,用什么语言写的,有没有设计一个模块
- 学过数电,模电,半导体之类的嘛
- 用过C或者是C++嘛,你以后有什么想法嘛
- MCDF和AHB都是网上的课程是嘛
- 你AHB是怎么验的,验证环境是怎么搭的
- 描述一下AHB协议
- 给你一个模块应该怎么验证
- 讲一下MCDF项目,你是怎么验证的,怎么打包
- 用MOS管如何搭与非门和或门
联芸科技
- 介绍自己,还有自己研究生期间的项目,因为他们也是做雷达的,对我这个项目了解的多一些。
- Scoreboard是什么时候比较
- Reference model是怎么写的
- 如果比较的时候rm有数据,而dut没有数据,那么你应该怎么比较
- 你的reg用的是什么端口
- Rm用的是什么端口
- TLM通信有几种方式
- 讲一下你的项目,是怎么回事儿
- MCDF中scoreboard什么时候比较,如果DUT没有数据,reference model里边有数据,会触发scoreboard嘛
- 如果跑了101个case,都报passed,但是其中有一个case虽然报passed了,没有触发scoreboard比较,应该怎么办
- event怎么触发?@和wait有什么区别
- 为什么转IC验证,为啥不去做算法
商汤科技
- 为什么转验证?
- 你之前保研的时候怎么不选IC。想来北京还是上海,之前保研的时候怎么没来北京
- SV里边find队列和find index队列应该返回什么?这个没敢懵,是不是返回数和索引啊?
- 有没有用过zadx(好像是这个东西)?
- 怎么验证一个DUT
- 用过断言嘛?写一个断言,a为高的时候,b为高,还有a为高的时候,下一个周期b为高
- 对商汤的了解,对AI的了解
- 项目中遇到什么问题是怎么解决的
- 对SV中约束的理解
- phase机制的理解
- rand和randc的理解
- 对进程的理解,我刚开始还以为是mailbox那几个,后来发现是fork join那三个的区别
- ref的用法
- 寄存器模型的使用,例如前门访问是怎么用的,后门访问呢,adapter是干嘛的
- sequencer和driver之间的握手机制
诺瓦
- 介绍一些自己
- MCDF项目是路科的吧
- 你在这个项目里做了什么
- 你那个AHB和APB项目是实际项目嘛
- 除此之外还有别的IC相关的项目嘛 诺瓦这个公司没咋问我,10分钟结束,对我的培训班项目丝毫不感兴趣
展锐
- 介绍一下自己
- 把写的项目都问了一下,重点问的是MCDF
- 寄存器的复位是怎么测的,寄存器的读写是怎么测的
- 代码覆盖率为什么没达到100%,实际中应该是怎么样的
- 功能覆盖率测了哪些功能点,是怎么写的,为什么没达到100%
- 断言覆盖率写了哪些
- 动态数组和关联数组的区别
- 三个Fork join的区别
- Task和function的区别
- Phase机制有哪几个,build phase是自顶向下,对这个自顶向下有什么了解嘛
星宸
- 刚开始就是问了一下基本情况
- 拿着线下的笔试题,让我用matlab写那个 maxpiol,简单的写出来了,复杂的不大会
- 然后就闲聊了一下,都是开放性问题,可以自由发挥
- HR面也很细,HR很好,很认真,问的比较全,但基本上都是常见的几点,接下来还有个技术二面
- 你对UVM有什么了解
- AHB的driver和monitor是怎么写的,你这个数据是从哪里来到哪里去
- APB的monitor和AHB的monitor之间的区别
- SV和verilog的区别
- Sequence和sequencer之间的通信
- Sequencer和driver之间的通信
- 还有组件之间的通信
- 寄存器的前门访问和后门访问
- Opp的三个特性
乐鑫
- 举例VCS的基本命令
- APB的写操作、读操作,什么情况下APB开始写
- APB的monitor是怎么写的
- AHB是流水的嘛,是几级流水,如果这一拍是地址,且有数据,那么下一拍的地址能改嘛
- 写一个100MHz的时钟
- Reg和wire的区别,并写代码让判断值应该是啥
- Logic和wire的区别,两者可以转换嘛
- 用你擅长的原因找出1:100的质数
中科芯58所
- 介绍一下自己,介绍一下项目
- FIFO的深度是多少?位宽是多少?仲裁的算法是什么?
- 参考模型是自己写的还是提供的,仲裁的话怎么在参考模型实现。参考模型怎么获取寄存器的值?
- 怎么配置RTL寄存器,通过平台的寄存器模型配置寄存器,寄存器模型里边的方法,写一个寄存器或读一个寄存器怎么实现
- 寄存器怎么实现前门访问和后门访问,怎么后门访问的路径怎么配置
- 寄存器的总线协议是什么,说一下APB都有哪些信号,怎么实现读操作
- 参考模型的monitor是怎么实现的,是人家提供的嘛,你做了哪些部分
- 断言覆盖率是怎么写的,断言的分类,断言的实现是在哪一个模块实现的
- 代码覆盖率和功能覆盖率,说一下对他们的理解,分析代码覆盖率用什么工具
- 分析功能覆盖率是怎么分析的,怎么收集的,怎么调用covergroup
- 说一下component和object的区别,item是component还是object
- Virtual sequencer 和sequencer区别
- 平台往里边输入数据的话怎么输入sequence, sequence,sequencer,driver之间的通信
- 做软件为什么想转验证
飞腾
- 看你参加了很多比赛,介绍一下你的IEEE全球极限编程
- 介绍一下MCDF,你的DUT的功能,搭建的验证平台以及怎么测的
- 说一下你的reference model和scoreboard是怎么实现的,reference
- UVM从哪里启动,接口怎么传递到环境中
- UVM的优势,为什么要用UVM
- 说一下ref类型,你用到过嘛
- 还有代码覆盖率和功能覆盖率90%多,为什么没有100%,你是怎么实现的
- 请说一下APB的读写操作以及AHB的Hburst
合肥宏晶微电子
- 你为什么转验证
- 三个线程应该怎么办?fork join有哪三种?如果加上wait fork 之后运行情况有啥变化?
- 简述UVM的工厂机制
- 你的功能覆盖率为啥只有95%,功能点是自己写的嘛,都验了哪些功能?
- 状态寄存器,如果状态是2,你采样的是1,怎么判断这个值是否正确?
- 你这个soreboard怎么检查数据,如果出来一个包,怎么检查。。。问了一堆,你的scoreboard写了多久,考虑了什么问题没
- 优先级的检查,如果三个上行的优先级是123,1为高优先级,2为低优先级,从formater中出来应该是什么样子的,如果连续发送又是什么样子的
- 如果你的上行数据比较快,下行数据慢,会怎么样,应该怎么办?我:用FIFO吧,那你的FIFO的空满状态怎么呈现到接口上?
- 看你这个断言覆盖率100%,描述一下你写的比较复杂的断言
- SV中的interface的clock blocking的功能,如果clock blocking定义在下沿,最后的结果应该是什么样?
- 动态数组和联合数组的区别?
深圳中微电
- 介绍一下项目,以及项目的验证框架-
- 你的Sequence是怎么处理的,和generator和driver 之间的通信
- Generator继承于谁?
- 寄存器复位值是怎么检查的? reg to bus和bus to reg
- 寄存器读写是怎么检查的?前门访问,你怎么知道你验的对不对?
- 代码覆盖率为什么没满足100%,没满足的话应该怎么办?
- 功能覆盖点是怎么找的,这个具有很大的主观性,你怎么确定自己找的就是自己验证的点?这能够覆盖完全嘛,应该怎么找功能覆盖点?
- 断言覆盖率是怎么写的,验了哪些?
- 你的数据包是怎么验的?你怎么知道对不对?
- 验证的时候为什么用SV而不用UVM?
- 讲一下 callback机制