集成电路EDA 课件6 第6章 布局布线EDA-ICC_第1页
集成电路EDA 课件6 第6章 布局布线EDA-ICC_第2页
集成电路EDA 课件6 第6章 布局布线EDA-ICC_第3页
集成电路EDA 课件6 第6章 布局布线EDA-ICC_第4页
集成电路EDA 课件6 第6章 布局布线EDA-ICC_第5页
已阅读5页,还剩181页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

集成电路EDA

自动布局布线EDA学习目标了解自动布局布线EDA工具有哪些了解自动布局布线EDA可以实现哪些功能掌握自动布局布线的设计流程掌握自动布局布线EDA工具的使用方法EDA软件在IC布局布线中的地位

6.1自动布局布线EDA工具简介布局布线是超大规模集成电路电子设计自动化工具的核心引擎之一。布局布线涉及将逻辑电路设计转化为物理布局的过程,对集成电路的时延、可布通性、功耗、可靠性等性能指标有着重大影响。随着芯片集成度不断提高和单芯片上晶体管规模的快速增长,超大规模集成电路布局布线问题的模型及其算法设计面临巨大挑战。‌IC布局布线是集成电路设计过程中的一个关键环节。在IC布局布线中,EDA‌软件占据核心地位,‌负责协调和管理整个设计流程。VLSI布局布线问题的模型及其算法设计面临巨大挑战,‌这一过程需要精确的计算和高效的算法来实现,‌而软件正是这些计算和算法的实现载体。软件在IC布局布线中的地位至关重要,‌它直接影响到集成电路的性能、‌成本以及可靠性。具有创新优化算法的布局布线EDA工具可有效解决超大规模集成电路在拥塞、时序和面积等方面面临的挑战,改善延迟、可布线性、噪声等严重的互连问题,从而显著提升设计效率,满足超大规模复杂设计所需的大容量要求,加速高性能复杂设计的迭代。自动布局布线EDA工具的重要性布局完成=自动布局+自动布线。布局布线应该细分为单元的Placement(布局)和信号线的Route(布线)两个环节。在实际设计中Placement(布局)的质量会影响到Route(布线)结果,因而有时需要花费额外时间做更多调整。自动布局布线EDA工具的简单过程整个自动布局布线的完成依赖EDA软件工具。具体到软件的功能和作用,‌以下是一些关键点:‌1.布局:确定电路中各个元件的位置,‌优化电路布局以减少面积和功耗。‌2.布线:‌在元件之间建立连接,‌确保信号传输的可靠性和效率。‌3.设计规则检查(‌DRC):‌确保设计符合预定的设计规则,‌避免违反物理或电气规则。‌4.时序分析:分析电路的时序性能,‌确保电路在规定的时间内完成操作。‌自动布局布线EDA工具的简单过程6.2数字电路静态时序分析静态时序分析(StaticTimingAnalysis,STA)是对数字电路所有关注的时序路径进行提取,然后计算和预计信号在路径上的延迟是否存在违背时序约束的错误,主要是检查建立时间和保持时间是否满足要求。静态时序分析的特点是不依赖于测试激励,且可以穷举所有路径。在设计过程中需要测量电路在不同工作阶段的延迟。严格的SPICE电路仿真在实用中耗费大量时间。静态时序分析在电路时序快速、准确的测量中扮演了重要角色。静态时序分析工具可以识别的时序故障要比仿真多得多,包括:建立/保持和恢复/移除检查(包括反向建立/保持);最小和最大跳变;时钟脉冲宽度和时钟畸变等。静态时序分析成为了相关设计领域的主要技术方法。Synopsys公司的PrimeTime(简称PT)自推出以来,在静态时序分析工具领域占有垄断地位。一般在DC、ICC/ICCII、PT中都会存在静态时序分析,PT在这一方面最为准确。PT被用来分析大规模、同步、数字ASIC。可以和其他EDA软件非常好的结合在一起使用。6.2数字电路静态时序分析PT工具提供高准确度的延迟分析,以SPICE的精度来计算单元和连线延迟,减少设计冗余并迅速的发现时序问题和减少ECO(EngineeringChangeOrder)修复的时间;提供了分布多场景分析(DMSA),简化了分析和管理这些场景的分析。随着纳米级设计的工艺尺寸的缩小和时钟频率的提升,信号完整性效应如串扰延迟和噪声(或者毛刺)传递能够导致功能失效或者时序失效。PrimeTimeSI是PrimeTime的信号完整性解决方案,在上一代工具中加入准确的串扰延迟、噪声(毛刺)和电压降(IR)延迟分析,来应对90纳米及以下的信号完整性分析。

为了支持14/16nm及以下工艺的设计特点,PrimeTimeADV,支持识别物理信息的ECO,避免ECO对当前版图的影响,加速时序收敛;提供功耗ECO修复,利用正向时序,寻找漏电流功耗降低机会;提供参数化片上变异(POCV)分析方法,尽可能的消除悲观的时序估计,加速时序和ECO收敛。6.2数字电路静态时序分析TimingPathSTA中是基于TimingPath来进行时序分析的。每条TimingPath都有一个Startpoint和一个Endpoint。Startpoint可以是以下两种类型:Input输入端,时序单元的时钟端。Endpoint可以是以下两种类型:Output输出端,时序单元的数据输入端。在STA中有四种类型的timingpath(图9.1)。针对每条timingpath,工具也会分配一个clockgroup。默认情况下,工具会根据endpoint挂的clock来定义对应的group。CLKA

group:Inputport

A

to

UFFA/D.CLKB

