IC设计职位介绍之“数字后端设计工程师”
IC设计职位介绍之“数字后端设计工程师”
数字后端处于数字IC设计流程的后端,属于数字IC设计类岗位的一种。在IC设计中,数字后端所占的人数比重一直是最多的,而且随着芯片规模不断加大,后端工程师需要的人数将会越来越多。
一般来说,数字后端按岗位类别可以分为:逻辑综合,布局布线physical design,静态时序分析(STA),功耗分析Power analysis,物理验证physical verification等岗位。人才的需求量进一步加大,这也是现阶段数字后端工程师招聘量巨大的原因。
1、主要干什么?
逻辑综合(Synthesis)
主要负责将RTL code转换为实际后端使用的netlist网表, 一个好的网表对布局布线的工作起到决定性作用。要尽可能做到performance, power, area的优化。尤其是现如今的一些要求高性能的设计,对综合的要求非常高。
综合质量很大一定程度上取决于综合软件的性能,业界流行的两个综合工具是Synopsys的Design Compiler和Cadence的Genus,熟练的掌握两个工具的使用方法是综合工作的一个基本条件。
布局布线(PD)
布局布线是数字后端中占比最大的工作,主要负责netlist到GDSII的转化过程,步骤包括Floorplan,Place,CTS,Optimize,Route,ECO等,确保自己负责的模块满足时序还有物理制造的要求。同时,需要协同其他工程师,及时提供他们需要的文件,比如def, spef,网表等。是数字后端中最核心的工作。
布局布线对工具的依赖程度较强,而且工具操作相对来说较为复杂。业界较为常用的是cadence的Innovus软件和Synopsys的ICC,掌握这两大工具的使用需要花费一定的时间。
静态时序分析(STA)
静态时序分析简称为STA,时序验证分析是数字后端中的重要一块内容,芯片需要满足各种corner下面的setup,hold时序要求以及其他的transition, capacitance, noise等要求。STA需要制定整个芯片的sdc约束文件,选择芯片需要signoff的corner以及全芯片的timing eco流程。是一份难度要求很高的工作。
静态时序分析通常通常需要掌握Synopsys的primetime以及cadence的tempus两大软件的使用方法。
物理验证(PV)
物理验证也是tape out前的一项重要事项。如果物理验证有错,那芯片生产就会失败。在布局布线工具中,软件只能检查到金属层上的物理违反,而真正的物理验证需要检查到器件底层(base layer).因此,物理验证需要将金属层和底层金属合并到一起,进行全芯片的drc检查。同时,还需要做全芯片的LVS(版图与原理图一致性检查),ERC(电气规则检查)。确保芯片没有任何物理设计规则违反。
物理验证一般在mentor公司的calibre中进行,是业界标准的物理验证工具。
功耗分析(PA)
功耗分析也是芯片signoff的重要一大块,随着现在芯片的规模越来越大,功耗在芯片的中的地位也越来越高。功耗分析的两大任务是分析IR drop(电压降)和EM(电迁移)。及时将结果反馈给布局布线任务组,让他们及时修改后端设计图,解决设计中潜在的问题。
一般功耗分析使用的工具有Ansys公司的redhawk,以及cadence公司的voltus和synopsys公司的ptpx。
2、主要打交道的人
数字后端工程师通常都是以一个项目组作为一个团队,前面说的这些任务都会分为不同的角色。通常,一个项目中会有一名顶层工程师,一名STA工程师,一名功耗分析工程师,一名物理验证工程师以及若干名模块工程师,这些工程师需要相互合作,共同完成全芯片的RTL到GDSII的过程,同时确保没有时序以及物理验证上的违例。
数字后端工程师还需要经常与前端工程师打交道,确保网表的功能正确以及sdc的正确制定,及时将后仿文件交付给前端,让前端工程师能尽快通过仿真发现潜在的设计问题。
DFT工程师也是我们经常与要交流的,因为测试逻辑设计在现在的芯片中的比重越来越大,后端工程师需要与DFT工程师确认好测试SDC的制定,扫描链scan chain的物理走向等任务。
3、需要掌握的技能和条件。
数字后端主要以软件工具为主,主要掌握以下软件(以cadence, synopsys,mentor公司为主)
布局布线:Innovus/Encounter, ICC2/ICC
综合:DC, Genus
物理验证:Calibre
静态时序分析: PrimeTime, Tempus
功耗分析: Redhawk, Voltus,PTPX
每种平台需要你掌握的技能不大一样,通常学会每种平台下学会一种工具即可。一个初级工程师想全部掌握这些技能也很难,如果这些工具你都会使用,就变成老司机了。
由于数字后端工程师需要跑一些自动化的任务,所以掌握必要的脚本语言也是必须的,比如掌握下面知识就显得比较重要:
Verilog
TCL
Perl
Python
所有的技术类岗位,主要看的两点就是:专业技能(skills)和项目经验(experience)。所以除了上面列的这些技能,你能实际做过一两个项目,哪怕是一些小模块的后端设计,也是很重要的,尤其是做项目过程中积攒的debug经验。
如果你是在校学生,学校里实践数字后端的机会较少,所以基本上你只要简单懂一点流程以及时序方面的内容,可能就可以找到数字后端工程师的职位了。现在在校学生通过各种渠道(比如E课网),很多同学都掌握了上面的这些技能,甚至积累了一两个项目经验。会的人多了,招聘的要求也自然高一些了。
现阶段,数字后端工程师主要还是以招聘研究生为主,本科生招的很少。不过好消息是对专业的要求并不是很苛刻,并非集成电路方向不可,只要你掌握了上面的这些技能,哪怕不相关专业,比如材料、物理、自动化、机械等专业,也是可以成功应聘。
学历本科的同学也不要气馁,有工作经验的本科生,还是可以找到数字后端工程师的职位的,而且有很多成功的例子的。毕业学校一般的同学也不要气馁,985高校毕业,肯定是有优势的,但毕竟每年毕业生不多,在现在IC行业整体缺人的大背景下,依然会招收学校排名一般的学生的;当然前提还是一样,有专业技能(skills)和项目经验(experience)。
IC前端设计(逻辑设计)和后端设计(物理设计)的区分:以设计是否与工艺有关来区分二者;从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路。
前端设计的流程及使用的EDA工具例如以下:
1、架构的设计与验证:依照要求,对总体的设计划分模块。
架构模型的仿真能够使用Synopsys公司的CoCentric软件,它是基于System C的仿真工具。
2、HDL设计输入:设计输入方法有:HDL语言(Verilog或VHDL)输入、电路图输入、状态转移图输入。
使用的工具有:Active-HDL,而RTL分析检查工具有Synopsys的LEDA。
3、前仿真工具(功能仿真):初步验证设计是否满足规格要求。
使用的工具有:Synopsys的VCS,Mentor的ModelSim,Cadence的Verilog-XL,Cadence的NC-Verilog。
4、逻辑综合:将HDL语言转换成门级网表Netlist。综合须要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标
准;逻辑综合须要指定基于的库,使用不同的综合库,在时序和面积上会有差异。逻辑综合之前的仿真为前仿真,之后的仿真为后仿真。
使用的工具有:Synopsys的Design Compiler,Cadence的 PKS,Synplicity的Synplify等。
5、静态时序分析工具(STA):在时序上,检查电路的建立时间(Setuptime)和保持时间(Hold time)是否有违例(Violation)。
使用的工具有:Synopsys的Prime Time。
6、形式验证工具:在功能上,对综合后的网表进行验证。经常使用的就是等价性检查(Equivalence Check)方法,以功能验证后的HDL设计为参
考,对照综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描写叙述的电路功能。
使用的工具有:Synopsys的Formality
1. 数据准备。对于 CDN 的 Silicon Ensemble而言后端设计所需的数据主要有是
Foundry厂提供的标准单元、宏单元和I/O Pad的库文件,它包含物理库、时序库及网表库
,分别以.lef、.tlf和.v的形式给出。前端的芯片设计经过综合后生成的门级网表,具有
时序约束和时钟定义的脚本文件和由此产生的.gcf约束文件以及定义电源Pad的DEF(Desi
gn Exchange Format)文件。(对synopsys 的Astro 而言, 经过综合后生成的门级网表,
时序约束文件 SDC 是一样的,Pad的定义文件--tdf , .tf 文件 --technology file,
Foundry厂提供的标准单元、宏单元和I/O Pad的库文件 就与FRAM, CELL view, LM view
形式给出(Milkway 参考库 and DB, LIB file)
2. 布局规划。主要是标准单元、I/O Pad和宏单元的布局。I/OPad预先给出了位
置,而宏单元则依据时序要求进行摆放,标准单元则是给出了一定的区域由工具自己主动摆放
。布局规划后,芯片的大小,Core的面积,Row的形式、电源及地线的Ring和Strip都确定
下来了。假设必要 在自己主动放置标准单元和宏单元之后, 你能够先做一次PNA(power netw
ork analysis)--IR drop and EM .
3. Placement -自己主动放置标准单元。布局规划后,宏单元、I/O Pad的位置和放置
标准单元的区域都已确定,这些信息SE(Silicon Ensemble)会通过DEF文件传递给PC(Ph
ysical Compiler),PC依据由综合给出的.DB文件获得网表和时序约束信息进行自己主动放置标
准单元,同一时候进行时序检查和单元放置优化。假设你用的是PC +Astro
那你可用write_milkway, read_milkway 传递数据。
4. 时钟树生成(CTS Clock tree synthesis) 。芯片中的时钟网络要驱动电路中所
有的时序单元,所以时钟源端门单元带载非常多,其负载延时非常大而且不平衡,须要插入缓
冲器减小负载和平衡延时。时钟网络及其上的缓冲器构成了时钟树。一般要重复几次才可
以做出一个比较理想的时钟树。---Clock skew.
5. STA 静态时序分析和后仿真。时钟树插入后,每一个单元的位置都确定下来了,
工具能够提出Global Route形式的连线寄生参数,此时对延时参数的提取就比较准确了。
SE把.V和.SDF文件传递给PrimeTime做静态时序分析。确认没有时序违规后,将这来两个文
件传递给前端人员做后仿真。对Astro 而言,在detail routing 之后,用starRC XT 参
数提取,生成的E.V和.SDF文件传递给PrimeTime做静态时序分析,那将会更准确。
6. ECO(Engineering Change Order)。针对静态时序分析和后仿真中出现的问题,
对电路和单元布局进行小范围的修改.
7. Filler的插入(padfliier, cell filler)。Filler指的是标准单元库和I/O P
ad库中定义的与逻辑无关的填充物,用来填充标准单元和标准单元之间,I/O Pad和I/O P
ad之间的间隙,它主要是把扩散层连接起来,满足DRC规则和设计须要。
8. 布线(Routing)。Global route-- Trackassign --Detail routing--Routing
optimization 布线是指在满足工艺规则和布线层数限制、线宽、线间距限制和各线网可
靠绝缘的电性能约束的条件下,依据电路的连接关系将各单元和I/O Pad用互连线连接起来
,这些是在时序驱动(Timing driven ) 的条件下进行的,保证关键时序路径上的连线长度
可以最小。--Timing report clear
9. Dummy Metal的添加。Foundry厂都有对金属密度的规定,使其金属密度不要低
于一定的值,以防在芯片制造过程中的刻蚀阶段对连线的金属层过度刻蚀从而减少电路的
性能。添加Dummy Metal是为了添加金属的密度。
10. DRC和LVS。DRC是对芯片版图中的各层物理图形进行设计规则检查(spacing ,
width),它也包含天线效应的检查,以确保芯片正常流片。LVS主要是将版图和电路网表进
行比较,来保证流片出来的版图电路和实际须要的电路一致。DRC和LVS的检查--EDA工具
Synopsy hercules/ mentor calibre/ CDN Dracula进行的.Astro also include LVS/DRC
check commands.
11. Tape out。在全部检查和验证都正确无误的情况下把最后的版图GDSⅡ文件传
递给Foundry厂进行掩膜制造
原文网址: IC设计前端到后端的流程和eda工具。 (bbsmax.com)
可以。
吃青春饭那是指开发的那个群体,不包括ic设计工程师的,看看你身边有没有35的数字IC设计工程师,是失业?还是各个公司抢的对象,当然前提是你不要从25到35一直都是混的心态。
IC试错成本太高,用新手犯错代价太高,所以这一行,永远都是老带新,带上路才行。设计、验证以及后端都一样。
最后,客观地说,IC设计并不是严格意义上的程序员,而是数字电路的设计者和维护者在保持永远思考的条件下,数字IC岗位不是吃青春饭,而是吃经验饭。
完整的后端设计由后端半定制和后端全定制两个设计部分组成:
后端全定制设计是指在设计初期最先按照设计需求设计出的物理库单元,物理单元库由标准单元库、IP库及满足特殊需求的定制部件单元等组成,该物理库为后续后端半定制设计提供物理实现基础。
后端半定制设计是指使用布局布线工具并基于后端全定制阶段完成的标准单元库及IP库并根据前端设计完成整个芯片的版图设计,这个过程由称为数字后端设计(自动布局布线-APR)。
数字IC后端设计是指将前端设计产生的门级网表通过EDA设计工具进行布局布线和进行物理验证并最终产生供制造用的GDSII数据的过程。其主要工作职责有:芯片物理结构分析、逻辑分析、建立后端设计流程、版图布局布线、版图编辑、版图物理验证、联络代工厂并提交生产数据。
IC设计工程师是一个从事集成电路开发设计的职业。随着我国IC设计产业渐入佳境,越来越多的工程师加入到这个新兴产业中。成为IC设计工程师所需门槛较高,往往需要有良好的数字电路系统及嵌入系统设计经验,了解ARM体系结构,良好的数字信号处理、音视频处理,图像处理及有一定的VLSI基础。
故而,有很多在校同学希望能够了解企业中IC相关工程师的具体工作内容、技能要求、发展前景等,以增加自己的就业竞争力,同时,还有很多已经拿到offer的IC新人也希望能够增加相关方面知识储备,提前熟悉岗位工作内容,提前做好职业规划。
为此,搞定offer将在本篇文章为大家详细揭秘集成电路设计岗位之数字IC后端攻城狮的工作内容、工作强度等,并为大家提供来自在职前辈的职场心得和建议,希望能够帮助到各位同学。
01 数字IC后端攻城狮
数字IC后端工程师是芯片微观界的建筑师,负责将前端工程师的设计图纸转化为实际的电路结构,并生成符合生产厂家要求的GDS文件。
02 作内容
包括但不仅限于:数字物理设计,综合网表编辑,路径地址解析协议流程的实现,在时序约束合理的情况下完成时序收敛,完成生产厂家设计规则检查等物理设计要求。一般来说,数字IC后端工程师会和模拟IC前端设计人员、厂家技术人员、封装测试技术人员频繁对接。展开来讲,细分为以下方面:
Placement
主要涉及STD cell的拜访,这一步基本是EDA工具根据module的分布进行优化,不过如果时序出现问题还是需要一些人为干预的。
CTS
即时钟树(clock tree,简称CTS),是驱动电路中的时序单元,一般情况下会使用平衡树(balance tree,简称BTS)。但是随着涉及频率越来越高,现在一些逻辑较深的路径也经常采用useful skew技术。
03
Route
即绕线,一般是在满足生产厂家设计规则检查的条件下,由EDA工具完成自动布局布线。随着技术的发展和成熟,EDA工具可以对关键时序路径进行layer promotion的优化,使用更少延迟的高层metal优化时序。
RC/STA/DRC/LVS/Formal
为了得到能实际交付生产的文件,需要在给定的时序约束下不断迭代优化时序,并且执行设计规则检查,版图网表一致性检查,优化后网表功能一致性检查等多项任务。
03
基础理论知识包括CMOS相关知识、半导体基本原理、数字电路设计知识等。
必备工具包括EDA工具中的workshop和UserGuide以及shell或python等脚本语言。
此外,为构建自己的优势技术壁垒,还需深入学习STA原理;知道uncertainty/setup/holdup time时序相关知识;了解一些模拟射频IP的特殊要求例如PLL、SENSOR等;熟悉高速IO的设计、包房、封测的要求;清楚一些常用IP的典型函数式设计程序或数据流例如ARM core、PCIE、DDR。
为区别于普通后端工程师,最好能够深入学习power planing;知道如何实现不同test mode下的test ability/coverage;了解如何筛片以减少封测成本;熟悉如何从timing、power或其他层面提高芯片良率。
04
主要取决于项目时间周期,基于数字IC后端的特点,通常流片前夕是工作强度最大的时期,因为数字IC后端工程师的工作进度将会严重影响能否按时递交版图和产品。
虽然大公司的flow相对完善,整体loading比较均衡,但是项目中的任何一个细枝末节都会影响整个流片,所以数字IC后端往往难逃任何一个环节失误所造成的schedule delay。
05
数字IC后端是一个高需求高增长的行业。随着芯片产业蓬勃发展、生产规模日益扩大、芯片集成日益复杂,社会对数字IC后端设计人员的需求势必水涨船高,因此工作机会很多,跳槽非常容易。
一般来说,后端设计入门容易精进很难,由于后端设计参与流程较多,因此相比前端设计更具通用性,但是想要做到独挡一面,尚需不断积累,适合不断深入,沿着技术专家的发展路径走下去。不过如果对设计、IP、封装、测试、工艺等均有涉猎,也可转型PMO或者自主创业。
06
前辈建议
打好基础,注重积累理论知识、注重实践、积极主动、多请教、多学习。
然后也可以是那种模拟IC 全定制的版图阶段,版图画成,工艺厂做的就是你版图画的那样了
后端设计是画版图和布局布线、芯片测试等阶段。
PCB是做产品,把各种电子元件放在一块敷铜板上成为一个系统,而layout一般指IC设计的后端,即版图设计。
IC前端设计指逻辑设计,就是将你的想法或别人的想法用你设计的电路来实现,也就是说你可以通过电路设计来实现你的想法。比如RTL代码的设计阶段。
IC后端设计指物理设计,就是将你设计的电路制造出来,要在工艺上实现你的想法。比如布局布线。
验证就是测试设计是否符合设计需求和规范,Do Right Things
测试则是测试功能是否正确,Do Things Right
后端好。后端主要是模拟部分以及layout,这方面需要及其丰富的经验,相对应收入会比前端高一点,人才也是奇缺的。人才缺口相对前端就更大了。
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
特点
1、C 语言普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。
2、广泛性。C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了 34 种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。
3、简洁性。9 类控制语句和 32个KEYWORDS是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以使用广大编程人员的操作,提高其工作效率,同 时还能够支持高级编程,避免了语言切换的繁琐。
4、结构完善。C 语言是一种结构化语言,它可以通过组建模块单位的形式实现模块化的应用程序,在系统描述方面具有显著优势,同时这一特性也使得它能够适应多种不同的编程要求,且执行效率高。