【FPGA开发/数字IC设计岗】校招求职准备专题
一、了解校招
二、 校招规划
在这里结合本人经历,简单介绍对FPGA开发/数字IC设计岗位招聘可做的规划和准备,可能不适用于所有人,但希望能给部分求职者带来一定的启发。一般vivo的提前批是来的最早的,在5月底便会发布提前批的招聘信息,在此以5月底为招聘开始的时间节点(如果参加9月份秋招,所有的时间节点可根据情况调整)。在此之前,需要进行两大部分的准备:简历准备和笔面试准备。
(1) 简历准备
作为技术岗,项目经历是简历上最重要的模块。如果研究生阶段就是做FPGA或者数字IC相关项目的,这部分内容还是比较好写的,本人研究生阶段所做的项目刚好比较对口,所以,我是从5月初开始制作简历的,写完发给师兄们看看,中间会一直进行修改。如果是从其他方向转数字IC的话,可能需要提前准备一下项目相关经验,然后再进行简历制作。在此提一句:简历是修改不完的,不要觉得自己简历做的不够完美就不进行网申,后续发现问题再慢慢修改即可。
(2) 笔面试准备
笔面试我是从4月底开始准备的,4月底的时候陆续了解一些岗位必备的基础技能以及面试必问基础知识,空闲时间看看别人的面试经验(牛客、知乎都有不少的帖子可看),5月份正式进入相关准备工作。
对于笔试部分,我做的笔试不多,但感觉笔试无需进行过多的准备。一方面,如果笔试太难的话,仅靠短时间的复习,效果不大;另一方面,笔试题目中规中矩的话,在平时积累以及面试准备中几乎都能涵盖到。对于数字IC/FPGA岗位的笔试题,牛客网上发布了一些公司真题,在此强推,笔试前真的可以刷刷。去年vivo提前批笔试前,我在牛客网上刷了几套题,然后第二天笔试中出现了部分原题。
三、 岗位技能
这部分内容是我自己在面试准备过程当中复习知识点所做的归纳以及面试中常问问题的总结。
(1)接口协议
1)最常用的接口协议:SPI、UART、IIC。如果简历中涉及了这些协议,那么面试时这些通用协议的使用就是常问问题。比如:SPI有哪几种工作模式,使用SPI协议时用的状态机有几种工作状态以及状态机的跳转条件等等,另外各种协议的时序图,具体细节也要很熟悉。
2)高速协议:AXI、JESD等等。要是会的话会比较加分,不会的话也没什么大问题。
(2)复位设计
复位的方法:同步复位、异步复位以及异步复位同步释放(软复位/硬复位这种问的少)。
这部分内容不仅面试问,笔试也会考。笔试中可能会让你写一下异步复位同步释放处理的verilog代码,画一画对应电路图等等。面试的时候也会问复位的方法有几种,对应的优缺点,你在做项目时,复位是怎么设计的等等。
(3) 跨时钟域处理
1)控制信号的跨时钟域分析、数据信号的跨时钟域分析,更通用的问法:单bit信号和多bit信号的跨时钟域处理。快时钟域跨慢时钟域、慢时钟域跨快时钟域、握手反馈机制、FIFO相关知识点要熟练掌握,简单代码要会写,这部分内容笔面试都会出现。
2)FIFO里面常问且笔试常考FIFO深度计算,同步FIFO和异步FIFO设计注意事项,举个例子:异步FIFO中,读写指针同步怎么处理,格雷码的使用,满空状态的判断,假满假空现象以及会对系统产生什么影响;同步FIFO比较简单,面试时可能会让你直接写一下同步FIFO的实现代码。
(4) 综合与静态时序分析
1)时序分析相关的基本概念:建立时间(setup time)、保持时间(hold time)、arrival time、required time、slack、clock skew、clock jitter、clock uncertainty、clock gating、recovery time、removal time、MCMM(multi corner multi mode)、OCV variation、4种典型data path等等。
2)时序分析:项目中涉及的时序约束问题,Setup time和Hold time时序与什么有关,出现时序违规应该如何修复。这部分还会出现根据所给电路,计算建立时间和保持时间的计算以及系统的最大运行频率(最小周期)分析。
(5) 低功耗设计
低功耗的分类:静态功耗、动态功耗,静态功耗和动态功耗分别与什么有关。重点掌握门控时钟设计方法,包括与门、或门分别与锁存器的实现原理以及电路实现图。RAM中也会出现低功耗相关问题,比如我之前遇到过的:将256* 8bit 的SRAM,拆分为两个128 *8bit的SRAM,其功耗该如何变化并分析原因。
(6)FPGA结构相关问题
1)FPGA器件资源:LUT、FF、DSP、RAM、FIFO、时钟管理模块等等。比如:FPGA的逻辑结构、CLB的构成等。
2)ASIC与FPGA设计流程以及FPGA、ASIC设计的优缺点等。
(7)手撕代码
这部分可以提前准备一下面试常问问题,比如:
1、奇偶分频的代码,奇数分频中占空比为50%以及不要求为50%分别应该如何写。
2、简单的状态机实现的序列检测代码。
3、用一个快时钟确定慢时钟频率的实现代码以及通过慢时钟确定快时钟频率应该如何分析处理。
4、异步复位同步释放代码
四、学习资源推荐
第三部分所述技能框架均为面试常问的问题,大家在复习时不能只局限于上述知识点,应该发散性的进行全面总结,对于上述知识点的学习,在此推荐部分优质博主:
1)肉娃娃、IC_learner,这两位博主对于知识点的总结非常全面,而且通俗易懂,非常适合初学者。
2)李锐博恩。他的文章我也是看的比较多的,通过他的推荐,get了一本还不错的书《FPGA之道》,这本书涵盖的知识点全面且详细,作者是以自述形式进行撰写的,很适合我这种文字阅读障碍者,不会觉得枯燥,是我为数不多的能够看进去的专业书籍。
另外在找工作之前,因为疫情在家闲置着,闲暇之余还做了一起学Verilog的99题。里面的题目涵盖了许多知识点,每天做个一两道题,不仅可以巩固知识点,还可以起到查漏补缺的作用。
此外,我一直记得很久之前师兄和我说的一句话,“与FPGA配套的官方文档才是学习FPGA的最好资料”。最开始由于专业知识的匮乏,直接啃英文文档实在吃力,当时无法理解这句话,通过后面的学习积累才发现这句话的真谛。网上的学习资料鱼龙混杂,不是所有的博文都能全面且正确的概括出所有的知识点,有时候就容易被一些信息误导。大家在学习时,可以对照官方文档去网上找中文资料对应着理解,在此推荐博主FPGADesigner,该博主学习了xilinx家FPGA的许多官方文档,并在网上分享了自己英文文档的阅读笔记。
关注 @校招硬件大牛 大牛 ,跟大家聊聊硬件校招那些事儿鸭~想成为专题作者,欢迎私信哟!