group:

UFFA/CK

to

UFFB/D.DEFAULT

group:Inputport

A

tooutputport

Z,

UFFB/CK

tooutputport

Z.6.2数字电路静态时序分析图

6.1STA中TimingPathZDQCKDQCKCLKBCLKAACLKAgroupCLKBgroupDEFAULTgroupDEFAULTgroupUFFAUFFB6.2数字电路静态时序分析为了简化分析,下面的STA中均不考虑net延时。图6.2中,软件从DL2/ck到DL2/dpin来进行建立时间(setup)检查:clock_path1的最大延迟;datapath的最大延迟(data_path_max);clock_path2的最小延迟;建立时间满足的条件是:(clockpath2+clockperiod)-(clockpath1+datapathmax)≥holddqckdckCombinationallogicsetupholdDL1DL2dataCT3CT2CT1CLKdataclock_path2data_path_maxclock_path1data_path_min图6.2ICC中进行静态时序分析6.2数字电路静态时序分析Best-CaseWorst-Case(BC-WC)时序分析模式在BC-WC分析模式中,软件根据两种极端的运行条件来检查设计。—用最差情况(WC)来对所有通路进行setup检查。—用最好情况(BC)来对所有通路进行hold检查。WC对应的PVT(ProcessVoltageTemperature)为SS角、最低电压、最高温度,此时电路中延时最大。BC对应的PVT为FF角、最高电压、最低温度,此时电路中延时最小。在这种情况下做setup分析和hold分析时,芯片上的发送数据路径和接收数据路径同时用两种完全相同的运行条件。明显这是一种不太合理的分析方式。因为在同一时间,不同路径所处的PVT几乎不可能完全相同。但是在65nm工艺尺寸之前,工艺的线性特征比较好,可以用这种简单的方式进行分析。6.2数字电路静态时序分析例子,基于BC-WC模式分析是否存在setup/hold的时序违反。首先在WC下检查是否存在setup违反,如图6.3所示。

dqckdckCombinationallogicsetup0.2DL1DL2dataCT3CT2CT1CLKdata0.650.60.83.82.0(clockpath2+clockperiod)-(clockpath1+datapathmax)≥setup

式中,clockpath1=0.8+0.6=1.4nsdatapathmax=3.8nsclockpath2=0.8+0.65=1.45nssetup=0.2ns

则最小时钟周期只能为1.4+3.8-1.45+0.2=3.95ns。

其中没有用到组合逻辑

中最短路径的

延时时间2.0ns。图6.3在WC下检查是否存在setup违反6.2数字电路静态时序分析在BC下检查是否存在hold违反(参见图6.4)。clockpath1+datapathmin-clockpath2≥hold式中,clockpath1=0.5+0.3=0.8nsdatapathmin=1.6nsclockpath2=0.5+0.35=0.85nshold=0.1ns因为0.8+1.6-0.85-0.1=1.45>0,所以不存在hold违反。图6.4在BC下检查是否存在hold违反6.2数字电路静态时序分析dqckdckCombinationallogicsetup0.1DL1DL2dataCT3CT2CT1CLKdata0.350.30.53.11.62.片上误差(On-ChipVariation,OCV)时序分析模式片上误差的来源:片上由于刻蚀、金属不均匀、晶体管沟道长度等工艺因素的偏差,以及电压降等因素导致的芯片不同位置电压的偏差,此外还有不同位置温度的差异,以及串扰等因素的影响。这些现象在65nm及以下更先进工艺下越发变得明显,不能简单地通过之前的BC-WC模式来进行简单近似,而需要OCV分析模式。在该模式下,对于片上的PVT来说,设计中的每个时序路径都有一个最大和最小的延迟被计算。为了检查setup和hold,当软件根据最长的运行条件来计算一个通路延迟的同时,软件也根据最短的运行条件来计算另一个通路的延迟。这种分析模式可能过于复杂,所以在分析setup、hold时也可以分别采用同一个条件,并在该条件下进行一定的缩放,缩放因子(derate)与延迟相乘,可以让对应的cell、net的延迟人为地扩大或缩小,达到模拟出OCV的情况。设定缩放因子是为了进一步加紧约束,也可以为后面的步骤预留一些裕量。9.2数字电路静态时序分析1)在OCV模式下检查setup考虑PVT可以在整个芯片上变化,如果采用图6.3所示的分析模式,那么得到的最小时钟周期为3.95ns,显然这个数值偏乐观了。OCV模式对到达时间即发送数据路径使用-late选项,使得路径变慢。对要求的时间即接收数据路径使用-early选项,使得路径加快。需要注意的是:考虑缩放因子需要在某个单一条件下,比如说单一BC或者单一WC下,把指定path的延迟再放大或者缩小一些,而不要把BC和WC混在一起,再OCV,那样的结果会过于悲观。6.2数字电路静态时序分析setup检查一般是工作在WCPVT条件下,因此不需要在延时路径上,即发送时钟路径及数据路径上再加时序缩放因子,因为在WC条件下,该路径上的延迟已经是所有条件下最差的了,没有必要再加大延迟,但是WC条件下接收时钟路径上的延时肯定不是最小的,因此需要加快。所以,时序缩放因子timederate只需要这样设置:set_timing_derate-early0.8(加快)set_timing_derate-late1.0(不再增加延迟)按照上述定义可以画出OCV模式下的setup检查规则如图6.5所示(图中x/y分别表示增加缩放因子前后的延时时间,下同)。6.2数字电路静态时序分析可以计算一下设了时序缩放因子以后setupcheck的变化:clockpath1=0.80+0.60=1.40(at100%ofWorstCase)datapath_max=3.80(at100%ofWorstCase)clockpath2=0.64+0.52=1.16(at80%ofWorstCase)setup=0.2最小时钟周期为:1.40+3.80-1.16+0.2=4.24。可以看到:考虑时序缩放因子以后,会降低整个设计的工作频率。图6.5OCV模式下的setup/hold检查6.2数字电路静态时序分析dqckdckCombinationallogicsetup0.2DL1DL2dataCT3CT2CT1CLKdata0.52/0.650.48/0.600.64/0.803.04/3.801.60/2.00从上面可以发现,对于路径最前端那0.64/0.80ns的延迟,在发送时钟路径中没有被缩放,而在接收时钟路径中被时序缩放0.80,显然这是相互矛盾的。这种现象在Cadence的Encounter软件中被称为“悲观时钟收敛”。对于共同路径,可以采用“共同路径悲观去除”(CommonPathPessimismRemoval,CPPR)的方法解决。而在Synopsys的ICC中被称为时钟恢复悲观去除(ClockReconvergencePessimismRemoval,CRPR)。对于上述设计,考虑CRPR之后,我们必须减去一个ClockReconvergence,即CRP=0.80-0.64=0.16,所以最小时钟周期T=4.24-0.16=0.48。6.2数字电路静态时序分析2)在OCV模式下检查hold(见图6.6)对于hold检查,方法与之前类似。不考虑时序缩放因子的情况下:holdslack=(0.5+0.3)+1.6-(0.5+0.35)-0.1=1.45ns>0考虑缩放因子的情况与setup正好相反:在所需时间中的接收数据路径使用-late选项,使路径变慢;在到达时间中的发送数据路径使用-early选项,使路径加快。图6.6OCV模式下的hold检查dqckdckCombinationallogicsetup0.1DL1DL2dataCT3CT2CT1CLKdata0.35/0.420.3/0.360.5/0.63.1/3.721.6/1.926.2数字电路静态时序分析实际上,hold检查一般在BC条件下,因此,发送数据路径不需要进一步减小延时,因为已经是最小延时,但是BC条件下的接收数据路径需要加缩放因子来增加延时。可以使用以下设置:set_timing_derate-early1.0(不再提前)set_timing_derate-late1.2(增加延时)这样添加时序因子后clockPath1=0.5+0.3=0.8ns(at100%ofBestCase)datapathmin=1.6ns(at100%ofBestCase)clockPath2=0.6+0.42=0.81.02ns(at120%ofBestCase)hold=0.1ns同样需要考虑CRP=0.5×(1.2-1.0)=0.1ns(目的是把clockPath1中的0.5也改成0.6)。所以slack=0.8+1.6-1.02-0.1+0.1=1.38ns>0。6.2数字电路静态时序分析6.3后端设计(PhysicalDesign)与EDA图

