芯学长 | 掌握芯资讯,引领芯未来

您当前所在位置:首页 > 芯片设计 > 数字IC前端

IC设计职位详解之—数字前端设计工程师

发布时间:2023-06-02来源:芯学长 0

数字设计处于数字IC设计流程的前端,属于数字IC设计类岗位的一种。随着芯片规模不断加大,在IC设计过程中,设计的复杂度也进一步加大,需要用到的岗位人数也越来越多。

数字设计主要分成几种层次的设计:IP level,unitlevel,fullchip/SoC level,gatelevel等。

一、数字设计主要干什么?

1.阅读各种SPEC

最重要的一份spec是architecture spec,就是和你一起合作的好基友架构设计工程师写的设计文档,比如下面这种:UART IP Core Specification

其中需要重点了解的内容是:

features:这个模块需要支持的性能列表。

IO ports:这个模块对外的IO端口。

operation mode:这个模块的主要工作模式。

除了这份详细的设计文档之外,如果这个IP需要用到很多协议,那你自然还要去阅读一些协议文档咯,比如AMBA总线协议,MIPI协议,DDR协议等。

2.撰写design spec

公司里面,工程师做事情之前都需要出一份详细的设计实现文档,设计工程师也不例外,你要出的文档叫做design spec,其中主要的内容包括:

设计平台架构:以SoC设计架构为例
剧 13剧 16

IP设计架构:

3.编写代码,搭建设计环境

design spec完成之后,接下来就要开始编写代码了,使用各种设计语言去搭建设计环境,常用的硬件描述语言有,Verilog,VHDL, SystemVerilog。

4.创建test cases,进行功能仿真

根据前面完成的详细test plan去创建设计需要用的test cases,每家公司对test cases的命名有一定规则,比如长这样的:

剧 15

有些公司就直接用数字来给test cases命名。

还有些公司,直接用脚本来生成test cases,只要把关键的一些设置调好,用脚本一刷,case就全部生成了。

当然每种创建cases的方法各有优缺点,你进去公司之后,也只能入乡随俗。

5. debug调试能力

设计和仿真用例都搭建好了,下一步重点就是进行功能仿真和问题调试(debug)了。

仿真所用到的工具主要有:

Cadence:IES

Synopsys:VCS

Mentor:QuestaSim

debug主要目的是寻找RTL的bug,最终的目标就是所有的test cases都能完全仿真通过。

最主要的debug手段有:

查看log文件:仿真结束会生成很多结果文件。

看波形:最常用工具就是verdi了。

每家公司对于设计工程师debug的要求不尽相同,终极目标都是要求设计工程师能找到最终的root cause,共提出最终的解决方案。

6. support

前面属于设计工程师的常规任务差不多就完成了,support属于进阶版的。比如项目用的database出问题了,跑仿真用的flow碰到问题了,经常就会叫设计工程师去support,帮忙解决问题。

7.每周例会Weekly Meeting

作为数字IC设计工程师,和其他工程师一样,经常还有无穷无尽的会议要开,各种评审review,各种讨论。

总结来说,数字IC设计工程师最主要做的两件重要的事情是:RTL Coding、Bug Fix

二、数字设计主要打交道的人有哪些?

1.数字IC前端设计工程师打交道最多的就是前端验证工程师,一起讨论问题,经常一起debugcase,目的就是让写的RTL(Register Transfer Level)代码没有bug。

2.还经常需要和架构工程师打交道,去了解更多芯片的整体架构和功能属性;

3.如果你也负责后仿gatelevelsimulation的话,那还经常需要和后端工程师打交道,因为后仿的网表是他提供给你的;

4.DFT工程师经常也会来找你,因为他也需要做测试和设计,很多时候他的仿真环境经常就是从你的设计仿真平台移植过去的;5.FPGA工程师也经常会打交道,因为FPGA设计也是数字设计的一种。

如果你是在一家大公司的话,分工就非常明确,你也就不需要和这么多人打交道了,比如如果你只负责IP level的设计,那基本只要和前端验证工程师打交道就可以了。

