【大同学吧,是全国100+重点高校IT电子类等理工科大学生都在关注的校招、内推、实习的求职服务平台,提供海量互联网及半导体行业实习、校招等招聘信息,免费分享面经笔经、求职内推、行业干货,助力学子顺利拿下理想offer!】
随着技术的发展,企业对人才的要求也在不断提高,需要大家掌握越来越多的技术和知识。同时,学的越多,就会发展的越好。
虽然很多企业设置了FPGA岗位,但是FPGA其实只是一种工具。运用好工具,才能有好的发展。这款工具具体有哪些内容,又能够带来怎样的收益呢?
Julius老师的直播,告诉你答案
Julius老师高级工程师,曾任职上海贝岭、通用芯片研究中心、华大国奇科技。拥有10+年多行业的软硬件系统研发,FPGA系统研发和原型验证,数字前端设计和ASIC集成开发经验。在FPGA系统设计和数字前端设计方面有着丰富的项目经验。
经验分享
1.集成电路岗位
集成电路方面的岗位包括两个大方向:设计和Fab。其中设计又分为模拟和数字,模拟的专业性更强。数字分为前端和后端,前端之前还有算法。
2.IC设计的整体工作流程
首先是对需求进行分析,定出设计的speck,制定一些实现的方法。在MATLAB上做一些仿真,搭一些模型。做好之后,把算法转化成RTL,写好以后会做一些仿真,根据设计的规模大小,用system Verilog搭一些简单的模型,对算法进行仿真和功能测试,看是否可以实现。
然后再做一些可综合设计。做完功能仿真后,基本上可以做一些综合,综合就是把RTL转化成门级网表。到这里,数字前端基本就结束了。有些公司会把综合交给数字后端处理。
数字后端主要是版图,Pr操作,Timing等。数字版图和Pr做好之后,会出一个带时序的网表,给数字前端做后仿,没有Timing violation,就可以交给DFT测试,然后进行tapeout。
做仿真和验证是非常重要的。小公司的小模块,设计者自己搭建一个testbench就可以了。针对大公司里面大的模块,会有验证部门,由部门来验证设计。验证方法除了UVM验证方法学,还有FPGA原型验证。
3.数字前端
学习数字前端,对于微电的同学,要更侧重算法。做RTL这一块的工作,把算法转化成可综合的语言,这个的技术性要求高,不可替代性相对较强。
转专业的同学,可以把侧重点放在代码的能力方面。
数字前端要学Verilog,要熟悉linux操作环境和脚本,要了解Tcl、Makfile、Python,C。一般会用C来建模型,C的基础需要巩固。
System Verilog也需要一定地学习。自己做设计,做testbench,现在System Verilog也是主流。后面如果要做验证,UVM,System Verilog是必须要具备的。
写Verilog时,要注重coding style。如果面试时coding写的很工整,符合企业标准,会是很大的一个加分项。要避免一行里面写好几句,区分大小写。
大家可以网上搜索华为、AMD等大厂外放出来的coding style要求,借鉴一下。平时需要积累,养成好的习惯对将来的工作比较有帮助。
平时要养成写可综合语句的习惯。可以利用lint等工具来检查coding,根据error进行修改,确定语句的可综合性。
现在以同步时序电路为主,即基于某一个clock的上升沿进行时序逻辑设计。所以一定要掌握一些关键词,例如:always,always at时钟的上升沿。做设计要将某个时钟确定好。
小设计一个clock就够了。大设计需要几个clock,要注意对跨时钟域的处理,CDC等问题。平时要养成良好的习惯。
4.工具的使用
逻辑电路编辑完以后做仿真,业界大都是用VCS或者NC Verilog。这些都是在linux里面跑的,有机会多用VCS跑一下仿真。
还有综合工具,DC综合;查coding用lint;看波形用vivado;看CDC有没有跨时钟域问题用spyglass。时序分析用PT,即静态时序分析。
有机会微电专业的同学要跑跑后端。
5.FPGA
FPGA在数字前端里面基本只用于原型验证。为什么要做原型仿真:一般做仿真,仿真效率较低,特别是后仿。用FPGA来做仿真能够大幅度提高效率。
目前社会上对验证的需求比对设计的需求更大。做验证需要掌握Verilog,C,要会写脚本。System Verilog是必备的,UVM方法学也要会。还要会验证方法和工具。
FPGA本身只是一个工具。
学FPGA可以去研究所、通讯行业、医疗器械行业、金融行业,人工智能领域对FPGA的需求量也很大。做云服务器的企业,FPGA的应用非常广泛。
现在做FPGA,对综合要求越来越高。要会做RTL设计和仿真;要懂硬件电路,硬件电路上面的原理图要会看;会用示波器和万用表去量一些信号;懂arm,懂arm的C代码开发;懂linux操作系统。如果能懂二次开发是更好的。
如果是做电路设计,还要会看原理图,看PCB,对基本的器件和外围的二维电路都要有所了解。电子方面的综合性要求较高。
问题解答
1.跨专业如何学习FPGA?
跨专业学习FPGA可以看书,或者参加一些培训。自学FPGA,可以自己买一块开发板,自学时间成本会比较高。
学习FPGA主要还是以Xilinx 7系列以后的器件开发板为主。
2.在跑pt的时候,把setup和hold violation都修复了,后仿也会还有问题吗?是因为参数不准吗?
可能是CDC的一些问题,或者异步的一些信号处理掉了。还有SDC设置是不是正确,如果设置不够,约束条件设置不足,也会出现一些问题。
3.FPGA和单片机、DSP的差异在哪里?
FPGA是可编程逻辑阵列,是可编程的逻辑。MCU是可编程的程序,逻辑是定死的。FPGA的并行计算和并行处理的功能单片机和DSP是不具备的。
价格上MCU是最便宜的,一般是几十块到几百块。DSP会稍微贵一些,一般是几百块到2000左右。FPGA的开发板较贵。
4.硕士微电子材料方向,怎么转到ic前端的工作呢?
Foundry内部也会有一些做design service的部门,也会有一些做设计和验证的需求。学材料进Fab的比较多,如果平时写C的功底比较好,懂一些FPGA,可以在公司内部进行一些转岗。
5.数字前端和IP开发有什么差异?
没有大的区别,做数字前端开始也是从小的模块的IP开发为主。
6.处理器核做原型验证,哪些重点问题需要考虑?
一般做原型验证不用考虑模拟这一块。需要考虑时钟,复位,存储单元的总线,外围的总线,寄存器怎么处理,异常怎么处理等问题。
7.系统里面时钟域划分有什么经验依据吗?比如说按运算单元和存储部分来划分这种,还有什么其他的经验依据吗?
做架构或者集成的时候,每个时钟都会有自己的时钟域要求,,根据它的时钟要求设置时钟。如果可以是同时钟的,或者时序要求是一致的,可以放在同时钟域。如果时序要求是不一样的,时钟的频段是不一样的,只能通过总线,进行跨时钟域,所以要根据不同的要求来划分。