6.7后端设计工具:ICCompiler(ICC)、ICCII与PT等。后端设计(PhysicalDesign)包括:布局、时钟树综合与布线等。基本流程如图6.7所示。GatelevelnetlistFloorplanPartitionPowerPlanPlacementCTSTimingOptRoutingDFMRCEXTRACTIONTIMINGSIGNOFFPhysicalVerificationIRdrop后端设计需要准备的是IP提供商或Foundry提供的各种库(标准单元库、I/O库、SRAM库、IP库)和工艺文件,包括:门级网表、时序约束文件、物理库文件、IO管脚排列文件、工艺文件与参考库等。布局规划Floorplan要做好(图6.8)。布局的好坏,直接影响到芯片内容的拥塞程度、时序能否保证、进而影响到布线的质量。要确定Pad摆放的位置,Pad必须和Core的数据流向、走线等总体方向趋同,和Core内部的布局规划相对应。讲究Macro的摆放位置,尽量保证时序,考虑Macro的供电和它的引脚输出方向有必要可以选用组(Group)和区域(Region),把一个或几个功能相近的模块放在一起。单元模块摆放顺序要注意摆放不当引起的问题、功耗、噪声与走线不收敛等。6.3后端设计(PhysicalDesign)与EDA单元模块摆放顺序:摆放不当引起的问题。功耗。噪声。走线不收敛。流程步骤:I/O预置。运行快速块放置。丢弃标准单元格放置。手动装配块。块位置问题:功耗问题。噪声问题。路由问题。6.3后端设计(PhysicalDesign)与EDA图6.8布局规划读入TDF文件LoodTDF设置布局SetUpFloorplan确定Macro的位置PlaceBlocks给Macro加上封装区域AddMacroBlockage整体布局Floorplan数据准备后端设计所需要的数据主要是IP提供商或Foundry提供的各种库(标准单元库、I/O库、SRAM库、IP库)和工艺文件。设计网表。设计约束文件。物理库文件。时序库文件。I/O文件。工艺文件。RC模型文件等。6.3后端设计(PhysicalDesign)与EDA在P&R整个流程中,有两个对于设计的PPA起决定性的步骤:Floorplan和CTS最优化。布局要把各模块摆放在合适的位置(图6.9),决定区块(block)中单元格(cell)的位置;Routing在单元格和块之间建立联系;电路提取确定互联的电阻和电容;布局后仿真检查设计是否在附加载荷下仍能正常工作;拥塞图(PlacementCongestionMap)反映布置标准单元的拥挤程度。6.3后端设计(PhysicalDesign)与EDA模拟宏单元ROM(宏单元)RAM(宏单元)其他宏单元PLL各种宏单元标准逻辑单元IO单元图

