后端设计的基本流程是什么?

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

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

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

 

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

  1. 输入是整个数字后端工作的开始,也是最根本的基础。它包含了后端流程需要的所有文件:综合/DFT后的网表(netlist)、时序约束sdc、timing&physical等库文件、signoff的条件和设置以及各种EDA工具所需要的工艺文件。

    需要指出的是,在流程相对完善的公司,一般工程师可能并不需要过分关注Library、signoff条件或者工艺文件等东西,甚至不需要对sdc有太多了解也可以把自己的block做到收敛。但是我还是强烈建议各位养成认真了解每一个项目的好习惯。

  2. Floorplan是一个后端设计最为重要的两个部分之一(另一个为CTS)。它直接影响芯片的PPA(power, performance and area)。一个好的floorplan能够明显减少迭代次数,并能缩短设计周期。关于如何评价一个floorplan好坏,我们将在未来另开文章详细解说。

    就我个人观察,新手在做floorplan的时候常常不知道从哪里下手,很多时候为了赶时间而随便做几个版本,然后直接扔出去跑Place,哪个版本的结果好就用哪个。这样的结果就是很难积累经验,也很难培养真正解决问题的能力。

  3. Place,又称PlaceOpt。主要内容是调用工具的算法对标准单元进行自动摆放。目前的主流PR工具在这方面都比较成熟,但是较新的次世代工具innovus和icc2还会遇见很多问题,需要配合EDA厂商一起慢慢完善。

  4. 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等。本人在此方面也有过开发经验,如果大家有兴趣以后可以开一篇或者几篇文章详细说一说。

  5. Routing,包括布线后的优化,主要是调用PR工具的算法对design中的net进行自动布线,并在布线后继续优化timing, area和power等。对于Routing,最重要的就是能否绕通,也就是是否能够将绕线后的drc/short降至最低甚至0。需要指出的是,这部分routing的对象不包括power,analog等特殊net,因为这些net通常有特殊的约束,因此需要设计者根据工艺、floorplan以及其他constraint自行设计。

  6. Verfication,即验证。主要包括一下几种:

            

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

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

猜你喜欢

转载自www.cnblogs.com/lelin/p/12612839.html