您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > Astro的布局与布线_经验总结
Astro中的布局布线流程和注意事项作者:CC,Zhan版本号日期备注0.52005-4-10基本流程和注意事项;主要是H053A流片的经验总结;Astro中的布局布线流程Asro是功能强大的布局布线工具,其基本流程如下:1、读入网表,跟foundry提供的标准单元库和Pad库以及宏模块库进行映射;2、整体布局,规定了芯片的大致面积和管脚位置以及宏单元位置等粗略的信息;3、读入时序约束文件,设置好timingsetup菜单,为后面进行时序驱动的布局布线做准备;4、详细布局,力求使后面布线能顺利满足布线布通率100%的要求和时序的要求;5、时钟树综合,为了降低clockskew而产生由许多buffer单元组成的“时钟树”;6、布线,先对电源线和时钟信号布线,然后对信号线布线,目标是最大程度地满足时序;7、为满足designrule从而foundry能成功制造出该芯片而做的修补工作,如填充一些dummy等。这七大步骤是基本的流程,其中每大步骤里面包含很多小的步骤,并根据各个不同的芯片特点而有很多的变化。各大步骤的流程依次如下:该流程如下:1、创建库,库的名称最好就是前端输入的网表文件的名称,如H053A,需要提供技术文件,如smic18_6lm.tf,注意把大小写设置为敏感;命令是cmCreateLib2、添加参考库,主要包括foundry提供的(也可能是第三家公司帮忙foundry做的库,如Artisan的库)标准单元库和IO库,以及前端定制的宏单元库,如cache,RAM,ROM,PLL等;添加完毕之后显示参考库以确认;命令是cmRefLib和cmShowRefLib3、读入前端网表,注意拿到网表后往里面手动添加电源PAD和CORNER单元,读入的应该是经过这步添加的网表;命令是auVerilogIn4、展开网表,因为一般读入的是层次化的网表,需要flatten;命令是cmCmdExpand5、打开第一步创建的库并且新创建一个CELL,名字也最好是跟网表文件名称一致;命令是geOpenLib和geCreateCell6、绑定,就是把展开的网表绑定到刚创建的CELL中,这样,这个CELL就包含了网表中的所有元件;命令是axgBindNetlist7、保存网表的层次化信息到Astro的数据库中;这样布局布线结束后能输出层次化的网表进行后仿。注意,要先initialhierarchypreservation,然后markmoduleinstancespreserved;8、保存CELL,并另存一份备份。命令是(dbSaveCell(geGetEditCell))和geSaveAs该流程如下:1、LoadTDF文件,这一步通常可以这样做:先Setupfloorplan,然后dumpiopins,修改dump出来的tdf文件,把各个PAD放到合适的位置,然后再把这个修改好的文件load进来;命令是axgLoadTDF2、Setupfloorplan,注意设置合适的参数;命令是axgPlanner3、ConnectportstoPG,这一步把网表中元件端口中电源和地部分标志为VDD和VSS,并且所有1和0也分别标志为VDD和VSS,这样以后布线的时候这些就能自动连接到电源和地上;命令是aprPGConnect4、放置宏单元模块;主要是鼠标操作;5、创建core的电源环;命令是axgCreateRectangularRings6、创建core的电源条带,使供电更充分;命令是axgCreateStraps7、把宏单元和PAD的电源和地连接到电源环上或者电源条带上;命令是axgPrerouteInstances8、把floorplan的信息dump出来保存备用;命令是axgDumpFloorPlan9,保存CELL,并另存一份备份。该流程如下:1、Load前端用DC写出的SDC时序约束文件;命令是ataRemoveTC然后ataLoadSDC2、检查该文件是否约束完全,与前端讨论哪些是可以忽略的;命令是astTimingDataCheck3、设置时序面板,此时可以选择比较宽松的约束,如ignoreinterconnect;命令是atTimingSetup4、reporttiming,此时应该是有比较大的余量的,这样后面计算实际延时时才可能满足;命令是astReportTiming5、保存CELL,并另存一份备份。该流程如下:1、如果网表中有扫描链就先抽取扫描链信息然后去除扫描链,等时钟树综合完毕再还原扫描链,这样能避免拥塞;命令是axgScanTrace然后axgScanChainOptim2、设置placement选项,时序驱动时要把timing,以及congestion都选上;命令是astPlaceOptions3、预布局优化,通过优化高扇出点等产生一个种子网表(意思是高扇出点被“打烂”,加进去的buffer象种子一样散落于芯片各处,使得没有过高负载的点);astPrePS4、标准单元放置;astPlaceDesign5、优化标准单元的位置;astPostPS16、保存,备份。流程如下:1、设置时钟综合选项,选上时序;astClockOptions2、时钟树综合;astCTS3、修改时序面板,ignorepropagatedclock和ingoreclockuncertainty互换选择;atTimingSetup4、把扫描链重新连接上;axgScanChainOptim5、优化标准单元放置;astPostPS6、时钟树优化;astCTO7、报时序,此时应该为正,否则继续优化;astReportTiming8、保存,备份。流程如下:1、标准单元电源连接;axgPrerouteStandardCells2、设置布线选项;axgSetRouteOptions3、时钟信号布线;axgRouteGroup4、信号线自动布线,规模较小可以直接AutoRoute,也可以分四步做;axgAutoRoute5、有violation就Search&Repair;axgSearchRepair6、布线后时钟树优化;astPostRouteCTO7、布线优化;astPostRT8、DRC,这要花比较多时间,可以先不做,等到后面版图合并完了用专用的工具做;geNewDRC9、保存,备份。流程如下:1、修天线违规;先Load天线规则,然后axReportAntennaRatio(geGetEditCell)有violation那么就axgSearchRepair,还有violation就axgInsertDiode2、加PADFILLER,组成PAD电源环;axgAddPadFiller3、在Core中填充FILLERCELL;axgAddFillerCell4、在电源环开槽;axgSlotWire5、FillNotch&Gap;命令是geNewFillNG6、填充金属dummy,选2到3倍间距;axgFillWireTrack7、最后的DRC和LVS,如果有违规就要Search&Repair;geNewDRC和geNewLVS8、输出三种文件;auStreamOut、astDumpHierVerilog、ataDumpSDF9、保存。Astro流程注意事项1、目录和文件管理:在主目录下面建立以下几个主要的工作目录1)backend主要用来存放后端人员编写的TDF文件2)frontend存放前端的.v以及.sdc文件3)lib存放referencelibrary,技术文件,以及需要建立的主库4)scripts存放参考脚本文件5)report从Astro倒出的数据放在这里,比如.vg.sdf.spef等文件以及每次时序报告6)work工作目录,从这里启动Astro。存放日志、命令历史、时钟树Buffer等文件,这里记录着Astro工作的轨迹。每次需要重新开始做的时候,可以把这里面自动生成的cmd以及log等各种文件删除7)star为StarRCXT抽取时序参数而建立的工作目录,在这里启动StarRCXT2、TDF文件注意!Astro对TDF有特定的识别方式,后端人员在编写TDF文件时必须符合这个格式要求,否则floorplan时可能得不到符合预期的结果,如正方形变长方形。一般按照order来写,这样比较方便。Astro中的PADorder如下图所示,假设有208个PAD:特别注意CORNER的order,另外每边都要从1到53(或从53到1),不能随意。如果不是紧密排放,那么就按照location来写,这样能控制相邻PAD之间距离,也需要注意CORNER的位置(此时是坐标位置,不是顺序位置)。3、关于时钟信号PAD摆放:一般放在某边的中间位置,如上图中bottom的第25号PAD,这样时钟树能生长的比较正,有利于clockskew的降低。关于电源PAD,要均匀分布,这样能使供电充分;另外电源PAD不要放在每边的开始以及结束处,原因是可能造成不能直连到corering电源环上,影响布线。4、关于电源strap放置。macro单元边上放strap,使该宏模块周围的standardcell由这些strap供电,而不用跨过macro再连到corering上,这能省下macro上层的布线资源给信号线用。可以通过routesetup里面的createrouteguide把noautomaticprerouteonlayerM1,M2,M3,M4,M5,M6全选上。5、电源ring和strap布置完毕,preroute电源(macro,,pad,此时不必给标准单元也连接电源)后,要进行verifyPGconnectivity!!!确保以后做的事情不是在浪费时间。6、在做placement时,如果可利用面积比较大,(core的使用率不是特别大),推荐在strap下面不要放置标准单元;在strap下面不放标准单元的方法:先在placecommonoptions里选择nostandardcellsunderprerouteofM1-M6;然后再axgPlaceDesign。7、时钟树综合结束,开始布线,第一步是连接标准单元的电源和地,之前其他的大步骤中都不需要连接标准单元的电源线和地线(这和synopsys教程不同,这样能节省更多时间)连接结束后同样要进行verifyPGconnectivity!8、布局布线完毕,timingreport没有问题之后,可以提取hierarchynetlist和SDF以及SPEF文件给前端人员做静态仿真(formality以及PrimeTime);DFM结束之后再报timing和做DRC,之后再次提取这些文件做后仿,此时包含了dummy元素的影响,最接近实际。一般比较大的case不做动态仿真,因为比较消耗时间。9、FillWireTrack时,不要选择self,多一个FILLVIEW比较好,只是注意后面用StarRCXT抽取参数时,cmd文件要保证抽取的参数包含了FILL的寄生参数影响;以及在倒gds文件时把FILL选上。选择2到3倍间距,这样既能保证金属密度,又不容易有minispacing错误10、前端网表更新之后,要重新开始整个流程:把Astro退出,删除主库,删除.cmd以及.log文件,然后再次建库。11、为了验证前端网表是不是有物理错误,可以先不选择TimingDriven,而仅仅布局布线,确定无误了,再从TimingSetup这步开始TimingDriven的布局布线流程。12、关于时序面板的设置。这个是时序驱动的布局布线中非常重要而又容易忽略的。CTS之前设置如下图所示:此时IgnoreClockUncertainty不能选择,应该采用由SDC文件设置的Uncertainty。CTS结束之后面板设置改变为如下:此时不能IgnorePropagatedClock;时钟树综合完了ClockUncertainty就确定了,所以IgnoreClockUncertainty不能选上。时序面板中的Model选项卡在布线前后也需要改变,
本文标题:Astro的布局与布线_经验总结
链接地址:https://www.777doc.com/doc-6204053 .html