6.9布局各模块的摆放6.3后端设计(PhysicalDesign)与EDA这个部分存在很多设计上的细节问题,例如:电源网络相邻行的单元是头对头以及脚对脚排放的;电源和地在不同的行是交叉布置的;相邻金属层垂直走线;预布线把一些很重要的线(比如电源/地线)连接好;在Macro周围适当放电源环;把给Core供电的Pad电源接芯片的PowerRing等。如图6.10所示。图

6.10预布线放置电源环RectangularRings放置电源条Straps预布线MacrosPreRouteMacros预布线PadsPreRoutePads预布线网络PreRouteNets电源网络:相邻行的单元是头对头,脚对脚排放的。电源和地在不同的行是交叉布置的。相邻金属层垂直走线。预布线把一些很重要的线(比如电源/地线)连接好。流程:先放整个芯片的PowerRing。然后根据距离放电源条(Straps)。在Macro周围适当放电源环(RectangularRings),再把Macro的电源接到附近的Ring或Straps上。最后把给Core供电的Pad电源接芯片的PowerRing。StandCell的电源线这里不接,因为他们还没有被放置。6.3后端设计(PhysicalDesign)与EDA布局Placement在

P&R整个流程中,有两个对于设计的PPA起决定性的步骤,Floorplan和CTS是最优化。布局,把各模块摆放在合适的位置。Placemnt-决定区块(block)中单元格(cell)的位置。Routing-在单元格和块之间建立联系。电路提取-确定互联的电阻和电容。布局后仿真-检查以查看设计是否在附加载荷下仍能正常工作。6.3后端设计(PhysicalDesign)与EDA拥塞图(PlacementCongestionMap)反映布置标准单元的拥挤程度。布局布线

Place&Route(P&R)工具:ICCompiler简称ICC、ICCII。6.3后端设计(PhysicalDesign)与EDA6.4ICC布局布线流程简介ICC(ICCompiler)后端设计流程如图6.11所示。时序约束文件数据输入门级网表IO管脚排列文件参考库工艺文件TLU+文件布图规划布局时钟综合布线Chipfinishing与可制造性设计导出设计文件图6.11ICC后端设计流程6.4ICC布局布线1.ICCompiler简介ICC(ICCompiler)是门级网表转换成foundry厂可用于掩膜的版图信息,步骤:数据准备(DataSetup):将门极网表、约束文件、元件库、工艺文件、物理库、寄生参数模型等输入ICC;布局规划(DesignPlanning):规定芯片尺寸、形状,确定IO、电源、pad位置等,放置宏单元,放置标准单元,铺设电源网络;布局(Placement):将电路中各个基本单元在芯片中进行布局;时钟树综合(ClockTreeSynthesis):将时钟信号连接至需要驱动的基本单元;布线(Routing):将各个基本单元对应端口进行连接;可造性设计(ChipFinishing):连线拓展、加宽连线,冗余通孔插入,插入填充单元,填充金属等。如图6.12。图

6.12可造性设计SynthesisDatasetupDesignPlanningPlacementGate-levelnetlistClockTreeSynthesisRoutingChipFinishingMulti-Corner/Mode面对规模庞大的电路系统,通过编写运行TCL脚本完成Datasetup步骤。将DC综合后输出的SDC约束文件、门极网表(.v)、代工厂提供的单元库(.db,.sdb)、物理库、工艺文件(.tf)、RC寄生参数模型文件(TLU+)等输入ICC。通过ICC软件完成布局布线后,再次导出门级网表和时序描述文件用于后仿真(见图6.13)。与DC导出的文件的区别是:ICC导出的门级网表文件中的模块和连线与版图是严格对应的。最终会输出可以提供给代工厂进行芯片加工的GDSII格式版图,用于流片。6.4ICC布局布线scMWram32MWioMWStandardcellsMacrocellsPadcellsPhysicalLibraryDirectoriesTechnologyFileabc_6m.tfRCModelFiles(TLU+)PhysicalDataConstraintsFileorca.sdcGate-LevelNetlistorca.vSynthesisDatadbdbdbStandardcellsMacrocellsPadcellsLogic/timingLibraryFilesICCompilerIP图

6.13DateSetup(Placed,Routed&OptimizedLayoutwithClockTrees)6.4ICC布局布线在完成布局布线后还要在ICC中再次导出门级网表和时序描述文件用于后仿真,与DC导出的文件的区别是:ICC导出的门级网表文件中的模块与连线与版图是严格对应的。ICC导出的时序描述文件中的延时由RC参数计算而来。6.5布局布线的基础与ICC实施6.5.1设计准备1.数据准备1)Milkyway参考库2)工艺库文件techfile(.tf文件)。3)寄生参数库(.tlup/.itf)。4)标准单元库.db文件。5)ICC启动环境设置文件,库设置文件(.synopsys_dc.setup)。6)Verilog门级网表文件(.v文件)。7)时序约束文件(.sdc文件)。8)引脚排列文件(.tdf文件)。9)设置一些常用的关联命令。10)定义一些变量,这些变量内容是不同路径下一些文件的名称。macroside2

macro……1289……12891side4

side3

side1

orderorderorder89Coreareacornercornercornercorner00002189IOpadIOpadIOpadIOpadStandcell

四个corner位于芯片的四个角,起到连接四边IOpad的作用。该文件主要用来定义设计中所有I/O及I/OCorner的位置(见图6.14)。该文件可以参照ICC中命令的文件语法进行编写,也可在ICC中导出该文件进行手工修改。引脚排列文件(.tdf文件)图

