数字IC/FPGA设计_新人入行分析

13 篇文章 0 订阅
3 篇文章 0 订阅

Our goal: help making good designs, not just find a job …

前言
从2019开始,随着芯片国产替代的推动,国家大基金等政策的加持,国内IC行业快速发展:投资规模,公司数量,从业人员数量与需求,市场份额等指标都快速向上。国内很多高校也相继开设集成电路/微电子专业,或成立独立学院,毕业生规模也逐年上升。行业火爆,抢人厉害,工资也就水涨船高,直逼互联网大厂的软件工程师职位。

看到IC行业的火爆,尤其是数字设计/验证/流程/后端,模拟设计/版图方向,很多同学都想加入其中,分享这次行业红利。但又担心:这个行业卷吗?我适合做这个吗?我能顺利找到工作吗?这篇文章,就从一个从业15年的数字IC设计工程师的个人理解出发,谈谈这3个问题。

注:本人主要从事数字IC设计工作,后文如无特殊明说,此文的IC方向一般指设计/研发方向:数字IC设计/验证/流程/后端,模拟IC设计/版图。芯片产业链的其它领域,如封装,测试,软件开发,硬件系统开发等岗位,因不甚了解,所以不做讲述。

IC行业卷不卷?
IC行业,目前已经卷起来了。这是行业火爆后的必然结果。类似资本的逐利性:哪个地方投资回报高,风险小,资本就会自然流向这个领域。经过数年投资于发展,就会行业过剩,利润下降,回归社会平均利润水平。2021年秋招,在毕业时,现在IC方向的平均年薪硕士已经在30W40W,本科18W25W。在offer show上,拿到45W+的也时时出现。

这么高的薪水,是超出大部分同学的预期的,所以电子相关专业的同学(比如:电子科学与技术(信息材料方向),机械电子,自动化,物理),转行IC方向找工作的是越来越多。至于通信工程,计算机的同学,我认为跟数字IC设计本来就是强相关,不算转专业。人多,那就自然卷。

其实卷是好事,说明现在行业景气,被大家看好。总比进入一个冷清,没有多少资金投入,发展前景、收入水平一般的行业好吧。

我适合IC设计行业吗?
我建议,从个人能力,兴趣出发,来评估自己是否适合IC设计行业。

理由:选择了工作方向,未来1520年都跟它打交道。如果自己在这个方面没有兴趣(至少不讨厌吧),再缺少些个人能力支持(也许是天赋),那这1520年能过的舒服吗?应付1~2年,也许行;长了,很难。想想那些再大学里不喜欢自己专业,努力找机会换专业的同学的经历,就明白。

人嘛,工作是为了挣钱,挣钱是为了过的好一点。如果工作不开心,拿着钱一天天郁郁寡欢,那就本末倒置啦。

怎么评估呢?看看你是否擅长如下方向或学起来比较轻松(这儿再次缩小范围,只讨论数字IC设计/验证/流程/后端,不涉及模拟方向):

1):计算机编程能力:比如:c/c++, Java, perl, python等。至少看看是否有自己编写100行以上code的能力(是自己编写,不是网上下载一段code,再改改)。因为数字IC设计,目前主要还是编程(verilog /chisel/sv/UVM)实现的,流程/后端也会大量使用TCL, perl等脚本编程。如果觉得自己擅长这个,建议再看看算法与数据结构方面的书籍。

2):逻辑思维,推理能力:高数(微积分,线性代数),大学物理学的如何?IC设计工作中,直接应用这些知识的机会不多,但是这些课,实在是训练逻辑思维的。这个能力,在数字IC设计中,非常重要。国外,数字IC设计,也叫逻辑设计。

3):英语:CET-4那是基础,建议考过6级。因为工作了,有大量的文档是英文的(各种学习资料,协议规格书,数据手册,使用说明),阅读理解这些困难,那公司还得给你配个翻译?

4):微机原理(或更深入的计算机体系结构):开始面对0/1的世界了,二进制编码,数据/地址总线与寻址,CPU指令执行的原理与流程,CPU流水线结构,内存结构(cache, sram, ddr),汇编语言,这些学的怎么样?看看现在流行的SOC设计,哪个里面不放个CPU,不理解这些,怎么理解一个SOC的运行机制,怎么去设计、优化它呢?

这些课程,在电子类专业,应该是本科教育的基础课程。如果自认为感觉良好,那可以进入数字IC设计专业课看看。

1):数字电路:数字逻辑(与或非,异或,加法器,乘法器),组合逻辑/时序逻辑,Latch/Flip-Flop,状态机。

2):Verilog语言:自己能设计一个计数器,边沿检测,序列检测吗?能得话,再设计一个UART/IIC/SPI控制器看看。至少去看看这些协议,看看是否能理解它在说啥,能看懂它的波形图吗,它为啥能完成数据传输。

如果这些都被你搞定,恭喜你,同学你适合进入数字IC设计行业(设计/验证/流程/后端)。看到这儿,你也明白,判断是否适合(有这个兴趣、潜力),不是靠自己起床后拍拍脑袋就能知道答案的。得去实际学习些相关的知识,实际动手写写code,才能判断的。

数字设计/验证/流程/后端各个岗位的具体工作内容与技能要求差异,请看:https://zhuanlan.zhihu.com/p/356477440

