阎浮提 · 2020年05月29日

献给芯片设计新手:后端设计的基本流程是什么?

\# 更新:2018/4/14。因为之前没有把ECO和Chip finish写进flow,但是对于新手,理解这两个步骤还是很重要,因此增加对这两个概念的解说。

以下为原文

最近有些童鞋提出希望有一些面对新手的关于flow等基础知识的讲解,因此将我很久以前构思的这篇文章完成并发布出来,献给所有入门的童鞋们。

正文:

如果有人问我,数字后端最重要的是什么,我一定回答他:是流程

但是对于很多非后端的人来说,后端究竟干什么一直是一个模糊的概念。有些人认为可能就是跑跑flow,弄弄工具;有些人认为全是dirty work,完全手动,毫无技术含量。就我个人来说,不止一次遇到一些前端的人不仅对后端完全不懂,甚至认为RTL写好验证通过后一颗芯片基本就能做出来,言语之间还带着一些蜜汁优越感......

那么后端流程究竟是什么呢?首先,后端的总体工作用一句总结就是:运用给定的输入,在给定的时间内做出符合signoff条件的PR结果并满足各种验证。

下图对数字后端流程做了大致描述:

  • 输入是整个数字后端工作的开始,也是最根本的基础。它包含了后端流程需要的所有文件:综合/DFT后的网表(netlist)、时序约束sdc、timing&physical等库文件、signoff的条件和设置以及各种EDA工具所需要的工艺文件。需要指出的是,在流程相对完善的公司,一般工程师可能并不需要过分关注Library、signoff条件或者工艺文件等东西,甚至不需要对sdc有太多了解也可以把自己的block做到收敛。但是我还是强烈建议各位养成认真了解每一个项目的好习惯。
  • Floorplan是一个后端设计最为重要的两个部分之一(另一个为CTS)。它直接影响芯片的PPA(power, performance and area)。一个好的floorplan能够明显减少迭代次数,并能缩短设计周期。关于如何评价一个floorplan好坏,我们将在未来另开文章详细解说。就我个人观察,新手在做floorplan的时候常常不知道从哪里下手,很多时候为了赶时间而随便做几个版本,然后直接扔出去跑Place,哪个版本的结果好就用哪个。这样的结果就是很难积累经验,也很难培养真正解决问题的能力。
  • Place,又称PlaceOpt。主要内容是调用工具的算法对标准单元进行自动摆放。目前的主流PR工具在这方面都比较成熟,但是较新的次世代工具innovus和icc2还会遇见很多问题,需要配合EDA厂商一起慢慢完善。
  • CTS(Clock Tree Synthesis)。主要内容是根据floorplan和place的结果合理构建时钟树,并对有timing关系的clock进行balance。主流PR工具对于clock相对简单的design都支持的比较好,但是对于clock domain多且结构复杂的design,想要做到一个skew,latency和power都比较理想的clock tree是工作量很大且很有技术含量的工作,因此很多大公司的项目都是单独分出人来负责时钟树的构建。 需要指出的是,除了传统的clock tree,近些年还有大量的定制化clock tree结构陆续出现并在流片后实现了比较好的效果,比如fishbone, H-tree等。本人在此方面也有过开发经验,如果大家有兴趣以后可以开一篇或者几篇文章详细说一说。
  • Routing,包括布线后的优化,主要是调用PR工具的算法对design中的net进行自动布线,并在布线后继续优化timing, area和power等。对于Routing,最重要的就是能否绕通,也就是是否能够将绕线后的drc/short降至最低甚至0。需要指出的是,这部分routing的对象不包括power,analog等特殊net,因为这些net通常有特殊的约束,因此需要设计者根据工艺、floorplan以及其他constraint自行设计。
  • ECO(Enginerr Changing Order),主要是对于工具无法完全修掉的问题进行手动fix。ECO主要有两种:Logic ECO和Physical ECO。Logic ECO是对网表的逻辑功能的修改。原因在于在芯片设计的后期阶段,前端工程师可能会发先设计上的某些bug而需要对电路做修改,而此时的schedule已经不允许进行重新综合,因此会选择在PR的网表上进行逻辑修改,一般情况是会增加一些逻辑或者将某些逻辑的net重新连接;而Physical ECO主要是针对PR工具无法完全fix的问题进行手动修正。一般包括Timing ECO,drc fix等。
  • Chip Finish Process。此阶段主要是对PR基本完成的网表在进行流片前为量产、良率已经后期改版做一些优化和准备。一般包括插入filler cells、insert metal fill、修复antenna,某些flow可能会选择在这个时机插入tap或者boundary cells。
  • Verfication,即验证。主要包括一下几种:

这里虽然只是简单的列举的verification的分类,但是实际上上面的每一个种类水都很深,大公司更是每个门类都有专门的team。但是反过来说,一旦进入到上述的某个领域且持续做很久的话就很难再跳出来,尤其是对应届生来说,在做职业规划的时候需要好好考虑。

  • 一切都没有问题之后,就可以signoff了,也就是我们常说tapeout。对于foundry长来说,主要需要后端提供的GDSII或者OASIS文件来制作各层的mask并逐层制造芯片。但是在实际中可能会复杂一些。Tapeout一般来说是一件各方都很重视的事情,因此在流程严格的公司可能会涉及各种review和check,在交付foundry厂之后通常foundry的后端team还会再做一次Physical的验证来保证质量。在这些方面大家有过几次流片经验之后就会慢慢熟悉起来。

以上就是后端设计的基本流程了。对于上述的每一个环节,以后都会展开详细解说,敬请期待。

相关文章

如果大家有任何后端技术与职业发展方面的问题,抑或关于数字后端感兴趣的技术话题想要了解和探讨,欢迎关注我的知乎专栏: 数字IC后端设计工程师修炼之路

同时欢迎关注微信公众号:数字后端芯讲堂,一起探讨技术,共同提升!
本极术专栏也会同步更新芯片设计后端的技术干货,也请关注数字IC后端设计工程师修炼之路

9 阅读 662
推荐阅读
0 条评论
关注数
422
内容数
35
本专栏致力于将数字芯片后端设计的技术,经验和技巧介绍给想入门或提高的你。一方面从基础知识方面的讲解使初学者少走弯路,另一方面用实际工作中的经验技巧方便从业者提高和交流。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
Arm中国学堂公众号
关注Arm中国学堂
实时获取免费 Arm 教学资源信息
Arm中国招聘公众号
关注Arm中国招聘
实时获取 Arm 中国职位信息