6.14tdf引脚约束2.参考库的创建在开始后端布局布线之前,需要首先准备好单元库、I/O库、宏单元库(如SRAM)的各种参考库文件,所有文件均为Milkyway格式。启动用户界面(GUI),打开界面后,就会看到ICC的MainWindow主窗口。创建设计库并且打开设计库,所有的设计都是在该设计库中完成的。打开设计库之后,读入网表文件。最好以Verilog格式来导入设计。3.为设计创建library为了在布图时进行时钟树综合,必须唯一化DC中的网表。此操作为设计中多次例化的子模块生成唯一的模块/实体定义。原因:存在于这些模块内的触发器需要连接到时钟源,而把时钟树连接到这些模块需要单独的时钟连线名;物理上需要这些模块有单独的位置。之后将设计网表中例化的单元与参考库中的单元做连接。4.进行uniquify5.设置TLU+文件填写最大与最小TLU+文件,填写工艺文件和ITF文件的映射文件。ReadSDC。如果设计中有多个Corner多个Mode,则需要执行相应的MCMM脚本。6.读入SDC文件,设置芯片工作环境在开始后续的布图规划和布局布线之前,需要检查时序约束是否完善合理。在PT或ICC中运行check_timing命令,检查是否存在没有时钟的寄存器、没有设置输入/输出延迟时间、未约束路径、时钟域路径交叉等问题。另外还可以用report_constraint命令来报告设计中的时序DRC(DesignRuleConstraint)违反,包括setup、hold、maxcapacitance、maxtransition、maxfanout等。7.检查设计的合理性8.ICC读入设计的简单步骤1)首先操作createlibrary。2)openlibrary。找到刚刚创建的library打开。3)opendesign/importdesign。输入Verilog格式的网表文件,.db文件和.ddc都是DC输出的,其中会带有时序约束的信息。4)设置TLU+文件并读入SDC文件。5)设计合理性检查。读入sdc时序约束后

icc_shell>set_zero_interconnect_delay_modetrue设置0互联延时,最理想的情况下报告时序,此时应不存在setup的违规。icc_shell>set_zero_interconnect_delay_modefalse最后保存设计。DataSetup步骤主要的目的是将门极网表(.v)、约束文件(.sdc)、单元库(.db,.sdb)、物理库(physicallib)、寄生参数模型(tlu+)等输入ICC。VLSI通过自动化布局布线的EDA工具形成版图,这个过程通常需要编写运行脚本完成DataSetup步骤。,实例第1步:ICC中进行DataSetup1.DataSetup步骤:TCL脚本举例setDESIGN_NAME"cic_filter"setsearch_path"../lib/logic../lib/milkyway"#设置搜索路径

settarget_library"slow.db"#设置标准元件库

setlink_library"*$target_library"setsymbol_library"smic18.sdb"#设置标准元件图标库

create_mw_libmy_lib1.mw\-technology../lib/milkyway/tech/milkyway/smic18_6lm.tf\-mw_reference_library../lib/smic18–open

#使用工艺文件和物理库创建milkyway

import_designs"../dc/outputs/cic_filter_post_dc.v"-formatverilog-topcic_filter#导入网表文件

uniquify_fp_mw_celcurrent_design$DESIGN_NAMEset_tlu_plus_files\-max_tluplus../lib/milkyway/tech/tluplus/smiclog018_6lm_cell_max.tluplus\-min_tluplus../lib/milkyway/tech/tluplus/smiclog018_6lm_cell_min.tluplus\-tech2itf_map../lib/milkyway/tech/tluplus/smic18_6lm_lef_smic18_6lm_tf.map#导入RC参数文件和.map文件

report_tlu_plus_files>reports/init/report_tlu_plus.rptcheck_tlu_plus_files>reports/init/check_tlu_plus.rptremove_sdcread_sdc../dc/outputs/cic_filter_post_dc.sdc#读取约束文件

set_clock_uncertainty2[all_clocks]remove_propagated_clock[all_clocks]check_timingsave_mw_celstartgui

1.DataSetup步骤:TCL脚本举例(续)等待脚本运行完成,如果出现报错则根据报错信息修改icc_setup.tcl。运行完后进入GUI,并且可以看到各个单元。至此DataSetup步骤完成,可以开始进行布局布线了。1.DataSetup步骤结束6.5.2布图规划FloorplanFloorplan是ICC设计流程中非常重要的一环。Floorplan的好坏直接影响到设计的Timing、布线的布通率、芯片的面积、速度、信号完整性和设计周期。一个好的布图规划,不仅能获得更好的结果质量,也将大大减少后续布局布线及时序收敛所耗费的时间和精力。一般后端设计流程中的反复主要是发生在这一步。可以说,做好布图规划,芯片设计就成功了一半。布局主要包含确定芯片的尺寸与形状、标准单元的排列形式、IO单元的规划、宏单元的放置和Blockages规划、电源与地网络的分布等。读入.def文件,包含了整体的布局信息,这个文件需要另外经过许多操作产生:Floorplan一旦确定,整个芯片的面积就定下来了,并且和整个设计的Timing、布通率密切相关。布图规划的主要目的是为模块、I/O接口、电源焊盘分配相对的位置,并定义时钟和电源分配。对于面积很大的ASIC芯片物理设计,往往采用层次化设计方案,通过顶层设计规划、子模块划分和实现,以及芯片顶层组装来实现。这就是Top-down的设计理念。6.5.2布图规划Floorplan一个比较典型的布图规划可以按照以下步骤进行:在设计中添加PhysicalOnlyCells。本步骤命令:create_cell2.读入IO约束文件。相应的命令为:read_pin_Pad_physicalconstraints3.创建Floorplan。相应的命令为:create_floorplan[-options]创建Floorplan之前,所有的IO、宏单元以及标准单元都是叠放在一起的;创建Floorplan之后,所有的IO都已经摆放正确。6.5.2布图规划Floorplan4.加入PadFiller。相应的命令为:

