学习
实践
活动
工具
TVP
写文章

后端设计流程简介

在写了两篇简要介绍的文章后,我们务必要起入正题了,有很多小伙伴已经等不及要看看后端的实际东东了!

对于一块芯片实现,通常由两中方式,full-chip亦或是partition,这个主要取决于芯片的规模,

设计相对简单,规模不大,,老工艺,一般指0.13um以上的工艺,整个流程的runtime和QoR(Qualityof Results)可以接受,推荐使用full-chip的方案

规模较大,工艺较高,一般指65nm以下的工艺,推荐使用partition流程。这个是在普通流程上套了一层额外的输入量,这个会有专门的章节描述。

无论是那种,整个流程的大节点是不变的(如图)

如果整个后端的工作分成100份,那么这几个步骤的工作量分别是30(synthesis):10(EC):60(layout),

综合(synthesis)

衔接RTL代码和后端工作的重要桥梁,这也是现在的EDA大佬,synopsys的发家的本领,现在想想,不得不佩服synopsys的眼光。

业界主流的工具就是DC,当然别家也在做,比如Magma的blastcreate、Mentor公司的precision等等,这些小艾都用过,但是最通用的还真的只有DC了。

如果所RTL是用“软件“语言来描述设计,那么综合器出来的结果,就是一个使用真实逻辑门来描述设计了,这个过程在DC里边就是mapping(compile命令的首要操作)。当然,用户提供的所有时序、物理、功耗的约束也是DC需要考虑的,这就是compile的另一个动作:时序、逻辑DRC的收敛。

因为综合牵扯到许多前端设计的需求、clock的定义以及DFT规划,现在很多公司已经将synthesis转到前端了。由前端同事来做综合,或者前端同事提供timingconstraint和DFT insertion脚本,后端同事来搭建环境做综合,同时会加入后端的一些需求:floorplan、flatte、特殊通用逻辑的等效替换等等。

最终,synthesis的QoR上,有一部分还是要反馈给前端同学确认。

这里是前后端共同的战场,这一棒要接好,后面的工作就好做了。

等效性验证(EC)

这个过程打造金饰。客户拿来了一块金币,让你给打造为一个手镯,东西做好了,客户一定会称一下,这个手镯的质量和原先的金币是否一样,如果不一样,那你是要补足的,最终结果就是要质量相等!

EC通过读入RTL代码和综合器的门级网表,通过挂载外围tbwrapper,分别想向个模型(rtl、门级网表)的顶层,打入固定模式的二进制字串,最终在每一个比较点来采样,如果采样的结果一致,则认为相等。

正常讲,综合器不会干傻事,至少我从来没有见过DC犯EC的错。虽然只是一个四眼检查(4-eyecheck),但这个环节不可或缺,简而言之,你不能在一个不是你期望的网表上去划layout。

这个工具还有一个用途,就是在layout ECO中使用,保证增量式的逻辑调整的一致性,最终流片layout netlist(网表)是和的最终版本的rtl是完全一致的。后端工程师需要了解和使用这个工具。

版图(layout)

版图的工作简单讲,就是把综合的网表,放到一个die上边,然后使用工具,将每一门以实际的物理存在方式放置到floorplan里边,同时要保证时序要求、物理规则、顶层调用等检查可以通过,方可最种触发流片。

后端,主要的描述就是指layout,这是最为复杂,也是最有工作量的工作。一个后端工程师每天上班的节奏就是,版图一开,再一关,一天就结束了。第二天继续,几乎天天如此。真心是挚爱啊。

对于一个有规模Layout,工具不能在整个layout的过程中把所有的时序、物理问题解决。现在的设计越来越大,由于对成本的考量,一般版图的利用率都要保证在75%以上,在有限的面积下,工具是很难满足性能的要求,这也是当前超大规模芯片设计的面临的最主要的挑战。

工具在超量运算的前提下,其结果是难以复现的,任何网表、floorplan、约束、命令的配置选项、环境变量、甚至是分布式任务的服务器可能多会影响结果。工具的版本也会对QoR产生影响,一般来讲,一个复杂的block或者full-chip,其QoR能保证80%的稳定性(可复现)就是很不错的状态了。APRer的首要目标就是要拿到这80%,只有这样,你才敢和你的领导讲,这个项目能按时交工!

絮絮叨叨了这么久,终于有图看了,我们先来看一张某模块的最终版图