三、数字设计需要掌握的技能?

现阶段由于数字设计的方向很多,主要的有:

CPU设计:Intel、AMD、ARM、兆芯、海光、

GPU设计:Nvidia、AMD、ARM、Imagination

MCU设计:基于ARM Cortex M系列的MCU是主流

音视频编解码设计:H.264, H.265

接口设计:DDR、HDMI、USB

手机芯片:高通、联发科、展讯

整机芯片方案:APPLE、华为海思、三星、等等其他专业方向

每个专业设计领域需要你掌握的技能不大一样。一个初级工程师想全部掌握这些技能也很难,很多时候设计工程师是沿着一个专业方向一直往下做,比如CPU,GPU设计等。

由于设计工程师需要编程,所以掌握编程语言也是必须的,比如掌握下面知识就显得比较重要:

Verilog: 目前的主流硬件描述语言,是设计工程师必须掌握的核心

VHDL:军工领域用的多

SystemVerilog: 未来的趋势,SV将设计、验证和断言统一在一起

UPF:电源描述,是低功耗设计的核心技术

另外,设计工程师经常需要流程的自动化,所以一些脚本语言也是必须的:

Shell、Makefile、Perl、Python

除了这些外,熟悉一些协议和架构,也是有很大帮助的,比如:

ARM CPU架构、AMBA总线协议、MIPI协议、DDR协议、PCI-E协议

所有的技术类岗位,主要看的两点就是:专业技能(skills)和项目经验(experience)。

所以除了上面列的这些技能,你能实际做过一两个项目,哪怕是IP级别的设计项目,也是很重要的,尤其是做项目过程中积攒的debug经验。

如果你是在校学生,早几年懂验证的人极少,所以基本上你只要会verilog,可能就可以找到设计工程师的职位了。现在在校学生通过各种渠道学习(比如:ic修真院),掌握了上面的这些技能,甚至积累了一两个项目经验。

四、数字设计谁可以学习?

数字设计工程师主要以招聘本科以上学历,对专业的要求并不是很苛刻,非集成电路方向也可以,只要你掌握了上面的这些技能,哪怕不相关专业,比如材料、物理、自动化、机械等专业,也是可以成功应聘。

注意:在现在IC行业整体缺人的大背景下,依然会招收学校排名一般的学生;当然前提还是要有有专业技能(skills)和项目经验(experience)。

五、数字设计发展方向?

未来的IC设计工程师的职业发展分为两条路径:

1.技术专家路线:基本按照上图的发展阶梯来走,一些人会一直做技术,成为一名资深设计工程师,

2.项目管理路线:有些人会成为设计经理,做一些管理类的工作。

3.有少数人也可以转,比如转去做架构工程师,去EDA公司做应用工程师(AE),要么创业。总的来说,这个岗位还算一个天花板不低的岗位。

数字IC设计和验证哪个好?

知乎上有一个很火的问题那就是数字ic设计和验证哪个好?首先我们从以下几个维度来对比一下这两个岗位。

入行门槛

从上述对比就可以看出,IC设计要比验证门槛高。

具体是做什么什么工作的?

数字ic前端设计

1.配合芯片架构的设计;一般当芯片需求架构到手之后,首先就应该进行架构设计,这时候就需要数字前端设计工程师和架构工程师一起配合完成。

2.负责数字电路结构的实现、仿真;这块是数字前端工程师主要的工作内容,首先需要对架构工程师设计的内容进行微架构的设计。

3.配合验证人员制定验证方案,完成验证.每个人对于芯片设计的理解不同,这种情况下,就需要和验证工程师对接好内容,弄清楚到底需要测试哪块,哪些是重点。这些都需要验证工程师一起商量制订。

4.配合FPGA工程师及后端工程师分析及调试问题;

5.配合芯片测试工程师;在芯片设计的整个过程中都需要与测试工程师紧密配合。

数字验证工程师

岗位工作内容:

①读文档,写文档:Verification spec、Test plan。

