fpga可以转ic设计吗?需要学习哪些技能?

IC修真院 IC修真院     2023-03-23     518

关键词:

曾经在知乎上看到一个回答“入职做FPGA,后续是否还可以转数字IC设计?”

从下面图内薪资就可以对比出来,对比FPGA的行业薪资水平,IC行业中的一些基础性岗位薪资比很多FPGA大多数岗位薪资都要高。

除了薪资之外更多FPGA转IC设计的有以下几个原因:
①从业多年竟然找不到了应该攻克的方向,技术路线逐渐迷失,以至于影响职业信念。

②FPGA技术本身发展很快,而FPGA开发的工作有一些内容将会被新工具,新流程所改变或者取代。

③自身所在的公司在向芯片IC开发做转变,而原有的FPGA开发平台就需要做升级,员工被要求做技术换代升级。

④资本浪潮追逐升级,系统更大(承载量)更复杂(大团队协作),要求产品最终呈现芯片的形式。

FPGA与IC设计有哪些差异?

首先,FPGA的逻辑设计与数字IC设计的基础技能是相同的,都需要使用HDL代码进行编程。

其次,在开发流程上,也有一部分工作是可以通用的,除综合方式不同,前期的RTL编程、语法检查、功能仿真等内容都是高度重合的。

在设计开发中都需要大量用到片上存储(RAM、ROM、FIFO),以及可能会用到一些IP,虽然FPGA的片上存储的本质都是RAM,但在应用层面来说并没有太大区别。

然而,重合最多的还是数字IC设计基本都需用FPGA进行原型验证。因为功能仿真的场景是人为构建的,不是真实的工作场景,所以经常存在认知误差。而FPGA能让数字IC设计的代码在真实场景下进行验证,使其排查出很多仿真难以发现的问题。

但是,在两者相同之中,又有不同之处。其中HDL编码规范存在差异:

就语法要求而言,数字IC设计更加严苛,有些在FPGA设计中使用的语法无法适用于数字IC设计。

就工作环境而言,数字IC设计一般都在Linux工作站中进行,这是因为开发工具链有较大差异,完整数字IC开发可能前前后后用到十多种软件,并且大部分软件都不支持Windows系统;而FPGA开发所用的软件相对较少,基本都可以在Windows系统下进行。

就硬件知识储备而言,FPGA设计需要去了解FPGA器件知识,理解FPGA的LUT/FF结构和FPGA中带有的IP,通常会需要开发者自己进行板级调试,这个过程中就需要掌握一些通用的硬件电路和使用一些电子仪器。而数字IC开发对硬件知识的掌握则没有太多要求(因为在数字IC设计中还有模拟的岗位),数字IC开发更关心的是逻辑电路的实现,需要更多的考虑逻辑级数、功耗和时序等问题。

想转数字IC设计需要学习什么专业知识?

1:进数字IC前端/FPGA设计的专业知识学习,推荐这本书:《CMOS VLSI Design A Circuits and Systems Perspective》。

自认为是数字IC设计入门“圣经”。基本电路结构,加减法器结构,组合逻辑,时序逻辑,跨时钟设计都有涉及。

2:在此还需要理解On-Chip-Bus的基本知识与一个数字系统的基本结构,建议学习理解:AMBA总线,含:APB/AHB/AXI。由于ARM在数字IP领域的领导低位,AMBA总线事实上已经成为数字IC的通用总线结构,必学。

3:现在可以开始做数字IP的设计了,涉及到使用相关EDA tool。
a):功能验证:对于初学者(在校生),能modelsim/questasim上做仿真测试,熟悉波形窗口;debug RTL code。再使用下windows版的nLint/Debussy就能完成数字IP功能设计验证了。
b):综合与实现:这部分首先(重点)要掌握STA原理,比如:cell delay在cell library里面是怎么标定的,tool是怎么计算delay的,setup/hold timing check的计算公式是什么;clk skew, clk uncertainty, create_clock, create_generateclock, set_ideal_network, set_input_delay, set_false_path, set_multi_cycle_path,OCV , … 是什么意思,对STA有何作用。懂了STA原理,就可以用TCL语言写SDC(DC综合)/XDC(vivado综合实现)timing constraint了。目前XDC/SDC的语法已经基本统一了。