insert_Pad_filler5.宏单元放置。1)Macro模块尽量摆放在靠近相应输入输出口(IOPad)的位置。2)大的Macro摆放尽量贴近版图的边缘和角落。3)Macro与Macro之间要留有一定空隙给予布线资源。4)合理设置Macro摆放的角度。5)尽量让STDCell的区域完整不要有窄沟道。6.布局障碍的放置。7.添加EndCap。

6.5.2布图规划FloorplanCore中心区域用于放置标准单元,该区域要尽量连续……………………IOCornerIOPadMacro之间留有布线通道用于布线Macro按组排放,根据信号流走向放置所有Macro出Pin方向都朝向Core内部所有Macro都贴边/角放置Macro的摆放可以参照图6.15:图6.15Macro的摆放原则8.添加Nwell和衬底接触单元。9.电源、地(PG)规划:1)创建芯片核心区域的PG环(CorePGRings)。命令:create_rectangular_rings[-options]2)创建MacroPGRings并连接Macro的PGpins。3)将IO的电源、地连接到CorePGRings上。命令:preroute_instances[-options]4)创建PGStrap(电源、地条)。命令:set_fp_rail_constraints-remove_all_layersset_fp_rail_constraints-skip_ring-nets"VDDVSS"5)电源和地轨Rail布线。命令:preroute_standard_cells[-options]6)检查IRDrop。6.5.2布图规划Floorplan10.自动做Floorplan的Placement。快速布局命令:

create_fp_placement-congestion_driven\-timing_driven之后需要报告设计中的拥塞情况,输入命令:report_congestion这里提到了拥塞(Congestion),它对于后端设计至关重要。拥塞代表一个全局布线单元(GlobalRoutingCell,GRC)边界上需要的布线资源与可用布线资源的比值,当所需布线资源大于可用布线资源时,就会存在拥塞。.5.2布图规划Floorplan图6.16画出了一个GRC,

边上的数值即为Damand/Capacity。28/2839/3540/3529/28Numberofnetscrossingtheglobalroutingcell(GRC)edge(left#),versusNumberofavailableroutingtracks(right#)Overflow=40-35=5RoutingtracksGRCgrid图6.16GRC图四种经常出现的拥塞及解决方法:1)Memory间的通道拥塞(ChannelCongestion)。2)局部高密度标准单元引起的拥塞。3)局部高密度PinCell导致的拥塞。4)电源网络PowerMesh太密引起的拥塞。6.5.2布图规划Floorplan,实例第2步:ICC中进行Floorplan在icc_shell中输入start_gui启动GUI,①为标签栏,后续各个步骤都在标签栏中进行调用;②为芯片预览图,每一步操作后会更新该图,可以通过滚轮进行放大缩小。2.在GUI中布局布线2.下面开始DesignPlanning创建Foorplan,并规定corearea到芯片边缘的距离,Floorplan--->CreateFloorplan2.在GUI中布局布线创建完毕后:Preroute--->DerivePowerGroundConnection选择Manuelconnection,依次命名Powernet,Powerpin,Groundnet,Groundpin为VDD和VSS,Createport选择Top3.创建电源和地此步骤完成后芯片预览图不会更新,但在Shell中会打印成功连接电源的信息。3.创建电源和地4.创建电流环

Preroute--->CreateRingsNets中填写VDDVSS,Horizontal为水平布线,层数选择为第五层金属(METAL5),Vertical为垂直布线,层数选择为第六层金属(METAL6),Offset、Width和Space分别设置为5、15、5。

此步完成后芯片预览图变更如图:4.创建电流环

5.创建PowerStraps

Preroute--->CreatePowerStrapsNets填写VDDVSS,层数选择METAL6,Width设置为5,方向选择Vertical,Xstart、Straps、Xincrement分别设置为70、5、30。此步完成后芯片预览图变更如图:5.创建PowerStraps6.填充标准单元Finishing--->InsertStandardCellFillerWithoutmetal中填写FILL64FILL32FILL16FILL8FILL4FILL2FILL1此步完成后芯片预览图变更如下:6.填充标准单元7.连接各个标准单元Preroute--->PrerouteStandardCells,此步结束后可以在预览图中看到很多小的横向电源条。此步完成后芯片预览图变更如图:7.连接各个标准单元Finishing--->RemoveFillers,选择删去StandardCell。8.去除填充此步完成后芯片预览图变更如图:至此电源网络搭建完毕,DesignPlanning结束,开始Placement。8.去除填充6.5.3布局PlacementICC布局(Placement)阶段是将一个个标准单元模块放入中间区域,通过place_opt命令进行自动布局,完成布局和时序优化的设置、完成DFT和功耗优化的设置、完成标准单元的放置(布局主要是布置宏单元)、分析拥塞、时序和功耗、增量放置和优化。布局是拥塞驱动(CongestionDriven)的,标准单元的信号连接最终需要布线连接。在时序驱动的布局过程中,ICC时序分析采用静态时序分析(STA),STA必须要获得单元延时(CellDalay)和线延时(NetDelay)。6.5.3布局Placement1.布局开始之前对设计进行确认和检查:1)检查设计中的所有Macro是否设置为dont_touch属性。icc_shell>set_dont_touch_placement\[all_macro_cells]2)检查PlacementBlockage是否正确添加。3)检查TLU+文件是否设置。icc_shell>check_tlu_plus_files需要三项Passed!如果还未设置:icc_shell>set_tlu_plus_files-max_tluplus\$tlup_max-min_tluplus\$tlup_min-tech2itf_map$tlup_map6.5.3布局Placement4)将所有的Scenario都激活。如果没有MCMM(Multi-cornerMulti-mode),则不用执行该操作。icc_shell>set_active_scenarios-all5)将每个Scenario高扇出网络及时钟网络设置为理想的网络。icc_shell>set_ideal_network\[all_fanout-flat-clock_tree]6)检查绕线的Layer是否设置正确。如果设置不正确,会影响到工具估算CongestionMap的准确性。icc_shell>report_ignored_layers7)设置标准单元摆放的约束。6.5.3布局Placement7)设置标准单元摆放的约束。ICC中创建不同的Scenario的命令为icc_shell>create_scenario$name使用set_scenario_options命令设定该Scenario对setup、hold或者动态静态功耗进行优化。8)DFTSetupDFT全称是DesignForTest。在ICC中,可以用命令icc_shell>check_physical_design-stagepre_place_opt进行检查,若出现Error,说明该设计中进行了扫描链设计,但是没有输入scandef文件。icc_shell>report_scan_chain

