后端设计的基本流程

献给芯片设计新手:后端设计的基本流程是什么?
# 更新:2018/4/14。因为之前没有把ECO和Chip finish写进flow,但是对于新手,理解这两个步骤还是很重要,因此增加对这两个概念的解说。 ###以下为原文 最近有些童鞋提出希望有一些面对新手的关于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(Engineer 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的验证来保证质量。在这些方面大家有过几次流片经验之后就会慢慢熟悉起来。

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

看完不要忘了点赞!

专栏其他文章:


数字后端基础之:芯片的整体功耗是如何计算出来的?97 赞同 · 4 评论文章

后端Timing基础概念之:为何ICG容易出现setup violation?57 赞同 · 0 评论文章

后端Timing基本技能之:Hold Violation怎么修?40 赞同 · 0 评论文章

后端Timing基本技能之:Setup Violation怎么修?60 赞同 · 0 评论文章

后端Timing基础概念之:为什么时序电路要满足setup和hold?41 赞同 · 0 评论文章

科普贴:工艺升级中后端的挑战是什么?25 赞同 · 0 评论文章

IC设计前后端流程与EDA工具_xingsongyu的博客-CSDN博客_ic 后端工具
原文:https://blog.csdn.net/shaobojiao/article/details/81518344IC前端设计(逻辑设计)和后端设计(物理设计)的区分:以设计是否与工艺有关来区分二者;从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路。前端设计的流程及使用的EDA工具1、架构的设计与验证按照要求,对整体的设计划分模块。架构模型的仿真可以使用S...