进阶知识、技能

1:算法方向:信号与系统,数字信号处理(DSP);
2:接口方向:UART/IIC/SPI/DDR等常用接口协议;如有余力,可以看看USB/PCIE/SATA/MIPI;
3:日常工作的OS平台:linux操作系统使用;vim(emac)使用;bash(csh);makefile;
4:脚本语言:Perl(Python)/TCL;
5:版本管理工具:SVN/Git;

实训项目

从去年以来,企业更看重项目经验,做过项目和没做过项目,在面试官眼里有很大的差别。这里就建议大家尽可能多参与项目,从企业中获取项目,真正跟着公司做过事情的人面试时的表现是不同的。社招的话有无项目经历、项目的方向、项目完成度都是非常重要的。尤其是社招,项目经验是岗位匹配度的一个重要参考标准。

如何增加项目经验,或者什么样的项目经验可以得到面试官的青睐。

来听听资深工程师怎么说?

我们说增加项目经验,你做项目,具体分下来比如我们在做设计或者做验证,一定是有一个点,我们要交付的质量标准是什么样的,我们越深入的了解交付标准,就我们越深入的了解业务,我们就可以更贴切的去知道去交付的东西未来会遇到什么问题,我们就能提前把它准备了。

我们在 review 的时候,和主管去讨论,或者是和客户去讨论,包括设计和验证人员去讨论问题,更关心问题背后的逻辑,更关心产品背后的逻辑,要去贴近它的使用场景,去想这件事情来龙去脉,多看好例子,多去探讨实现的细节。虽然我没有真的coding,但是这件事情我想通了。

要增加项目经验,简单的说一点,我们还是想继续卷,我们还想更优秀。所以在工作前三年,是一个把自己埋起来去学习的这样一个过程。还需要更长时间的磨练,我们才能叫 senior 工程师。

今年我的年薪 30 万,后年我的年薪得 50 万,再过几年我的年薪得百万,我觉得都可以,但也不拘泥于这些。希望大家都有一个说起来眼睛能冒光的目标。就像我们当年在校学习一样,为了目标,为了这个成绩,我们一定有无限多种方法去实现它。

六大项目资源推荐

如果你当下对入行/转行有一定困惑和意向,或者想了解项目,以及免费获取学习资料,任何关于转行的问题都有老师会为你解答。

这里放个入口:入行指导

数字ic设计,学完verilog语法,还需要学习什么?

由于现阶段数字IC设计的方向很多,主要的有:CPU设计,GPU设计,MCU设计,音视频编解码设计,接口设计,手机芯片,整机芯片方案等等。每个专业设计领域需要掌握的技能不大一样,一个初级... 查看详情

学习fpga有必要写sdram控制器吗?

...意是在学习过程中,联系FPGA的使用技巧,强烈建议尝试设计一个SDRAM控制器,不要使用IP核。学习SDRAM控制器设计,能让你掌握很多知识。更好的使用状态机去精准控制时序。学会高速设计中必要的技能,也就是时序约束方法,ti... 查看详情

阿里云运维需要学习的技能点

...uptimeiostat还有阿里自己研发的tsar命令,很好用的工具;4.可以学习下python,如果在有时间的情况下,可以多学习学习;5.mysql数据库基本原理需要会的,常用命令需要会的;6.负载均衡需要会的,例如lvsnginxhaproxy;7.阿里的三家马车... 查看详情

成为全栈工程师需要学习哪些知识?

...。那么要成为全栈工程师你需要掌握哪些技能呢?1.产品设计   ai(作为一款非常好的图片处理工具)   coredraw(平面设计软件)2.界面设计   ui  &nbs 查看详情

fpga是啥意思?

...列的英文缩写。FPGA是一种可编程逻辑器件,其内部逻辑可以由用户来设定。通常在芯片设计的验证阶段被大量使用,也在小批量试制产品中得到应用。参考技术AFPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是... 查看详情