②编程搭建验证平台:通常是用Systemverilog/UVM,如果做SOC,则用到C或C++。验证工程师也需要学习很多脚本语言,如Perl,Makefile,python。

③Debug:创建测试用例,跑仿真。

④support

数字验证工程师具备的的核心能力:

学习各种标准/文档的能力

编程能力

Debug能力

一般来说数字IC验证岗位企业的需求会比较大。一个数字前端设计,需要2-3个甚至更多的数字验证工程师,目前市场对于验证工程师的人才需求非常大。

分别需要学习哪些东西?

数字前端设计

1、熟悉数字电路设计

2、熟悉Verilog或VHDL

3、熟悉异步电路设计

4、熟悉FIFO的设计

5、熟悉UNIX系统及其工具的使用

6、熟悉脚本语言Perl、Shell、Tcl等

7、熟悉C/C++语言、SystemVerilog、Matlab等

8、熟悉DC、VCS、Verdi、LEC、PT、Spyglass等工具的使用

9、有FPGA验证经验

10、熟悉CMOS电路原理

11、熟悉数字信号处理算法、通信算法、图像算法、人工智能算法等中的一种或多种

12、熟悉计算机体系结构、熟悉通用MCU/SOC设计流程

13、熟悉各种总线协议、接口协议等14、有相关芯片设计/流片经验

这里给大家推荐几本书

《Verilog HDL高级数字设计》

书里对如何用Verilog HDL对数字系统进行建模、设计、验证讲的很详细,涵盖了RISC、UART、异步FIFO、数字信号处理、乘法器和触发器相关知识。对ASIC/FPGA系统芯片工程设计开发的关键技术与流程也进行了深入讲解。

对于前端设计来说,这本书对code水平提升很有帮助,大家可以试着做个简单但完整的设计。

《数字集成电路:电路、系统与设计(第2版)》

这本书是加州大学伯克利分校的经典教材,也是国内高校的参考教材和考研参考书。

书里详细地介绍了MOS管原理、CMOS组合逻辑、时序逻辑、加法器乘法器等运算单元、存储结构、以及时序、互连、电路寄生效应,包含充分的理论分析和电路结构图。

IC验证

IC验证工程师要学习的主要有数字电路基础、软件设计思想、SystemVerilog、OVM/UVM以及环境脚本语言等相关知识。这些学好之后可以获得如下好处:

1、学习了数字电路基础之后,才可以更好地在工作中,去理解RTL硬件设计。

2、必须要学会相应的编程语言,例如:SystemVerilog,最好也要懂C和C++。

3、还要学习OVM/UVM,因为这些都是基于SystemVerilog的一些基础的验证方法学。

4、还要学习好制定验证计划,这样才可以在今后工作中做好搭建验证平台。

5、环境脚本语言也是必学的课程,这样才可以在今后工作中编程时应用得到,如:Tcl,Perl,Python。

要想成为验证工程师,就必须要掌握好基础知识,只有把基础打扎实之后,才能成为一名合格的验证工程师。

这里给大家推荐几本验证书籍

《UVM实战》

这本书的内容简单易懂,详细介绍了UVM的各种机制,以及寄存器模型的使用。值得一提的是,这本书提供了大量的实例代码,这些代码都是经过实际运行过的。

至于Perl跟Python这两种入行必备的脚本语言就不用多说了,对想要入行IC的小伙伴而言,都是必须掌握的基础语言。

《System verilog验证》

这是一本学习SV语言的初级阶段读物。主要讲SV语言的工作原理和各种验证方法,书里还有大量的实例可供参考。

《C语言程序设计》

说起C语言,不少小伙伴应该都挺熟悉了。这本书介绍了C语言的“现代方法”,在聚焦程序设计的核心问题的前提下,给C语言这门经久不衰的语言赋予了崭新面貌。

本书介绍了C99和C1X的许多新特性,而且编排十分直观,方便读者查阅。特别适合具备了一定语言基础,想深入了解C语言精髓的读者进行阅读。

【免责声明】:本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。

文章评价

-   全部 0 条 我要点评

有疑惑?
在线客服帮您
029-81122100

立即咨询 >