后端的总体工作用一句总结就是:运用给定的输入,在给定的时间内做出符合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的验证来保证质量。在这些方面大家有过几次流片经验之后就会慢慢熟悉起来。
1、signoff?
signoff,签发。
后端所说的signoff,是指将设计数据交给芯片制造厂商生产之前,对设计数据进行复检,确认设计数据达到交付标准,这些检查和确认统称为signoff。
2、signoff的主要方向
timing signoff 静态时序验证
PA signoff 电源完整性分析
PV signoff 物理验证
RV signoff 可靠性验证
FM/CLP signoff 形式验证和低功耗验证
3、signoff要点
timing:setup check 建立时间检查——hold check 保持时间检查——drv check 最大传输时间检查和最大电容检查——SI check 信号一致性检查;
PA signoff:关注芯片功耗,静态和动态IR降,电荷迁移等;
PV signoff:关注芯片是否满足工艺设计规则,物理设计与逻辑网表的一致性;
RV signoff:关注ESD,latchup,ERC等检查;
FM signoff:关注最终输出的逻辑网表与最初输入的逻辑网表之间的一致性;
CLP signoff:关注在低功耗设计中引入的特殊单元,电源域划分及组成单元的正确性;
4、通常设计人员所说的第一次signoff指的是代码的冻结freeze,freeze code后,后续所有的代码修改均需提交patch进行审核。