优秀的ui/ux设计师需要具备哪些技能?

设计可以是一款产品,一个网站,也可以是一个品牌门面。因此,无论在任何时代及领域,设计师似乎都是不可或缺的存在。而随着互联网时代的到来,企业对设计师们对要求已发生改变,从传统的平面设计也衍生出更多的职位... 查看详情

数字ic设计/fpga工程师秋招面经

...志等。迷茫期最后开始投递的时候并没有考虑投递数字IC设计的岗位,只想投递FPGA岗位,因为公司没有FPGA岗位才投递了数字IC设计岗位,这个观点在自己现在看来非常的傻。这里提醒广大FPGA玩家,公司真正招收FPG... 查看详情

数字ic设计/fpga工程师秋招面经

...志等。迷茫期最后开始投递的时候并没有考虑投递数字IC设计的岗位,只想投递FPGA岗位,因为公司没有FPGA岗位才投递了数字IC设计岗位,这个观点在自己现在看来非常的傻。这里提醒广大FPGA玩家,公司真正招收FPG... 查看详情

做芯片设计需要学编程吗?

做芯片设计不完全需要编程知识。比如材料转行做芯片设计的,很多也没有编程的基础,但是经过培训也成功转行了。如果学生有编程基础的话,转行做ic验证会更加容易一些。我这里给大家介绍芯片设计的热门岗位... 查看详情

测试需要掌握哪些技能

...基础知识);框架:SpringBoot,SpringMVC;Vuejs;开发成果:可以单独开发JAVAWEB后台系统,前端项目;管理系统;兴趣爱好:机器学习(理解常用的机器学习知识与算法原理,以及简单机器学 查看详情

测试需要掌握哪些技能

...基础知识);框架:SpringBoot,SpringMVC;Vuejs;开发成果:可以单独开发JAVAWEB后台系统,前端项目;管理系统;兴趣爱好:机器学习(理解常用的机器学习知识与算法原理,以及简单机器学 查看详情

想从手工测试转岗自动化测试,需要学习哪些技能?

...xff0c;这时候选择学习自动化测试是一个很好的选择。一来可以给自己平淡的职业生涯来点挑战,二来可以完善自身技能,厚积薄发完成飞跃,那么技术新人该如何学习自动化测试呢?请耐心往下看。1、拥有熟练的... 查看详情

fpga现在学起来怎么样?难不?需要了解哪些基础课程?

...1:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:  将X[31:0]拆成两部... 查看详情

深度学习/机器视觉/数字ic/fpga/算法手撕代码目录总汇

...手撕代码总汇FPGA工程师经典面试题数字IC经典面试题深度学习/人工智能/机器学习面试题数字图像/计算机视觉面试题FPGA/数字IC手撕代码总汇FPGA/数字IC手撕代码1——数据上下边沿检测更新中常用算法手撕代码总汇算法手撕代码1~1... 查看详情

前端开发需要学习什么?需要掌握哪些技能?

...难,那想要成为一名前端开发工程师,前端开发需要学习什么呢?在这篇文章中,为你总结了如何成为前端开发人员的10个技巧!以及前端学习路线,欢迎参考!前端开发需要学习什么?或者需要掌... 查看详情

前端开发需要学习什么?需要掌握哪些技能?

...难,那想要成为一名前端开发工程师,前端开发需要学习什么呢?在这篇文章中,为你总结了如何成为前端开发人员的10个技巧!以及前端学习路线,欢迎参考!前端开发需要学习什么?或者需要掌... 查看详情

linux运维需要掌握的技能(转)

...得,现在我说说要掌握哪方面的工具吧说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。我就大概列出这几方面,这样入门就基本没问题了。linux系统如果是学习可以选用redhat或centos,特... 查看详情

自学平面设计需要学哪些软件

...raw、Illustrator这三个软件都是应该熟练掌握的。这3个软件可以自学,下载教程,自己做实例来熟练掌握。想要学好平面设计其实不难最主要是有没有决心,不妨先用60秒时间来测试下→→点击测试我适不适合学设计平面设计是沟... 查看详情