这只是一个中等模块的设计,真个版图的信息量已经很大了。所有的基层和绕线层叠加在一起,好像一锅粥。

这里只是为了演示方便,正常情况下,工程师们都是分层去查看版图的,这是因为,所有的物理验证、流片最终也都是分层处理的。好,让我们把上图分分层。

这是一张m1 layer截图,密密麻麻的什么也看不清,放大后大概是这样

由于是m1,这里有很多cell的PG/signalpin,所以看起来很有规律。仔细的同学一定能看到其中的一些pinaccess点是不同的,那里会有一点V1和M1 pin接触的地方,对应的会有M1的via hang。这个就是真实用于绕线的资源。这个截图呈现的例子是一个绕线层,尽管这个层上有很多pinshape。但他依然可以用于绕线,例如pinaccess的点位。

简单的讲,芯片分为基层(base layer)和绕线层(routinglayer),所有的基层结构,完全由librarycell来决定。基层在这里只是一个统称,这是一组层的统称,通常你在半导体物理学到的N-well、poly、P-well等等,但是请注意,每一个cell都完备的具有这些基层,也就是说,每一个cell都可以单独拿出来流片。同样,任何一个cell的变动,VT swap、size_up、movement等操作,都至少会破坏其中的一层或多层基层。fab流片的时候,是一层一层的生产,但不幸你在新品生产的过程中(一般六到八周),需要动到一个cell来修复timing或者功能问题,那么好,这次流片所有的基层也就全部被动到了。没错,流片的钱是按层算的,但是动到一个std-cell就废掉几十层的基层生产费用,代价还是很大的。这就是流片需谨慎的原因。通常的基层都是基于工艺来讲的,也不是我们可以更改的层级,这里小艾就不做进一步的展开了。

下边这个是m3的绕线层的局部截图,

长方形的白色线条是各个cell的位置,一般来讲,std-cell占用一些底层资源来做为pinshape,上层是留给工具绕线的,所以设个m3的绕线结果就是穿越了各个cell。通常来讲,高层绕线层的方块电阻会低一些,较高层一般都优先留给clocktree布线,来保证skew,同时也要减少clocktree的latency。这里的m3在此工艺上被定义为低层,主要是用来做data path的绕线的。工具还是很强大的,想想如果用手,将真的是噩梦(高手除外J)。

除去信号线和时钟线,还有一个重要的资源,就是电源和地,简称PGstrap,上边讲的层已经都被占用了,电源只好屈尊去最高层了。主电源网络上的电流都比较大,高层的PGstrap都很宽,这个对电阻、IR-drop(电压降)和电迁移(EM)效应都会有好处。PGstrap都是按照固定宽度、固定步长来布局的,并且是X-Y交叉的网络,如果做高层是横向,那么一定要把次高层的纵向资源拿出来和最高层做补充,这样才是一个完整的网络。就像这样:

既然是固定步长,那么网格中间的夹缝地带,就是可以还给信号、时钟走线的,尽管数目不多,但这可是芯片上最好的绕线资源,使用高层金属绕线,修复个几十ps的setupviolation是没问题的,如下图所示,密密麻麻的细线就是普通信号、时钟线。

一个完整的芯片,有了电源网络还不够,这个芯片的电源插头在哪里呢?这里就要引出一个协同设计(co-design)的概念,co-desing是一个和package合作紧密的工作,是介于top-levellayout和packagedesign的一个环节,它的作用是将芯片上的电源地、IO通过BUMP连接到package的ball上边去。

这里的ball的意思就是球,是BGA封装上的那个球型阵列。由于现在大型规模芯片的接口众多,芯片的IO数量的数量动辄200信号管脚朝上,BGA封装是不二之选,所以现在的co-design,使用了最最高层来完成这个工作,这个层也不是版图工具可以使用的绕线层,通常来讲,co-design会以脚本或者DEF的格式返给chip-layout,由top-layouter来统一集成在一个数据库里。

到了这里,你可能已经对版图有了一个直观的认识了吧!工作量如此巨大的一个事情,不依赖自动化死无法完成的。所以后端的工作也被称为APR(Auto Place and Route)。世界上没有完美。到底后端实现上的难点和重点又是什么呢?在下一讲《时序和物理分析》,小艾将为各位同学一一道来,敬请大家的期待。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180519G1BHVK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券