数字芯片后端设计中的大局观

2017-06-19 思享国for开源硬件
分享到:

传统上将芯片布局与布线之前的工作称为前端(front-end),而布局与布线之后的工作称为后端(back-end)。前端设计的目的是生成可以布局布线的网表,后端布局的目的在于产生制作掩膜所需要的GDS文件。

前端主要包括:

1. 功能设计

· 即设计产品的实现场景,包括一些功能,速度,功耗等参数,哪些是可以实现在芯片内,哪些功能设计在电路板上。

2. 设计描述和行为级验证

· 功能设计完成后,可以依据功能将SOC 划分为若干功能模块,并决定实现这些功能将要使用的IP 核。

3. 逻辑综合

· 确定设计描述正确后,将用硬件语言描述的功能代码综合成门级网表。

4. 门级验证

· 门级功能验证是寄存器传输级验证。主要的工作是要确认经综合后的电路是否符合功能需求,该工作一般利用门电路级验证工具完成。

后端主要包括:

 1. 布局规划(floorplan)

     · 包括BUMP, IO PAD标准单元和宏单元的规划。

 2. 标准单元的自动摆放以及绕线(auto place cts route)

     · 利用EDA工具摆放标准单元,生成时钟树以及完成物理绕线。

 3. 寄生参数抽取(extract RC)

    · 抽取准确的寄生参数文件交给时序收敛工具进行检查。

 4. 静态时序分析(STA)

    · 用来检查后端设计能否达到前端设计的时序要求。

 5. 物理设计规则检查(DRC, LVS )

    · DRC是对芯片版图中的各层物理图形进行设计规则检查,也包括天线效应的检查,以确保芯片正常流片。LVS主要是将版图和电路网表进行比较,来保证流片的版图电路和实际需要的电路一致。

 6. 可制造性设计(DFM)

    · 用来提高芯片的生产效率和良率,降低芯片生产成本。

 7. 流片(TAPE OUT)

    · 产生制作掩膜所需要的GDS文件。

 在数字芯片后端的布局布线中,全片的布局规划(floorplan)是后端设计的重中之重。

数字芯片设计规模一般比较大,动辄上亿晶体管,上千万个标准单元,设计周期从几个月到一年不等,如果前期的设计没有规划好,后期修时序将会非常困难,可能会导致最后的芯片设计不能满足性能、良率等要求。

那么全片的布局规划(floorplan)怎么确定呢?其原则是在满足设计要求的情况下,芯片面积尽量小,绕线资源能够合理利用,同时高效的利用EDA工具。本文将从五个方面讲解全片布局规划的方法。

1. 芯片在系统中的位置决定了部分模块的摆放位置。

如下图1所示,PCB基板上各个芯片互连在一起形成一个系统。其中高亮的芯片以倒装的形式扣在PCB基板上,芯片与PCB基板通过BUMP相连(如图2中的白点)。

QQ截图20170616092729

下图3是为一个实例。在PCB基板上,DDR3芯片靠近SOC芯片右侧,那么在SOC芯片的全局规划中,DDR3模块应该摆到右侧位置,DDR3 BUMP同样靠近右侧摆放(DDR3模块的输入输出信号通过BUMP与外界相连),这样可以减少PCB基板上的走线。

 
QQ截图20170616092734
图3

2. 分析芯片模块功能以及内部数据流向。

如下图4所示为一款SOC芯片内部各个模块间的数据流向图。该芯片包含PCIE、AV、DDR3等外设接口,它们在芯片中摆放的位置由芯片BUMP以及对应模块大小等等因素决定。而Host Guest GPU MMU模块(图4中高亮的部分)因为和其他各个模块都会有数据交互,需要摆在芯片中央,这样可以减少顶层过多的走线以及标准单元的数目。
QQ截图20170616092739
图4

3. 用工具对芯片进行评估分析。

对于大型SOC芯片,以一个2000万标准单元全芯片为例,现在主流的EDA工具跑全片标准单元(包括触发器,逻辑单元等等)的摆放需要2~3天时间(工具分析不同触发器之间的逻辑关系,然后决定触发器以及逻辑单元摆在芯片哪个位置,设计越大,需要分析的触发器数目越多,所需时间就会越长),这对后期设计优化,时序收敛上时间成本太高。而在全片的布局规划中,模块内部的时序关系可以暂时不考虑,各个模块间的时序关系(即一个模块到另一个模块所需时间)才是关注的重点。因此对于大型设计,各个EDA公司都有不同方法来进行全局分析,减少标准单元摆放的时间。如下图5,6为CADENCE公司后端PR工具INNOVUS的flex model模型。

图5为简化前的模块内部结构,图6为使用flex model简化后的模块内部结构。其中flex model的网表大小仅为全部网表大小的十分之一,只保留了端口的触发器,同时用flex filler填充了原来内部触发器和逻辑的空间。这样有利于评估模块间的时序以及各个模块的面积。然后用简化后的模型分析各个模块间的连接关系,调整模块大小以及位置。
QQ截图20170616092744
 图5
