数字后端干什么?

和前端及DFT相比,数字后端真的不占优势吗?

众所周知,数字后端设计是IC设计中必不可少的一个环节,可是后端设计工作的意义是什么呢?

数字后端最重要的工作就是建立flow,公司里面的flow一般都是如何建立的呢?接触一个新的项目时,具体应该从哪入手,如何一步一步地将PR做好呢?

针对公司项目,数字后端工程师应该具备哪些能力?后端的工作多而杂,很容易变成机械劳动,应该如何实现自我提升呢?

和前端及DFT相比,后端设计有哪些优缺点呢?


后端工作介绍

数字后端设计的工作其实是承前启后的。一般来讲,从算法模型C++或者是Matlab,做出算法模型;到RTL,执行行为级的网表之后;再到后面的综合,在业内来讲,到综合就被界定为后端工程师的工作,但也有些公司会把综合这部分内容划分到前端工程师的工作当中。就是说做SoC或者RTL的工程师会带着去做一些综合的事情。一般来说综合的事情不太会单独拉出去做。综合工程师一般是挂在前端或者后端的。

综合之后到APR就是数字后端的工作。数字后端工程师的工作重点就在PR上面。PR之后还会有一些sign off,一直到tape out。后端工程师可能会跟流片厂有一些接触,这个部分公司也会让后端工程师去做,如果是大公司,可能会有一些单独的工种来处理。大多数后端的工作都会在APR上面。

数字后端工作的主要流程

如何把从逻辑上的一些网表,门级结构实现到GDS上面,即物理层面,是数字后端工作的意义。

对模拟IC来讲,一般叫layout工程师。模拟设计是customer定制化的画版图,和数字的工作内容会有比较大的区别,它的手工活比较多,但是从实现意义上来说是一样的。都是把纯逻辑的门级网表转化为physical的版图,所以有些公司会把数字和模拟统称为layout部门。

不同的公司或团队可能会有些许不同,但是大体上的flow是没有任何问题的。基本上是从design data的准备到floorplan/powerplan,结束后进入到placement。floorplan加上placement我们把它叫做布局,cts到后面的routing叫做布线。

之前的书上会把PR叫做布局布线,routing结束之后会进入到signoff的阶段,signoff会包括物理的signoff和逻辑的signoff,以及timing等各种情况的check。signoff结束后,如果有可能,我们会做一次ECO,ECO结束后就是tape out了,这整个的流程是PR的基本flow。

数字后端每一环节的工作内容

1、数据的准备

数据的准备大概包括几个方面,一方面是逻辑数据,逻辑数据一般包括Verilog,timing的一些library files(db/lib),还有约束文件,时序上的约束文件,比如说SDC,power上的一些约束文件,UPF或者是CPF(针对不同公司的工具还有格式)。

另一方面是Technology File,包含整个设计和工艺上面的技术文件,RC的Model files,因为数字后端是从逻辑到物理的一个过程,我们需要RC的一些参数信息,用来在布线之后做RC的抽取。

还会需要一些Mapping files,Mapping files主要的内容是把不同的层次,不同的Technology File对应上。剩下的就是physical的数据,一般来说是lef或者mw(针对不同公司的PR工具有不同的格式文件)。我们把这些东西集合起来放到PR工具里面。

2、Floorplan

数据准备好以后,我们会进入到Floorplan,真正的布局方面。Floorplan开始的时候会有一个setting的过程,真正的Floorplan开始后,我们会先做IO的Floorplan,port或者pin(主要看你是做顶层还是block),如果你是做Top的人员,可能摆的是IO的plan,如果你做的是block,你的block里面并没有IO,你可能先会把pin做一个plan,但是基本上的原理是大同小异的,从大到小,从外到内。

为什么要先做IO的plan,因为现在市场上大多数在做的芯片,能够坚持到后端,他们的spec都是非常地清晰的。前端的设计,产品的定位,市场上竞品的设计模型和封装模型都是非常清楚的,有明确的对标单位。进到布局的时候,封装的模式基本上是定下来的。所以进入到Floorplan的时候,会尽量先把IO的东西固定下来,但这里的固定不一定是100%要确定IO的内容,可能后面还会做微调。微调在很多时候都会碰到,做PR流程是一个方面,迭代其实会占更大的一个比例。

IO的plan做完之后,一般会做Macro的plan,同步可能会做一些powerplan,根据不同的公司和项目可能会有一些微调。这部分做完之后,会进入到真实的Create power strap的过程,换句话说就是要把电源网络做到真实。做好之后,会做一些physical cell的placement。

当这些都处理好之后,整个电源网络的大部分东西都已经放进去了,可以做比较完整的验证了,去verify你的powerplan。verify powerplan有几个目的,第一个是检查整个powerplan的完整度,另外一方面是为了检查powerplan的drc。

