IC前端设计工程师 您所在的位置:网站首页 ic设计前端和后端区别 IC前端设计工程师

IC前端设计工程师

2024-06-03 10:00| 来源: 网络整理| 查看: 265

 IC前端设计指逻辑设计,前端主要负责逻辑实现,通常是使用verilog/VHDL之类语言,进行行为级的描述,当然,也会要使用一些仿真软件;IC后端设计指物理设计,主要负责将前端的设计变成真正的schematic&layout,流片,量产;后端设计需要的则会更加多一些了,包括综合,到P&R,以及最后的STA,这些工具里candence和synopsys都有一整套系统的。打个比喻来说,前端就像是做蓝图的,可以功能性,结构性的东西,而后端则是将蓝图变成真正的高楼。        除了RTL编程和仿真这两个基本要求外,前端设计还可以包括IC系统设计、验证(verification)、综合、STA、逻辑等值验证(equivalence check)。其中IC系统设计最难掌握,它需要多年的IC设计经验和熟悉那个应用领域,就像软件行业的系统架构设计一样,而RTL编程和软件编程相当。适合作为IC设计的入门。还有一些即可以属于前端也可以属于后端的灰色领域,比如DFT(design for test)。

    后端设计简单说是P&R,但是包括的东西不少,像芯片封装和管脚设计,floorplan,电源布线和功率验证,线间干扰的预防和修正,时序收敛,STA,DRC,LVS等,要求掌握和熟悉多种EDA工具以及IC生产厂家的具体要求。

说了这么多,下面讲一下前端工程师的岗位职责:

(1) 阅读各种SPEC

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

 

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

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

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

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

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

2. 撰写design spec

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

设计平台架构:以SoC设计架构为例

 

IP设计架构:

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

design spec完成之后,接下来就要开始编写代码了,使用各种设计语言去搭建设计环境,常用的硬件描述语言有:Verilog, VHDL, SystemVerilog。以现在主流的IP设计平台为例:大概要去编写类似这样的文件:

好的设计平台是检验工程师优秀的一个重要标准,要考虑可重用性,可扩展性。好消息是,公司里面有很多已有的设计环境,你可以模仿,在已有的基础上进行修改就可以了。

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

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

 

5. debug调试能力

设计和仿真用例都搭建好了,下一步重点就是进行功能仿真和问题调试(debug)了。前面的设计时间其实大概只占20%,debug才是最花时间的。

 

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

Cadence:IES

Synopsys:VCS

Mentor:QuestaSim

几款工具一个比一个好,当然价格也是一个比一个贵。工欲善其事必先利其器,要想提高你的仿真和debug效率,工具里面好的功能也要好好研究下。

debug的主要目的是寻找RTL的bug,当然前面搭建的验证平台也会存在很多bug,最终的目标就是所有的test cases都能完全仿真通过。

最主要的debug手段有:

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

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

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

6. support 

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

support的问题不是强制要求解决的,但是如果你经常能帮同事解决这些问题,那你在公司的地位就能与日俱增,升职加薪就更有筹码了;

所以总结来说,数字IC设计工程师做的最重要的两件事情是:

RTL Coding

Bug Fix

合作岗位

由于芯片设计过程中的关联性,数字前端工程师的一些工作需要和其他工程师配合完成:

 

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

还需要经常和架构工程师打交道,去了解更多芯片的整体架构和功能属性;如果你也负责后仿gatelevel simulation的话,那还经常需要和后端工程师打交道,因为后仿的网表是他提供给你的。

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

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

岗位所需技能

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

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

l  GPU设计:Nvidia、AMD、ARM、Imagination

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

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

l  接口设计:DDR、HDMI、USB

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

l  整机芯片方案:APPLE、华为海思、三星、

l  等等其他专业方向

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

一个真正合格的数字IC设计工程师,需要不断学习更加先进的知识和技术。这边列举了目前数字IC设计工程师的一些技能。

语言类 1.编程语言 

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

学习Verilog的时候,很多时候我们并不是在学习这门语言本身,而是学习其对应的电路特征,以及如何对这个电路进行描述。

VHDL:军工领域用的多

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

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

2.脚本语言

Makefile

Perl

Python

Shell

Tcl

设计工程师经常需要流程的自动化,掌握一门得心应手的脚本语言将对你工作效率的提升帮助极大;  

3.工具类  

仿真工具:NCVerilog/ VCS/ ModelSim

波形查看工具:SimVision/ DVE/ Verdi

文本编辑器:Vim/ Emacs

“版本管理”工具:SVN/ CVS/ Git

Microsoft Office

在芯片设计的过程中,需要运用一些工具进行辅助和提高工作效率;

4.平台类

Windows

Linux

OS X

对于专业的数字IC前端设计人员而言,工作的方便程度,由方便到困难分别是:Linux > Windows > OS X;

5.协议和架构

ARM CPU架构

AMBA 总线协议

MIPI协议

DDR协议

PCI-E协议

熟悉一些协议和架构,对数字前端设计工程师是有很大帮助的;

6.其他加分项目

MATLAB

ISE/ Synplify/ Vivado/ Quartus

LEC/Formality

VMM/ UVM

ESL

ZeBu Server

JIRA/ Confluence

C/ Assembly Language

Computer Architecture/ ARM Architecture/ MIPS Architecture

所有的技术类岗位,主要看的两点就是:专业技能(skills)和项目经验(experience)。所以除了上面列的这些技能,你能实际做过一两个项目,哪怕是IP级别的设计项目,也是很重要的,尤其是做项目过程中积攒的debug经验;

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有