可以看到报告中没有任何scan_chain信息,就需要读入scandef文件。工具中的Placement是基于Timing和CongestionDriven的,所以原来两个寄存器(比如图6.17中的DFF2和DFF3)的扫描链是前后级的关系,但是在工具中可能这两个寄存器离的比较远,这样的情况,就会导致寄存器SI端的走线很乱,加重设计的拥塞问题。而经过扫描链的Reorder之后,使得走线变得有序。DFF1DFF2DFF3SISOLogical

NetlistDFF1DFF2DFF3SISODFF1DFF2DFF3SISO图6.17经过扫描链Reorder之后设计的走线示意图6.5.3布局Placement6.5.3布局Placement9)PowerSetup平均功耗分析,分3种情况:(1)假如有波形文件read_vcd/read_saifreport_switching_activityreport_power(2)人为设置翻转率set_switching_activity/set_case_analysis(3)使用默认翻转率set_app_varpower_default_toggle_rate0.5set_app_varpower_default_static_probability0.5set_app_varpower_default_toggle_rate_reference_clockfastest6.5.3布局Placement2.place_opt进行以下四个部分(见图6.18)CoarsePlacementAHFSLogicOptimizationPlacementLegalizationplace_opt图6.18place_opt进行的四个部分命令:icc_shell>place_opt\-area_recovery-congestion\-optimize_dft-powerplace_opt后,标准单元应被正确地摆放在Row上,进行设计后的报告。icc_shell>report_congestion-grc_based-by_layer\-routing_stageglobal-search_repairreport_design-physicalreport_qorreport_powerreport_timingreport_constraint-all_violators分析报告,如果有不满足或者可以更优化的部分,可以在原有基础上做增量优化。此时设计中最好不要存在setup的违反,可以存在MaxCap/Tran、hold、MinCap的违反。保存设计,Placement阶段结束。6.5.3布局Placement,实例第3步:ICC中进行