到了后面之后几乎不会再去动到powerplan,很多电源线就是在Floorplan的时候搞定的,powerplan做的正确与否往往要到最后的routing之后,或者最后的drc的时候才能发现,所以这种东西要提前去做,尽量避免到最后才去发现powerplan的一些隐藏问题。所以现在有些公司会把powerplan的东西排的比较靠前,尤其是现在工艺越做越深,对drc的要求越来越多,对power的规则性也是越来越多,所以powerplan要求也是越来越多的。

当你的powerplan做好之后,你的Floorplan做完了一版了,但不能说做好了,至于这一版的情况,除了verify power的评价外,更重要的是timing的评价。

3、placement

进入到placement这个阶段之后,我们拿到了一版的Floorplan,正常流程可能会读一个scan def,有些设计流程是不读scan def的,不同设计不同要求。

后面来说你要做的就是setting,这些做完之后,就可以让tool来做Auto的placement,一般来讲PR工具只要设置好了一些东西之后,整个过程不需要你操心,在place结束之后几个小时或几十个小时之后能拿到一版place的结果。

这些东西都做完之后,这一版place的东西你都可以接受,这一版数据可以ready for cts。大多数情况来说是不能够去做cts的,可能还要做一个优化,做critical path refine的一些工作,之后还要check refine的结果。当你觉得check的质量是OK的,你还想对place做一个命令上的优化,可以再进行high error的opt。

一般来讲placement的流程就是这样了。

4、cts

当place的东西可以接受了,就到cts的部分了。当你setting好了,就可以进入到clock tree synthesis,clock tree也是做PR工作的一个重中之重,当clock tree做好之后,一般会做clock tree的opt,这些做完之后就进入到routing。

5、route

Routing的流程大多数公司都是一样的,一般来讲先去做clock tree的routing,把最大的资源、最好的资源留给clock tree。clock tree绕线结束之后,再去做Auto route,绕线结束之后,会有一个绕线的opt的过程。opt结束后,你觉得都能满足,去check一些routing的质量,这些东西都结束之后,绕线就基本结束了,可以进入dataout的过程。

迭代贯穿了整个后端设计的流程。

6、signoff

进入到signoff阶段。data准备好了,data的东西会分物理和逻辑两部分输出,一般来讲会输出GDS,GDS会做merged,。结束之后会做一些physical相关的check,逻辑的部分也可以同步进行。

当所有的东西检查都结束了,这一版的GDS就可以送去做tape out了。

数字后端的工作比较繁杂,做的事情比较多,迭代会比较多,比较考验经验。

数字后端所需技能和提升方案

 所需技能

数字后端工程师要学的东西很多、很杂、很乱,所以怎么去抓重点是比较考验大家的能力的。因为这个是工程应用,很多东西是书本上学不到的,所以要多做,而且要做一些不同的项目,去扩展自己的视野。学的多做的也多,所以一定要善于消化。不要机械性地做事情,要思考。比如,你从上一个项目中学到了什么,能够解决哪些问题,可以如何应用到接下来的项目当中。

• 略懂前端

不需要写RTL,但是要能看懂一些简单的Verilog硬件描述语言,能看懂电路的结构图,时钟的架构图,电源的架构图。了解到约束。

• 熟悉综合

因为有很多公司会把综合的事情交给后端的工程师来做,所以需要去懂一些综合上的技巧和流程。综合上的东西主要有了解基本设计架构,时钟结构,层次化设计要求等方面;能编写设计约束文件SDC ;基于PPA做出合理的优化设定。

• 精通数字后端

良好的floorplan和powerplan规划能力;准确高效的placement实现,减少版本迭代; 高质量的时钟树综合;可预测的route结果(physical/logic)。

• 精通时序分析

熟知sta流程,但不仅仅是跑sta流程;应对复杂case能准确高效定位时序问题;针对不同case有精确的打击能力。

• 精通物理验证

对不同工厂,不同工艺节点的物理验证都有深入的理解;了解不同的封装形式;了解大多数常用IP/IO的物理实现要求。熟知验证文件;准确高效的定位LVS问题。

• 了解封装

了解常用的封装模式。作为一个后端的顶层设计人员,必须要知道芯片的封装形式。

• 脚本撰写能力

掌握一种及以上脚本语言,基本的是tcl和Perl;看懂常用语言写成的脚本;能对不同的case快速编写反应脚本;通过脚本实现提高个人效率。

工程师的提升

•知识面要广

以上列出的,甚至更多的方面,都要有所涉猎。后端知识点不深,但是繁杂,更看重工程应用的经验。做不同类型的项目,做不同职责的任务,是个好途径。

• 有擅长的职业(专业方面有突出)

技能树要有突出点,在某一个方面能力特别强。专攻方向是指至少要在某个领域有深入的研究,而且做的要比平均水平好。

•切记浅尝辄止

忌讳眼高手低,什么都想做,什么都做不好;后端工程师的工作很容易造成眼高手低的现象。可参考一万小时定律。

原文链接:http://news.moore.ren/industry/145105.htm

你可能感兴趣的:(数字后端干什么?)