您好,欢迎访问三七文档
物理设计2物理设计是把电路信息转换成foundry厂可用于掩膜的版图信息的过程,它包括数据准备、布局、时钟树综合、布线及DRC、LVS等步骤如右图所示常用的布局布线工具有Synopsys公司的ICCompiler、Astro和Candance公司的SOC-Enconter。参考单元库时序约束文件门级网表工艺文件数据准备布局规划布局时钟树综合布线静态时序分析,后仿真DRC、LVS流片3ICCompiler是synopsys公司继Astro之后推出的另一款P&R工具(芯片设计的物理实施通常被简称为布局布线,placeandroute),本课件中出现的一些图中的Astro工具可以当作ICCompiler来理解。如下页图1所示,输入ICCompiler的有:门级网表、库文件、时序约束。输出ICCompiler的是layout(常用格式是GDSII)。4图15图267库的建立做物理设计首先要建立referencelibraryReferencelibrary包括以下几部分:standcelllibrary、padlibrary、macrocell(或IPlibrary)。Standcell包括inverters、buffers、ands、ors、nands、muxes、flip-flops等Padcell包括信号pad、电源地padMacro即设计中用到的一些宏模块下页以图讲解standcell、padcell、macro8四个conner位于芯片的四个角,起到连接四边IOpad的作用。9布图规划floorplan(布图规划)的主要内容包含了对芯片大小(diesize)的规划、芯片设计输入输出(IO)单元的规划、宏模块的规划、电源网络的设计等floorplan在整个流程中具有十分重要的地位,因为floorplan一旦确定,则整个芯片的面积就定下来了,同时它也与整个设计的timing和布通率(布线能否布通)有着密切的关系。基本上流程中的反复主要是发生在这一步中。如果这一步做得比较好,则后面oncepass的几率就比较高,反之如果回溯到这一步,则花费的时间开销就会很大。floorplan是物理设计中手工程度很大的工作10布图规划通常情况下,一个芯片由corearea和padarea组成11布图规划Padarea由以下几个部分组成:1、Input/Output/InOutpads如右图中Reset2、Powerpadsandconnerpads右图上右上角那个CornerUR为一个cornerpadsConnerpads的作用是连接其两边的Pads(连接衬底以及衬底以上的各个层)VDDVSS为Powerpads,其对外连接供电的封装引脚,对芯片则起到供电的作用,Powerpads可以分为对core供电的pads和对IOpads供电的pads,所有的Pad都是由晶体管以及各层金属构成的,Pad也是一个cell。12布图规划3、PadsfillersPadsfillers为图中Filler所示,其作用为连接两个两邻的pads(从衬底到各层金属的相连)P/Grings所有信号pads、电源地pads、fillers、corners都是有电源地的引脚的,用金属线把这些引脚相连,形成padarea上的一个环,称为P/Grings,如果所有的pads都是无缝排列的,那么pads上的自身的金属已经相互连接成了P/Gring。13布图规划Floorplan阶段在corearea内要确定macro的位置,可以通过飞线显示macro的pins与io或其它macro的pins的连接关系,来帮助确定macro的位置Floorplan要进行预布线,即布电源地网络。概述里面已经讲到从floorplanplacementclocktreesynthesisrouting的流程。有两个地方做了布线的工作即floorplan阶段的电源地网络的布线、routing阶段的信号的详细布线。14布图规划Floorplan请参看PNR/scripts/run_icc_record.tcl中####Floorplan阶段脚本Shell下键入icc_shell-64bit|teelog.1027启动ICC把run_icc_record.tcl中####Floorplan以上部分复制粘贴入icc_shell中即可完成参考库的调用、设计库的创建的工作。由于floorplan阶段手工活较多,故在此叙述也较详细,并辅以视频。15布图规划先从脚本中把derive_pg_connection–power_netVDD–power_pinVDD–ground_netVSS–ground_pinVSS和derive_pg_connection–power_netVDD–ground_netVSS–tie粘入icc_shell,这两句告诉工具电源地的连接信息。再定义pad的摆放read_io_constraints../inputs/io.tdf,io.tdf文件中定义了pad的摆放。再按视频中方式initializefloorplan16布图规划再摆放macro的位置,本实验中为两个sram,摆放的过程中利用到了飞线。接下来分别创建电源地网络,包括以下:Corering:core的四周,用以给core供电Strap:实验中可以看到是core内部的几条竖直的VDDVSS电源线。其作用是把corering连接至core内Macroring:macro的周围,用以给macro供电Rail:用以给标准单元供电,在本实验中,你可以通过放大corearea处,观察到众多相对于strap要细很多的水平且平行的rail。17实验中的电源地网络18布局在floorplan结束后,芯片的大小,电源网络,macro的位置已经确定了,接下来的工作是标准单元的布局工作。布局工作是时序驱动(timingdriven)的,即布局出来的结果要满足时序的要求。ICC时序分析采用静态时序分析(STA),STA必须要获得单元延时(celldelay)和线延时(netdelay)19布局ICC会计算每个单元的延时和每条线的延时单元的延时信息由foundry提供的单元库文件提供为了计算线延时,ICC必需知道每条线的寄生电阻和寄生电容20布局在布局阶段,实际的金属线是不存在的,故需要有一种估计的方法估计线延时。在由RTL代码到门级网表的综合过程中,也需要用到STA,综合阶段对延时的估计基于WLM(WireLoadModel)。根据fanout估计R和C,这显然和最终的版图的实际结果有很大出入。21布局布局过程中,每个单元是有自己的物理位置的,我们就不再采用WLM去估计延时了,我们采用虚拟布线(virtualrouting)技术去估计延时。22布局综合阶段的时钟信号和高扇出信号被定义成理想的和don’t_touch(综合工具不对其进行插buffer的操作)的布局阶段对高扇出(如reset、set、enable等)要进行高扇出综合(HFS)。ICC布局阶段的一个命令place_opt内嵌了自动高扇出综合(AutomaticHighFanoutSynthesis)时钟树的处理是在place之后,CTS(ClockTreeSynthesis)阶段进行时钟树综合的在布局阶段我们需要模拟时钟树的影响23利用理想的时钟网络显然过于乐观,为了进一步接近实际的时钟,skew,latency,transition的影响应当被模拟进来2425布局实际的时钟树网络无法保证时钟源点到该时钟域内所有寄存器的clk端的延时是绝对相等的,时钟源点到不同寄存器的clk端的延时之差称之为skew(偏斜),我们用set_clock_uncertainty这个命令去模拟skew的影响。如set_clock_uncertainty0.3,单位是ns(取决.tf工艺文件里面所设单位)时钟域内寄存器的clk端可以称之为汇点(sink),时钟源点(source)到汇点的延时称为latency,我们可以用set_clock_latency命令去模拟源点到汇点的延时,如:set_clock_latency1实际的时钟信号跳变时间是不可能为零的,所以我们可以用set_clock_transition去模拟这个跳变时间如set_clock_transition0.126布局Corearea内标准单元并不是可以随意摆放的,所有的标准单元被设计成等高不等宽的,这样所有的标准单元可以被放入同样的placementrow里面,如图所示27TimingdrivenplacementPlacement是时序驱动的,关键路径上单元会被放得近一些,placement是时序驱动的同时,也是拥塞驱动(congestiondriven)的,标准单元的信号连接最终需要布线的,如果一个区域内布线要求大于布线资源的话,就导致了拥塞,显然标准单元过密集得摆放在一起就容易导致拥塞,timing和congestion就变成了一对折衷的因素了。28在macro周围我们会打上placementblockage,工具不会在placementblockage区域内摆放标准单元,macro处pin处需要较多的布线资源,如果macro周围较近区域被放置了标准单元,就可能导致拥塞的产生。故需要在macro周围打上blockage,在实验视频中可以看到这一步。布局29时钟树综合(CTS)在大规模集成电路中,大部分时序元件的数据传输是由时钟同步控制的时钟频率决定了数据处理和传输的速度,时钟频率是电路性能的最主要的标志。在集成电路进入深亚微米阶段,决定时钟频率的主要因素有两个,一是组合逻辑部分的最长电路延时,二是同步元件内的时钟偏斜(clockskew),随着晶体管尺寸的减小,组合逻辑电路的开关速度不断提高,时钟偏斜成为影响电路性能的制约因素。时钟树综合的主要目的是减小时钟偏斜。以一个时钟域为例,一个时钟源点(source)最终要扇出到很多寄存器的时钟端(sink),从时钟源扇出很大,负载很大,时钟源是无法驱动后面如此之多的负载的。这样就需要一个时钟树结构,通过一级一级的buffer去驱动最终的叶子结点(寄存器)。30在未进行时钟树综合之前,时钟树未生成,时钟结构逻辑上如上图所示,一个时钟源端最终扇出到很多寄存器的时钟端。31上图是时钟树综合好之后的结果,上图中有三级buffer构成了一个时钟树。32在sdc文件中用create_clock命令创建时钟,同时定义了时钟源点如:Create_clock[get_pinsU_TOP_PAD/Pad_inout_PF5_CAM_PCLK/C]–nameCPCK-period10–waveform{05}这条命令在U_TOP_PAD/Pad_inout_PF5_CAM_PCLK/C这个pin处创建了时钟,这个pin就是名为CPCK的时钟的时钟源点时钟树综合(CTS)33由于时钟树的重要性,工具采用不同于一般布线规则的时钟树自己的布线规则时钟树综合(CTS)34首先定义nondefaultroutingrule再指定CTS使用定义的my_route_rule-layer_list定义了CTS使用哪几层金属走线时钟树综合(CTS)35ICC在placement阶段提供了一个命令place_opt,请参看run_icc_record.tcl,可以看出placement阶段脚本结构是先进行一系列的设置,再通过place_opt命令让工具根据设计者的设置约束等完成布局工作。ICC在时钟树综合阶段也提供了一个命令clock_opt,clock_opt命令根据设计者的设置和约束自动完成时钟树综合的工作。布线阶段也有一个类似的命令:route_opt整个流程中,除了floorplan阶段需要较多的手工活之外,placement、CTS、routing阶段可以说就是设计者通过修改脚本和约束,然
本文标题:物理设计(ICC)
链接地址:https://www.777doc.com/doc-6456673 .html