Placement9.开始进行电路单元布局Placement--->CorePlacementandOptimization此步完成后芯片预览图变更如图:可以看到所有电路单元都被放进Corearea中了,至此Placement结束,开始ClockTreeSynthesis。9.开始进行电路单元布局6.5.4时钟树综合时钟树综合(ClockTreeSynthesis,CTS),就是建立一个时钟网络,使时钟信号能够传递到各个时序器件。1.CTS的目标广义地讲,CTS的目标是建立一个理想的时钟网络。狭义地讲,可以分为两点:保持始终信号完整性(KeepClockSignalIntegrity)和BalanceClockSinks。2.时钟的传播延迟时钟的传播延迟Latency,通常也被称为插入延迟(InsertionDalay)。主要指从Clock源到时序组件Clock输入端的延迟时间。它可以分为两个部分:时钟源插入延迟(SourceLatency)和时钟网络延迟(NetworkLatency)。#时钟源插入延迟sourcelatencyset_clock_latency1.8-source[get_clocksCLK]#时钟网络延迟networklatencyset_clock_latency0.6[get_clocksCLK1]3.时钟的偏斜(Skew),这是CTS中相当重要的一个概念。4.时钟转换时间ClockTransitionTime,也称为ClockSlew。5.时钟不确定性时钟不确定性(ClockUncertainty)定义了Clock信号到时序器件的Clock端可能早到或晚到的时间。在Pre-CTS中,setup的ClockUncertainty=Jitter+ClockTreeSkewhold的ClockUncertainty=ClockTreeSkew在Post-CTS中,setup的ClockUncertainty=Jitterhold的ClockUncertainty=0(或者设置一个较小的值)6.时钟树级数6.5.4时钟树综合3.时钟的偏斜(Skew),这是CTS中相当重要的一个概念。4.时钟转换时间ClockTransitionTime,也称为ClockSlew。5.时钟不确定性时钟不确定性(ClockUncertainty)定义了Clock信号到时序器件的Clock端可能早到或晚到的时间。在Pre-CTS中,setup的ClockUncertainty=Jitter+ClockTreeSkewhold的ClockUncertainty=ClockTreeSkew在Post-CTS中,setup的ClockUncertainty=Jitterhold的ClockUncertainty=0(或者设置一个较小的值)6.时钟树级数6.5.4时钟树综合7.时钟树综合时钟树综合就是指从某个Clock的Root点长到各个Sink点的ClockBuffer/InverterTree。在没有进行时钟树综合之前,时钟树暂未生成,时钟逻辑结构如图6.19左图所示。6.5.4时钟树综合ClockFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFClockFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF图6.19时钟逻辑结构7.时钟树综合一个时钟源端(Root)最终扇出到很多寄存器的时钟端传统CTS就是为了减小Skew(见图6.20)。6.5.4时钟树综合ClockClk1Clk2图6.20时钟偏差要进行时钟树综合,开始最重要的一步就是定义好时钟端,Root和Sink都需要知道,软件根据定义计算延迟(图6.21)。首先定义时钟的Root点,使用create_clock定义时钟的Root点。如果是GeneratedClock(生成时钟)需要使用create_generated_clock定义。6.5.4时钟树综合DQCLKSTOPFFDQCLKFFDQCLKFFSTOPSTOPGATEDCLOCKEndStartClocktreesstartattheir“source”definedbyCreate_clock…Synthesizableclocktreesend(bydefault)onclockpinsofregistersormacros(stoporfloatpins)图6.21时钟端1)不间断引脚:ICC会穿过不间断引脚以跟踪查找真正的时钟树端点。驱动生成时钟的时序单元的时钟引脚是隐式不间断引脚(图6.22)。6.5.4时钟树综合DQFF1CLKDQFF2CLKDQFF3CLKDQFF4CLKDQFF5CLKDQFFDCLKGATED12CLOCKcreate_clockcreate_generated_clockImplicitNonStoppinsInsertiondelaysarecloselymatchedasallstoppinsareoptimizedforskew0.640.650.63Skewwillbebalanced‘globally’,withineachclockdomain,acrossallclock-pinsofbothmasterandgeneratedclock.2)排除引脚Excludepins(Ignorepins)ICC仅在计算和优化设计规则约束(逻辑DRC,即max_cap/max_tran/max_fanout/max_length)中使用Excludepins。icc_shell>set_clock_tree_exceptions\-exclude_pins{listofpins}除了ICC隐式排除引脚外,ICC还支持用户定义(或显式)排除引脚。例如,可以定义一个排除引脚来排除从某些组合逻辑引出的时钟树的所有分支(如图6.23所示),或者排除隐式停止引脚。6.5.4时钟树综合Toexcludeallbranchesoftheclocktreethatfanoutfromthispoint,entericc_shell>set_clock_tree_exceptions–excluds_pins[get_pinsU2/A]ABU2n1CLK图6.23ExcludePins3)停止引脚StopPins(SinkPins)用于平衡延迟的时钟树的端点。在时钟树综合期间,ICC将使用StopPins来计算和优化设计规则约束和时钟树时序(Skew和插入延迟)。StopPins也称为SinkPins,也就是所说的时钟树进行Balance的Sink端。icc_shell>set_clock_tree_exceptions-stop_pins{listofpins}默认时钟汇点是隐式停止引脚。此外,ICC支持用户定义(或显式)停止引脚。ICC为所有停止引脚(隐式和显式)分配零相位延迟,并在延迟平衡期间使用此延迟。6.5.4时钟树综合4)浮动引脚FloatPins具有特殊插入延迟要求的时钟引脚。与停止引脚(StopPins)类似,但在构建时钟树时会考虑该引脚的内部时钟延迟。工具在计算到该FloatPins的插入延时(InsertionDelay)时,将把FloatPin延迟(正或负)添加到计算InsertionDelay中去。如图6.24所示,它是硬宏(HardMacro)的时钟输入管脚,在构建时钟树时需要考虑它。但在将其视为同步管脚之前,需要平衡宏的内部树。最终节点藏在后面。6.5.4时钟树综合DQCLKFFDQCLKFFDQCLKnFFGATEDCLOCKImplicitStoporFloatpinsIPIP_CLKskewandinsertiondelayareoptimizedDQCLKFFImplicitExcludepinsskewandinsertiondelayareignoredCLK_OUTStopPins:CTSoptimizesforDRC

andclocktreetargets(skew,insertiondelay)totheexternalclockpinFloatPins:LikeStoppins,butconsidersinternalclocklatencyExclude(Ignore)Pins:CTSignoresskewandinsertiondelaytargetsCTSfixesclocktreeDRCs图6.24硬宏(HardMacro)的时钟输入管脚4)浮动引脚FloatPinsicc_shell>set_clock_tree_exceptions\-float_pins[get_pinspin_list]\-float_pin_max_delay_fallmax_delay_fall_value\-float_pin_max_delay_risemax_delay_rise_value\-float_pin_min_delay_fallmin_delay_fall_value\-float_pin_min_delay_risemin_delay_rise_value\-float_pin_logic_levellogic_level_value6.5.4时钟树综合4)浮动引脚FloatPins#使用-float_pins,必须至少指定一个浮动引脚延迟选项#Specifyinganegativefloatpinicc_shell>set_clock_tree_exceptions-float_pinsU1/CLK\-float_pin_max_delay_rise-0.5\-float_pin_max_delay_fall-0.5#Specifyingapositivefloatpinicc_shell>set_clock_tree_exceptions-float_pinsU4/CLK\-float_pin_max_delay_rise0.5-float_pin_max_delay_fall0.5#增加引脚InsertionDelay,指定负引脚延迟(NegativeFloatPins

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论