如果不适合,也不必灰心沮丧,电子行业还有很多职位,薪水也是很丰厚,具有发展潜力的。比如:计算机软件(Java啥的),嵌入式软件(STM32编程,海思等SOC的linux移植与使用),硬件设计(原理图设计与PCB layout),技术支持(FAE),销售等。做为理工科同学,总有一款适合你。都不喜欢,考公务员,也是一个选择。给自己找个相对喜欢的工作,毕业能靠自己生活就成功完成了独立自主的第一步。

我能顺利找到工作吗?
掌握以上内容,在我毕业的2006年,是肯定能找到一个IC设计的工作的,但是现在,应该是不太行啦。那还要哪些条件,学习哪些知识呢?

1):学历:从2021年秋招看,拿中大IC设计岗位的大多数是硕士学历;只有少量本科学历的同学能拿到IC设计岗位的offer。就国内目前IC公司的情况看,在职设计工程师也大多是硕士学历,美台欧也是类似情况。本科学历,目前还有竞争力的岗位有:fpga设计,IC公司的fpga验证,数字后端,模拟版图。至于双非硕士,从2021年秋招看,只要能力过硬,一样能拿到IC设计offer,包括非常好的公司。比如sky的双非硕士学员就有拿到:AMD,海康,中兴,小米,芯动,艾为,普冉半导体,信芯微等公司offer的。

学历是你能拿到笔试机会(或更多笔试机会)的保证。

2):IC设计专业知识的学习:数字IC设计/FPGA设计方向的学习路径,请看这个链接,这儿就不再重复。

数字IC/FPGA设计100问之——学习路径: https://zhuanlan.zhihu.com/p/356601327

这些知识,是你顺利通关笔试,面试时跟面试官能聊的下去的保证。

3):IC/FPGA设计相关项目经历:光说不练,假把式。简历中有相关项目经验,是你从大量的简历中脱颖而出,获得笔试机会,面试顺利通关的加分项。哪个公司不想要来了就能干些活的新人呢?项目获取的途径:导师项目;公司实习;自己买fpga开发板,从网上找项目。这也是我推荐的优先顺序。

关于项目,做几点说明:

1):校招时,有过真实流片经历的同学,目前不足10%;大部分同学还是靠fpga项目写简历的。这个其实关系不大,因为数字IC/FPGA设计本来相通。

2):一定要实习吗?我觉得未必。因为新人进入公司的前3个月,贡献基本是负的。熟悉公司工作环境,设计规范、流程,再熟悉项目内容,就够你折腾23月了。所以去公司实习46个月,大多只能做些打杂的活,比如:检查设计文档,跑仿真,维护小的IP模块,做fpga验证等,很难有IP设计任务。不要对IC实习期待太高,你还没跟公司签三方协议,公司资深工程师又很忙(不忙也想偷懒休息下),哪有时间、动力来认真带你呢?

我的看法:如果导师有相关项目,建议深入做导师项目,不必去实习。这样,简历中才能有12个深入的点(你项目中做的比paper,比别人好,放入了自己设计思想的地方),才能跟面试官深入的交流项目。这12个亮点,是你能给面试官留下深刻印象,拿下好offer的保证。

所以,学历+实际的设计能力,是你拿offer,拿好offer的保证。IC行业的大多数公司还是很务实的,学历敲开了笔试的门,后面就看实际的设计能力啦。能给公司带来贡献的,不是你的学位证,而是你切实设计的IP模块,搭建的验证、测试环境,在工作中解决的技术问题。

最后
看到这儿,你还觉得自己行,对这个有兴趣,适合这个,那请跳回第3)章,去实际学习、评估一下。真的行,那就干吧,管它卷不卷。

---------------------------------------

要冲,学习路径见这儿:https://blog.csdn.net/yangyuf012/article/details/115130947?spm=1001.2014.3001.5501

---------------------------------------

作者介绍(QQ技术交流群:435113890):

sky:2006年电子科大毕业;前Verisilicon Senior Staff Engineer;15年数字IC前端设计;3年数字IC设计培训;主要做视频IP设计(H.264/H.265编解码器设计,JPEG编解码器设计),CNN加速器IP设计。参与7颗ASIC/SOC芯片设计(量产3颗)。目前申请3篇国家发明专利。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA代码编写中,关键是理清组合逻辑和时序逻辑,并设计好时序。首先,需要根据功能需求设计好时序图,然后可以尝试设计状态机。有了这两个部分的支持,就可以将时序图转化为Verilog语句。\[1\] 拆分成组合逻辑和时序逻辑的原因主要是基于性能考虑。如果时序逻辑之间的组合逻辑时间太长,会影响算法的运频率。为了提高运效率,可以将较长的运算过程拆分成若干个子状态,实现流水线操作。这样在进a状态运算时,可以同时进b状态运算,从而提高运效率。\[2\] 在FPGA代码编写中,每个工程师的设计理念和代码风格可能会有一些差别。有些工程师喜欢使用Gvim编辑器下的计数器和状态机模板,而有些则习惯使用Notepad++、UE等其他编辑器。代码风格也会存在一些不同。此外,模块划分的理念、命名规范、代码逻辑等方面也可能存在差异。因此,在编写FPGA代码时,需要注意命名规范、代码逻辑清晰、可读性好等方面的要求。\[3\] #### 引用[.reference_title] - *1* *2* [学fpga(组合逻辑和时序逻辑)](https://blog.csdn.net/feixiaoxing/article/details/124000133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [FPGA代码设计规范一些探讨](https://blog.csdn.net/wandou0511/article/details/127706826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值