解决深亚微米时序收敛问题的一种方法
杨梁 赵继业
中科院计算所
Abstract
The development of DSM(deep submicron) technology brings more and more challenge to ASIC designs .Facing the pressure of design quality and time to market, How to handle closure requirements becomes one of the most urgent challenge for EDA vendors and designers. Traditional wire delay estimation which using WLM(Wire Load Model) at the front end brings on a gap between post-synthesis and post-layout, and it’s considered not be able to account for 90nm technology and below. hence the DC2006.06 new version introduces a new feature called virtual layout based synthesis into logic synthesis and optimization, and calls it topographical mode, DC-T for short.
This paper introduces the DC-T flow at first, and then explains the characteristic of our design, four typical physical design modules at 90nm technology. Taking these modules for example, we synthesize and optimize our RTL codes following zero-WLM and topographical flow separately, put them into PC2006.06 to do placement, then compare the result with DC result. Further more, we analyze the similarities and differences between DC-T and PC by dint of examining the critical path and TNS distribution. At last, considering the impact that physical constraints bring to DC-T results, we modify the macro and port settings to observe and analyze the results.
一、 前言
随着深亚微米工艺的发展,现在的ASIC设计已经转向90纳米及65纳米工艺,特征尺寸持续减小而芯片面积基本保持不变,导致线延迟在整体延迟中所占比例越来越大,长线延迟估算的准确度在整体时序计算与优化中显得日益重要。传统的ASIC流程一般分为前端后端两个阶段,其中前端一般指RTL代码综合生成网表过程,而后端则指物理布局布线过程。Synopsys的Design Compiler负责前端的综合优化工作,但与其它综合工具类似,它对线延迟的考虑是基于Wire Load Model,对具体的某根线来说,这种估算仅考虑设计面积大小以及自身扇出数,缺乏准确性,导致前端post-synthesis的时序与后端的post-layout时序结果有很大出入。为维系这种前后端的一致性,Synopsys在DC0509SP3版本中开始考虑在前端引入virtual layout的概念,在优化过程中作虚拟布局布线,以此结果来计算具体的线延迟。
考虑到物理约束对整个设计时序、功耗等方面影响很大,DC0606版本开始正式支持物理约束的引入,我们可以具体定义core area的形状大小、宏单元的位置、端口的位置等等,也可以仅仅粗略地定义core area的利用率以及端口在哪个边界等等。另外,在topographical模式基础上,DC0606版本还提供对扫描链以及多电压域的支持。除此之外,时钟网络功耗是不容忽视的,DC0606通过CTE(Clock Tree Estimation)来估算这部分的功耗开销,以此来消除其结果与post-layout的不一致性。通过众多实例的分析,DC0606宣称DC-T与PC(或ICC)结果将十分相似,时序(WNS)差异小于15%,面积差异小于10%,功耗差异小于15%,需要的内存容量不会超过原来的5%,运行时间基本不变。
本文第二节先介绍DC0606版本DC-T流程;第三节介绍四个具有代表性的物理设计模块以及实验方法和目的;第四节以这四个模块为例,分别采用DC0606的zero WLM以及topographical流程来进行综合优化,产生出来的网表各自送到PC0606中进行布局,得到的结果分别与DC-T结果进行比较并分析其一致性。更进一步地,我们观察关键路径来分析DC-T和PC的异同,最后考虑物理约束对DC-T结果产生的影响,并且通过调整端口等设置来观察并分析其结果;第五节给出结论。
二、 DC-T流程介绍
可以通过dc_shell-t -topo命令启动支持topographical模式的DC shell。在DC topographical模式下,除了设计的RTL代码以外,应该准备的输入不仅包括原来DC需要的时序优化约束和逻辑库信息,还要给定与逻辑库对应的物理库,以及包含线电容电阻信息的TLUPLUS文件,另外也可以提供可选的物理约束,来指定设计core area、利用率、端口位置以及宏单元位置。物理库提供的方式可以用milkyway库或者pdb库,默认情况下使用milkyway库,若是pdb库则需要用set use_pdb_lib_format true指明。DC-T模式下不再需要提供Wire Load Model,它根据虚拟布局布线得到的线长估算线的电容电阻来计算线延迟。
整个DC-T流程(以milkyway_library为例)如图1所示:
图表 1-DC-T流程图
(1)设置参考库。target_library、link_library、synthetic_library、symbol_library的设置与以前相同,值得注意的是,若物理库使用milkyway方式,其对应的逻辑库最好使用其LM下的db,否则DC将自动载入milkyway对应LM目录下的逻辑库,从而导致逻辑库的混乱。pdb库的话通过set physical_library引入,并指明set use_pdb_lib_format true。milkyway方式下需要设置mw_logic1_net和mw_logic0_net,然后通过set mw_reference_library引入物理库。
(2)用create_mw_design创建一个milkyway的design,注意通过-tech_file和-tf2itf_map选项引入工艺库信息,-max_tluplus选项指明线电阻电容信息。DC0606还必须要用set_tluplus_file特别指明max和min情况下的tluplus文件,否则其当作缺乏tlu信息来处理。在读入RTL代码之后还可以用extract_physical_constraints命令来导入用户定义的DEF格式的物理约束,来指定设计的形状大小、core area、利用率、端口位置以及宏单元位置。也可以直接通过Tcl脚本的方式定义物理约束,如set_placement_area、set_port_location、set_cell_location、create_placement_keepouts等命令,若是在JXT里甚至还可以直接通过derive_physical_constraints来输出TCL脚本的物理约束。在进行完一系列时序面积等约束后使用compile_ultra命令进行topographical模式下virtual layout based synthesis。
(3)第一遍优化完毕后,可以根据关键路径所在进行RTL代码的少量修改,可以作register retiming,也可以进行scan insertion,然后在第一遍topographical模式综合的基础之上通过compile_ultra -incremental来进行进一步的带物理信息的优化。
(4)最后输出优化后的网表、ddc或milkyway,观察综合优化后的时序面积以及功耗等结果,也可以通过write_physical_constraints输出DC-T综合更新的物理约束,该约束会考虑到compile_ultra所做的ungroup以及change_names所作出的修改。不管是读入网表还是ddc的方式,这些物理约束在再次运行dc_shell时必须重新引入。值得注意的是,DC0606支持write_milkyway写出milkyway格式的数据,但无法读入milkyway数据。
三、 实验方法介绍
我们挑选90纳米工艺下某测试芯片四个典型模块作为实验分析对象,模块1大约90K instance,以组合逻辑为主,不包含任何RAM块和宏单元,关键路径大多分布在边界路径上;模块2大约60K instance,仅包含两个RAM块,其关键路径集中在内部路径上;模块3大约75K instance,其中RAM块面积和逻辑单元各占一半,其关键路径存在在与RAM块接口处以及部分边界路径上;模块4大约70K instance,以RAM块为主,关键路径在RAM块接口处。四个模块基本的floorplan如图2所示,图中黑色区域表示RAM块,灰色区域表示标准单元逻辑。
图表 2-模块的floorplan图示
在本实验中,我们先沿袭以前zero WLM模式的流程进行DC综合优化,输出网表和SDC到PC进行布局优化。之所以选用zero WLM模式的原因在于我们认为传统的WLM在估算线延迟时很不准确,不如仅在逻辑综合阶段考虑器件延迟的影响(我们之前的实验表明采用zero WLM方式得到的最终时序不会比WLM方式差,而面积要更小一些)。然后再用DC-T模式采取与PC相同的约束对RTL代码进行综合优化,输出网表和SDC到PC里进行布局优化,比较这两种模式之间的区别以及DC-T与PC布局之后的一致性,包括设计的时序、面积等。由于未提供准确的VCD文件,再加上本实验只考虑PC阶段结果而没有进行时钟树生成,所以我们暂不考虑功耗方面的数据。
在以下的表述中,我们用DC-T代表采用topographical模式的DC综合,PC-T代表以DC-T产生的网表作为PC输入的布局优化结果,DC-N代表采用zero WLM模式的DC综合,PC-N代表以DC-N产生的网表作为PC输入的布局优化。
在整个实验过程中,我们主要关注如下几点:
1) DC-T结果与PC-T结果的贴合程度。包括WNS、TNS、关键路径以及面积等方面,用以分析DC-T与PC结果的一致性。观察DC-T是否正确处理了“真正”的关键路径,而不过多纠缠于“虚假”的关键路径。
2) PC-T结果与PC-N结果的比较。包括WNS、TNS以及面积等方面,DC-T与DC-N结果的直接比较没有多大意义,评判综合效果的标准应该是看其网表布局布线的结果。这种对比能够体现出DC-T输出网表质量的好坏与否。
3) 物理约束对于DC-T结果的影响。能否通过适当调整物理约束来引导DC-T的综合优化,来满足设计人员的要求。
四、 实验结果及分析
首先,我们在DC-T模式下采用与PC完全相同的时序约束和物理约束来进行逻辑综合(给定端口具体位置,指定模块内macro位置),其实验结果如图3:
观察上图数据,首先比较DC-T和PC-T的结果,显然,DC-T的时序比PC-T时序结果要悲观得多,四个模块都呈现出8%到24%不等的悲观程度,而在面积方面则相差不大。而DC-N则比PC-N结果乐观许多,这是 意料之中的。此外,我们对比PC-T和PC-N的结果,除了模块4的PC-T时序比PC-N时序稍差以外,其它模块无论从时序还是面积上来看,PC-T结果比PC-N结果都好些。
由于无法获得DC-T下virtual layout的布局信息,我们只能借助timing report的信息,并对比PC-T相应路径来观察各个模块DC-T阶段关键路径。我们发现,有些是由于DC-T没能很好利用库单元中建立时间宽松的那些时序单元而导致关键路径的出现,如图4模块1中的情况:两者路径延迟基本相同,区别在于对终点寄存器的选用,DC-T选用了一个建立时间为+0.045ns的寄存器,而PC则选用了建立时间为-0.297ns的寄存器,这就造成了整个时序路径上slack的出入。
图表 3 -实验1的时序面积
图表 4 -模块1的DC-T关键路径
另外一些关键路径出现的原因在于DC-T阶段与PC阶段路径的不一致。图5给出模块2中一条内部关键路径的对比,DC-T路径级数为16,而PC路径级数为14,而且观察到DC-T路径上的线电容及各个器件入口transition都偏大,于是可以推测认为该路径在DC-T里比在PC里的情况更为糟糕,因此造成 “虚假”关键路径情况的出现。
图表 5-模块2的DC-T关键路径
此外还存在以上两种原因的混合情况:模块3的第一条关键路径在DC-T和在PC里路径有些许不同,而且终点寄存器类型也不一致;模块4的第一条关键路径的起始寄存器类型不相同,路径延迟也有不同之处。
上述情况说明某些在DC-T下被认为是优化余地较小的时序关键路径,在PC中却能通过更换寄存器类型或布局优化等方法予以消除。这种情况导致DC-T与PC-T时序结果不一致,DC-T比PC-T结果糟糕。
换过来看, PC-T中关键路径是否能在DC-T中真正体现出来呢?我们观察四个模块PC-T的关键路径在DC-T中的timing report,发现某些PC关键路径在DC-T中处理得较好,如下图6中所示的模块1的关键路径,其在DC-T的估算与PC中基本一致,DC-T中对线电容的估算也大致相同。
图表 6-模块1的PC关键路径
同时我们发现也存在不一致的路径,如图7所示模块4的关键路径,PC-T的级数为15,而DC-T中为11级,甚至路径上电路逻辑结构也有所改变,导致DC-T的估算过于乐观。
图表 7-模块4的PC关键路径
此外还有一些PC里的关键路径,在DC-T下时序相对差一些,原因可能在于在DC-T中WNS的时序路径优化不下来,这些路径也就没得到多少的优化力度。
从关键路径的分析来看,借助virtual layout的估算,DC-T能够捕捉到不少“真实”的关键路径,这些路径上DC-T和PC-T的级数基本相同,在线延迟的估算上DC-T也比较接近真实值;但也有很多不一致的地方,这主要表征为路径级数的不同,导致DC-T对这些路径的估算或者过于悲观或者过于乐观,没能得到正确恰当的处理。
Synopsys在DC-T相关文档里提到的时序相符性指的是WNS,那TNS方面是否存在一致性呢?我们比较了四个模块在DC-T和PC-T下TNS分布情况,结果如图8,左边为DC-T情况,右边为PC-T情况,注意各个图的横纵坐标尺度都有所不同。
图表 8-模块的TNS分布
从上面TNS分布图来看,DC-T和PC-T下TNS分布情况并不一致,部分模块相差甚至比较大。因此,在我们的实验中,我们认为DC-T和PC在TNS分布上不具备相符性。
从前面的结果看来,DC-T模式下的时序结果显然比PC布局后结果悲观得多,对于我们的设计来说不甚理想。是否由于DC-T对物理约束处理得不合适导致时序变差?我们能否通过调整物理约束来缩小DC-T和PC-T的差距?首先,我们尝试移除物理约束中对RAM块具体位置的定义,由DC-T自己摆放,但是发现DC-T在处理如模块3和模块4这样含较多macro的模块时效果很不理想,远不如我们根据以往经验来手工指定。鉴于上面几个模块的很多关键路径还是集中在边界上,我们把重点放在对端口的物理约束的调整上,尝试去除DC-T物理约束中端口具体位置的定义,但仍在PC中指明端口具体位置,得到的结果见图9:
图表 9-实验2的时序面积
与原来的结果相比较,去除端口位置定义的DC-T结果显然更贴合PC的结果。就时序方面而言,模块1差异为14%,模块2差异为6%,模块3差异为16%,模块4差异为19%。此外PC-T的结果在时序上各个模块有好有坏,总体来说相差不多,而多数模块面积稍小一些。由此可见物理约束中端口位置的指定对DC-T模式的结果影响颇大,而放松物理约束中对端口位置的定义也是可行的,因为模块间端口位置是可以调整的,但实际上由于模块间交互的需要,我们至少需要指明端口在模块的哪一侧,可以通过set_port_side命令来给出端口相对方位的信息,再次调整物理约束后得到的实验结果如图10所示:
图表 10-实验3的时序面积
观察图表结果,各个模块呈现出不一样的变化趋势。模块1的DC-T时序变差,而模块2和模块3时序基本不变,模块4的时序反而好了很多,这与各个模块自身特点有关。而从面积方面考虑,各个模块对应的PC-T面积都有所增长,除模块4外的其它模块都比PC-N的结果好。
最后,为了便于直观观察物理约束修改之前和之后的结果,我们整理了修改物理约束前后的数据比较,包括DC与PC时序面积方面一致性的比较,以及各实验PC结果的比较,如图表11和图表12所示。其中DC-T表示未修改物理约束的DC-T流程结果,DC-NP表示去除物理约束中端口位置定义的DC-T流程结果,DC-PS表示仅用set_pin_side来设置端口方位的DC-T流程结果,而DC-N则表示zero WLM流程结果。同理标识PC-T、PC-NP、PC-PS以及PC-N。
图表 11-修改物理约束后DC 数据比较
图表 12-修改物理约束后PC数据比较
从图表11中我们可以看到物理约束的设置对结果影响较大,变化趋势随模块特性而定。例如模块1的关键路径集中在边界上,不指定端口位置有利于缓解边界路径紧张的情况,从DC-T的24.3%差异到DC-NP的13.9%差异也证明了这点。但也有反常的情况出现,还是拿模块1为例,从DC-T的24.3%到DC-PS的29.9%的情况让人费解,我们也实验过另一个与模块1特性相同的模块5,发现模块5的变化趋势与我们的设想相符,从DC-T的26.7%到DC-NP的6.6%再到DC-PS的3.9%。所以只能将模块1的反常现象归结到DC-T对set_port_side的处理问题上,或许是由于模块1端口的复杂性导致这个特例的出现。
再来观察图表12中各实验PC数据结果。首先对比DC topographical流程与zero WLM流程的结果,我们发现,无论从WNS、TNS还是面积上来看,除了模块4以外,其它模块的DC topographical流程都比zero WLM流程结果要好,间接说明了DC topographical流程下综合得到的网表质量好于zero WLM流程的网表质量。此外再来观察PC-T、PC-NP和PC-PS结果,相比而言,PC-PS时序结果稍好,但面积较大;PC-NP时序稍差而面积要小;PC-T结果介于两者之间。总而言之,这三种方式各有优劣,需要根据具体情况而定,这也跟模块的特性有关。
五、 结论和看法
我们实验了DC0606提供的topographical流程,并且针对四个典型的模块对比DC-T模式和zero WLM模式的优劣,然后具体分析DC-T中关键路径在PC中的体现,以及PC中关键路径在DC-T中的表现,同时比较DC-T与PC的TNS分布。最后根据设计的具体情况调整DC-T中的物理约束,以期更好地获取DC-T与PC结果的一致性。
我们认为,新版本DC引入的virtual layout based synthesis特性是很有必要的,比较起传统的Wire Load Model方式,它能更好地缩短post-synthesis和post-layout之间的鸿沟,包括时序、面积、功耗等方面。特别对于90纳米及其以下深亚微米工艺的ASIC设计而言,在逻辑综合阶段就考虑到物理约束对设计时序等方面的影响,这一步对解决目前业界普遍关注的时序收敛等问题是极其重要的。
至于是否应该现在就将topographical模式引入设计流程,我们认为这取决于设计人员自身对各方面因素的权衡,需要根据具体的设计而定,甚至有可能需要些许调整来满足自己的特殊需求。在我们的实验过程中,我们发现DC-T能够捕捉到“真正”的关键路径,使得在逻辑综合阶段就能对这些路径进行优化处理,从而获得质量更好的网表。部分模块展示出整体上较好的一致性,如模块2等,但也有部分模块表现出不太一致的地方,如模块3等,这时DC-T把优化力度过多地放在“虚假”的路径上,导致结果不甚理想。无论如何,我们发现DC-T综合优化得到的网表比传统WLM方式得到的网表质量普遍要好,这可以很容易从PC-T和PC-N实验结果中观察对比得出,无论是时序还是面积,基本上都是PC-T的结果更为理想,这就说明了DC-T这种在逻辑综合阶段就考虑物理约束对时序面积等方面影响的模式的好处。
在我们的实验中,我们发现物理约束对DC-T结果影响较大,通过调整端口位置等物理约束,我们试图寻找适合我们设计的方式,这也许能为其它设计人员所借鉴。实验过程中我们认为DC0606版本在处理物理约束上仍有不足,某些模块的DC-T结果与我们的设想以及实际的PC结果有不小出入,希望Synopsys能在后继版本中处理得更好些。
六、 致谢
感谢Synopsys公司在逻辑综合方面持续的努力和进步,使得用户能够在设计不断体会到革新所带来的乐趣。同时也特别感谢Synopsys公司的李昂先生在我们DC-T实验全程所提供的技术支持,以及在本论文写作上的建议,他的热情和认真让我们难忘。
七、 参考文献
1. http://www.solvnet.com
2. Design Compiler User Manual
3. Jan M. Rabaey, Anantha Chandrakasan, and Borivoje Nikolic, Digital Integrated Circuits: A Design Perspective, Second Edition, 2002