QQ截图20170616092749
图6

4. 模块的重新划分。

由于前端给后端的网表是按照功能划分的,例如video encode和video decode模块在前端来看是不同的功能模块,在后端来看,可以把它打包成一个模块video。端口时序的收敛在后端设计中比较棘手,这样可以把原本顶层的时序放在模块内部实现。

一般情况下特殊电源的模块需要单独处理,而主电源的模块可以重新组合。按照现在EDA工具的处理能力,200~300万的标准单元数目是一个比较合理模块规模,例如在当天的18:00下班前用工具跑auto place route流程,在第二天9点上班时可以有时序报告的结果。如下图7所示为模块重新组合实例。
QQ截图20170616092754
图7

在左侧图中,模块TOP(共有100w+150w+150w+100w=500w标准单元,工具一次摆放Top标准单元的时间会比较长)包括两个子模块 A、D,模块A包括两个子模块B(包括100w标准单元)、C(包括150w标准单元),模块D包括两个子模块E(包括150w标准单元)、F(包括100w标准单元),通过数据流分析B和F的连接关系更紧密,在重新组合之后,逻辑关系如右图所示,模块B、F重新组合成GROUP2(包括300w标准单元),A、D模块重新组合成GROUP1(包括200w标准单元)。

5. 顶层关键路径的解决方法。

当芯片规模较大,如下图8所示,模块A到模块H距离较远,从触发器UFF0到触发器UFF1的时序路径相对于时钟周期的延迟最长,称为关键路径。
QQ截图20170616092800
图8

a. 优化路径。

如下图9所示,根据Elmore delay模型,Net Delay = Rwire * (Cwire / 2 + Cload)(Rwire指线的电阻,Cwire 指线的电容,Cload指远端缓冲器输入端的电容。在28nm及以下工艺中,线上延时占整个路径延时的比率越来越大)
QQ截图20170616092805
图9

为了满足在一个时钟周期内数据从触发器UFF0到达触发器UFF1,需要用驱动能力更强的缓冲器(BUFFER)布局,用更宽更高的金属层布线(更小RC值)。

b. 调整时钟skew。

通常情况,我们会把尽量把launch触发器(图中的Flip-flop 指触发器)和capture触发器的时钟树做平衡,这样有利于修复建立时间(触发器的时钟信号上升沿到来以前,数据稳定不变的时间,即数据能否从触发器UFF0按时到达触发器UFF1)和保持时间(触发器的时钟信号上升沿到来以后,数据稳定不变的时间,即数据到达触发器UFF0后需要在UFF0中保持一段时间防止冲掉刚刚到达UFF1中的数据)的违例。而很多时候需要通过调整时钟树,即故意把时钟树做的不平衡来修时序违例。如下图10所示,Tskew = Tcapture – Tlaunch。

QQ截图20170616092810

图10

为了满足建立时间的时序要求,其公式如下:

   Tlaunch + Tck2q + Tdp < Tcapture + Tcycle – Tsetup

  · Tlaunch 指时钟CLKM源端到launch触发器UFF0 CK端的时间

  · Tck2q指触发器UFF0内部的timing arc从输入端口CK到输出端口Q的时间

  · Tdp 指UFF0的输出Q到UFF1输入端D中间组合逻辑的时间

  · Tcapture  指时钟CLKM源端到capture触发器UFF1 CK端的时间

  · Tcycle 指时钟周期

  · Tsetup 触发器UFF1 的建立时间

从公式中可以看出当Tck2q 、Tdp 、Tcycle、Tsetup一定时,可以用减少Tlaunch或者增加Tcapture的方式来满足建立时间的时序要求,其缺点是减少了保持时间的设计余量。

c. 加拍。

若采用上述方法仍然不能满足时序要求,在和前端设计工程师商讨后,如果这段时序路径加一拍后不影响功能(如下图11所示,在模块A的触发器UFF0数据输出端与模块H的触发器UFF1数据输入端中间加一个触发器UFFX,即原本在一个时钟周期内需要完成的工作现在用两个时钟周期来完成),可用此方法来解决模块A与模块H的时序问题。当然,加拍带来的坏处是增加了标准单元的面积,增大了功耗,降低了芯片的工作效率。
QQ截图20170616092815
图11

综上述是在数字芯片后端设计的全局规划中需要考虑的一些因素以及解决方法,不过只是冰山一角。模块的具体实现,设计各个阶段的分类检查,从大局到细节,都要把控得当。一个好的全局工程师是在设计初期尽可能的考虑全面,减少中期迭代返工的次数,同时在后期出现问题时有快速高效的解决方法,保证芯片能够按时完成。


×
官方微信