开始准备往后的秋招,计划将数字IC后端的相关知识做一个系统学习,并将数字IC后端的相关知识内容做一个总结、整理。慢慢积累,争取每天学习一个知识点。
基本概念与专业术语
在学习过程中,经常看到许多专业术语,并且在实际工作过程中工程师也会将一些专业术语口头化,如果不提前了解相应的专业术语,那么在实际工作过程中需要较大时间去反应这些专业术语。所以在学习之前先将相应的专业术语以及一些基本概念做一个整理。整理过程中难免出现错误,希望各位大佬可以帮忙指出,我会及时修改。
init阶段
Netlist:网表,是一种用于描述电路元件相互之间连接关系的文件类型。通常就是.v文件。网表分为寄存器传输型网表(Register-transfer Level)与门级网表(Gate Level)。RTL代码到门级网表之间的转换过程称为综合。常用的综合工具C家的Genus,以及S家的Design Compiler。综合就是把行为级的RTL代码在特定的工艺、面积、时序等约束下转换成对应的门级网表。
SDC:全称是Synopsys Design Constraints Format,由Synopsys公司最早提出的一种约束文件格式。主要用于指定design内部的Timing关系,约束Power消耗和Area大小。其中最为关键的就是为设计提供时序约束。具体的约束会在后续的学习中进行记录。
Tech file/Tech lef:物理设计规则,它是被用来指导工具按照design rule来完成布线。这个design rule是foundary代工厂加工制作的物理规则,比如metal之间的间距要求,metal的最小线宽等规则。innovus中常用的是Tech lef文件。
Lib:liberty interchange format,主要是描述工艺库中cell的时序和功耗信息的文件(可读的)。
db:其中的数据作用与lib库中的相同,db主要用于给工具使用(不可读的)。
Lef:Library exchange format,描述std cell的物理信息,包括形状,尺寸,出pin的位置及金属层,不可布线区域OBS等。不同工艺下std cell的相关信息都是不同的,出pin的层数也会有所差异。它是用来告诉工具当前std cell的形状,出pin位置以及std cell内部的走线(表现为OBS)。
GDSII:GDSII(Grahpical Data System II)是一种广泛应用于半导体设计领域的标准文件格式,它是EDA行业用于存储集成电路版图信息的格式之一。在设计最终完成时有PR工具导出交给制造厂制造芯片的文件,GDSII文件结构是理解和操作GDSII文件的基础,它影响了设计数据的组织和半导体制造过程中的数据交换。GDSII文件包含了一系列的数据结构,包括层、单元、实例、数据记录、属性和坐标系统等。
UPF: Unfied Power Format, 低功耗约束文件,描述低功耗设计实现需求,比如定义power domain,voltage domain以及各个低功耗应用场景。类似SDC文件一样,UPF文件需要单独编写,在综合阶段作为输入文件丢给Design compiler。在综合完成之后,DC会吐出一个UPF文件给PR工具,这样就可以在PR阶段就可以看到level shift,isolation cell,retention cell,power switch cell等。其实与CPF的作用是相同的。
CPF: Common Power Format,低功耗设计文件,描述低功耗设计实现需求,比如定义power domain,voltage domain以及各个低功耗应用场景。其实与UPF的作用是相同的。
def:Design Exchange Format,设计交换格式DEF(Design Exchange Format)文件是由Cadence公司开发用于描述电路物理设计信息的一种文件格式,它不仅包含电路的连接关系而且还描述了电路布局布线后cell和互连线的具体物理信息。通常由工程师在后端工具导出。
MMMC:Multi mode multi corner,多种工作模式、多种工艺角组合下进行的一种时序分析模式。目的是为了保证芯片在一些极端的环境下也可以保持稳定工作。
PVT工艺角(Process Corner):P指的是Process,V指的是Voltage,T是temperature。Process比如有SS,FF。管子在不同电压,不同温度和不同的Process下速度是不一样的。
Floorplan阶段
Floorplan: 指后端的版图布局规划,它主要包括定义芯片尺寸大小,Macro的位置摆放以及IO Port的摆放。
Physical Cell(Physical Only Cell): 它是指那些没有逻辑功能的cell。这类cell主要有ENDCAP Cell,Tapcell,DECAP Cell和后续chip finsh阶段使用到的Filler Cell。
ENDCAP CELL: Endcap Cell也称为Boundary cells,一般放置在macro的两端、row的两端和std cell core的上下边界。在28 nm以及更小尺寸的工艺中,为了保证栅以及氧化层的一致性,需要在标准单元Row两端放置EndCAP。它相当于一种Dummy管子,用来保证两边的标准单元左右环境的一致性。避免在光刻时,由于最两端标准单元左右环境的不一致导致其性能有所差异。
Std Cell: Standard Cell标准单元,它是foundary代工厂提供library中的基本功能cell,比如BUF,INVERTER都是标准单元cell。Std cell具有简单的功能、相对较小的面积和较短的设计周期,适用于芯片设计中一些基本电路的设计。现在大部分的芯片设计都是基于foundary提供的library的Std cell进行设计。
Tap Cell: 加tapcell的目的是防止latch up,它实际上就是一个阱连接和衬底连接。
Macro:是一种由逻辑单元和物理单元组成的封装单元。它可以看作是一个可重复使用的功能单元,包括多个逻辑电路单元的封装,其功能一般比较复杂,比如存储器、算术运算单元等。Macro一般包含Memory,第三方IP和我们自己做的子模块。在Innovus中Macro和Block是同一个概念。
Site:代表最基本的布局单元。site一般情况是最小standard cell的大小。类似于cell的最小尺寸。通常定义在 lef文件中。
Row: 和site有关的一个概念,row是有N个site排列组成,在place阶段std cell是摆放在row上的。
Pad: PAD是加在IO Cell上的一个PAD头,封装可以通过和这个PAD头进行连线,把芯片中的IO Pin拉到封装和PCB硬件上,可以在外部观测这个IO的信号值。
IO Pin/Port : 在芯片级IO Pin就是IO的PAD pin。在模块级的设计对应的叫法是IO port。
IO Cell:IO Cell如下图中摆放在芯片四周的cell,它包含core电压的逻辑和IO电压的逻辑,即pre-driver和post-driver两大部分。pre-driver是直接和我们芯片的core逻辑进行交互的。
Die Area(Die Box): Die也叫Chip,Die Area是指芯片的大小或芯片区域。
Core Area(Core Box): Core区域为标准单元摆放的区域,如下图的绿色区域。
Core to Die:core区域边缘距离die区域边缘的距离,通常在block级别需要在上下留出一定间距,方便top整合。
Placement Blockage: cell摆放阻挡层。它是用来引导工具做placement的一种物理约束或手段,目的是希望工具按照我们的要求来做标准单元的摆放。
它主要有三种类型,分别是hard placement blockage,soft placement blockage和partial placement blockage。hard blockage所在的位置工具是无法摆放任何标准单元的,soft blockage所在位置只能摆放buffer和inverter,partial blockage所在位置可以摆放任何cell,但是工具可以根据我们设置的摆放密度进行摆放,比如某个区域摆放太多标准单元可能会导致绕线问题,但近摆放buffer和inverter又浪费面积,那我们就可以设置一个可以摆放cell的比例来控制这区域的density密度来缓解潜在的绕线问题。
Halo:它和hard placement blockage功效是一致的。当我们给memory添加Halo时,随着memory的移动,这个Halo也会随着移动。而blockage则没有这个特性。
Routing Blockage: 绕线阻挡层。它是用来引导工作做routing绕线的一种物理约束或手段,目的是希望工具按照我们的要求来做routing。
box:box可以指定的区域定义有许多,它可以指定一个Inst的四周四点,也可以是一个macro的四周四点,可以得出最终的四点坐标。
dont_use_list:在实际项目中需要从设计一开始就针对一些特定类型的cell设置dontuse属性,避免一些特定的cell在不必要的阶段使用,进而去避免一些错误的发生。例如*D20BWP*与*D0BWP*这样驱动能力特别大和特别小的cell,驱动特别大容易造成电迁移现象,驱动特别小的cell的优化能力有限,并且在不同工艺下的时序偏差特备大,进而在设计过程中就直接选择将这些类型的cell禁用。
Powerplan阶段
Powerplan:指电源网络规划,它的目的是确保设计中所有cell和device器件都能获取到足够的供电支持。
power domain:多电压技术是现在低功耗技术的主要方向。现在的很多低功耗技术就是在满足芯片性能的前提下,尽可能的降低芯片的工作电压VDD。低功耗是芯片的一个很重要的设计指标,为了达到更低的功耗通常会将一颗芯片的所有逻辑电路分割成多个不同的电源域,每一个电源域独立开关。所以,当某个电源域不需要工作的时候,可以被关掉,从而降低功耗。另外不同的电源域可以使用不同的供电电压,从而更低的电压会带来更低的功耗。
Power Ring: 电源环,如下图中从Power IO Cell想要把电从IO供电到core区域的标准单元,memory和ip,需要通过power ring来过渡下。
Power Stripe: 电源条带,由一段段的Metal,按照一定的间距组成。
Power Mesh:这个一般是指core区域的电源网络,它是由垂直方向和水平方向的Power Stripe交叉打孔形成一个横纵交错的电源网络。
Power Rail /Follow Pin :电源轨道。有了这个Power rail后标准单元只要摆放到row上,这样标准单元的PG pin就可以和这个Power Rail完全贴在一起。这步是通过sroute来实现的。
IR Drop:电压降,它是指电源网络的压降(I为电流的缩写,R为电阻的缩写,电压U=I*R)
Power Switch Cell:电源开关单元,常用于电源域内部以关断或打开电源域进行供电。
level shift cell:电压/电平转换器,常用于有不同电压的电源域接口。
Isolation cell:隔离单元,常用于关断电源域到常开电源域的接口。
State Retention cell:保留单元,常用于关断电源域内,便于保存电源域关断之后保存关键信号。
Always on cell:可以理解成一种常开cell,它的供电来自于不会关断的电源域,但是这个类型的cell可以被摆放在被关断的电源域中。
Place阶段
density:又称Utilization,一个固定区域内leaf cell 面积跟可用总面积的比例,但是在计算过程中,leaf cell 的面积会受到多种因素的影响,所以需要根据具体的情况进行分析,通常都是依据工具的报告作为参考。
Routing Track: 它是指金属走线的通道。工艺库中会指定好每层金属的track,它有默认方向的走线方向,比如M2的优先走线为水平方向,那么工具在走M2 routing的时候就会优先走水平方向。因此,对于一个给定大小的设计,绕线资源是固定的,即每层金属的绕线track都是定好的。
Congestion: 从字面意思看就是拥塞,它是用来表征设计是否可以绕通。当我们说设计中存在较大congestion,往往就是指当前设计绕线大概率绕不通的情况,可以理解为一个区域内实际的走线数量超过了track的数量。
Overflow:它是用来描述设计的congestion情况的。Overflow = Demand -Capacity。这个Overflow值工具会分成垂直方向和水平方向的Overflow,一般Overflow在1.5%内大概率是可以绕通。这个Overflow值一般可以在每个阶段的Log中报出。
dont_touch:希望工具在进行优化的过程中不要动相应的object,其中的object可以是相应的inst也可以是相应的net。
Fixed:设计Fixed状态之后的Inst是不可以被移动和size的,但是不能进行优化时,是可以将这个属性下的cell进行VT上的改变,例如从LVT改到HVT。
HVT:High Voltage Threshold,阈值电压高,但是功耗低,速度慢。
LVT:Low Voltage Threshold,阈值电压低,但是功耗高,速度快。
SVT/RVT:Standard/Regular Voltage Threshold。性能介于LVT与HVT之间。
ULVT:Ultra Low Voltage Threshold,相对于LVT而言,速度更快,一般在更为先进的工艺节点下使用。
Scan re-order:在DC综合阶段,由于工具并没有所有寄存器的物理位置信息,所以工具默认情况下是按照字母的顺序来做scan chain的插入。大部分情况下,这样的scan chain连接方式并不是最优的。而placement是基于timing和congestion driven的,所以原来两个寄存器(比如DFF2和DFF3)的scan chain是前后级的关系,但是在工具中可能这两个寄存器离的比较远,这样的情况,就会导致寄存器SI端的走线很乱。所以需要设置scan reorder,优化scan chain走线。
guide:guide是innovus所有约束中最为松散的约束,它定义了一个大致区域,用户指示工具在该区域内放置给定模块的单元。当模块移动或放置在core区域内时,guide约束自动分配给该模块。如果没有充分利用该区域,则不属于该guide约束的模块也可以放置在该约束区域。同时如果该约束区域的利用率过高,属于该区域的模块单元也可以被放置到该区域外部。所以guide约束是“可进,可出”。
soft guide:没有固定位置,soft guide约束类似于guide约束。这为同一soft guide下的实例提供了更强的分组。soft guide约束
region:region的约束是一个较为松散的约束,但是它的约束性相比较guide而言更强。定义region,要求模块下的所有单元全部都放置在指定的region区域内。如果该区域有额外的空间,则还可以放置其他模块的单元。region的约束是“可进,不可出”。
fence:最强的约束条件,fence约束区域只允许放置约束下的模块,就算约束区域的利用率不高,也不可放置其他模块下的单元。fence的约束是“不可进,不可出”。
Clock阶段
Cell Delay: 逻辑单元的传播延时。传播延时是指信号从逻辑门的输入端到其输出端所需要的时间。这部分时间也会收到PVT的影响从而发生改变。
ICG: Integrated Clock Gating(集成时钟门控),作为低功耗设计中的一种实现方式,最初的想法十分简单:在芯片实际工作过程中,有些信号或者功能并不需要一直开启,那么就可以在它们不用的时候将其时钟信号关闭。这样一来信号不再翻转,从而能够有效减少动态功耗,这就是Clock Gating。
Net Delay: 互连线Inter-connected延时,它是指逻辑net对应的走线延时。走线越长,net delay越大。Net delay的计算往往是将整个design中的net拆分成若干段来进行的,同时把每段net用某种RC模型来表征。数字后端实现过程中net delay也仅仅是基于特定的delay 模型来进行net delay的估算。PR工具布线后的database需要利用Start-RC 来进行RC 抽取,以SPEF格式的RC文件输出。最后在Timing signoff工具Primetime中读取这个RC spef文件来进行delay的计算。
Spef:standard parasitic exchange format,标准寄生交换格式文件,EDA工具间传递互连线寄生参数的标准媒介文件。
SDF:standard delay format,标准延时文件,用于反标回前端仿真工具进行后仿。
Transition: 它是指信号转换时间,也被称为transition time。是指电压从10%VDD上升到90%VDD所需要的时间,或者是从90%VDD下降到10%VDD所需要的时间,当然也可以是20%VDD上升到80%VDD的时间,具体依据参考timing lib库里面的定义。
WNS:worst negative slack, 最差的slack值,表征芯片的最差性能。
TNS:total negative slack, 所有负的slack值之和,表征芯片的一个性能范围。
OCV:on chip variation,片上工艺偏差。在数字IC后端实现中为了考虑这个工艺上的偏差,我们会给设计的时序预留一定的余量margin,主要通过timing derate的设置让工具看到更大的timing violation,并基于violation来做时序上的优化。
CRPR/CPPR:clock reconvergence pessimism removal / common path pessimism removal,考虑了ocv的时序分析过程中,需要对common path上的悲观度进行剔除。
CRPR/CPPR 也是timing 分析最基本的概念之一。目前主流的两家EDA公司对这个概念的名称不一致。 S 家为CRPR = Clock Reconvergence Pessimism Removal, C 家为 CPPR = Clock Path Pessimism Removal,称呼不一样不重要,但是背后的概念都一样:剔除公共clock path 上的悲观。
Timing Path: 静态时序分析时,工具会把设计拆成四种基本path来做时序分析。无论设计有多复杂,也只有这四种情况。它包含in2reg,reg2reg,reg2out,in2out。
in2reg: 输入端口input到达寄存器的数据输入端 (in2reg path)
reg2reg: 寄存器CLK达到寄存器的数据输入端 (reg2reg path, 内部路径)
reg2out: 寄存器CLK到达输出端口output (reg2out path)
in2out: 输入端口input到达输出端口output (也叫feedthrough path,直通路径)
start point :时序路径上的起点。主要为寄存器/macro的时钟输入引脚与输入端口port。
end point:时序路径上的终点。主要为寄存器/macro的数据输入端与输出端口port。
Clock Path: 时钟路径,它是指时钟树上的clock tree。
Data Path: 数据路径,它包括数据路径上的组合逻辑。
Launch Flop &Capture Flop:Launch Flop就是指发送数据的寄存器,而Capture Flop是指接收(采样捕捉)数据的寄存器。
Launch clock path & Capture clock path:基于上述的概念解释,launch clock path和capture clock path就相对清晰一些。对于一条timing path来说,如果UFF0是launch Flop,UFF1是capture Flop。那么,launch clock path就是从CLKM port到UFF0/CK 的路径。capture clock path就是从CLKM port到UFF1/CK的路径(这里是举同步的例子,寄存器的时钟源头都是CLKM)。那么,自然而然所谓的common clock path就是launch clock path和capture clock path共同的部分。
Setup Time: 静态时序分析中最基本的就是setup和hold时序分析,其检查的是触发器时钟端CK与数据输入端D之间的时序关系。Setup time是指在时钟有效沿之前,数据输入端信号必须保持稳定的最短时间。
Hold time: 它是指在时钟有效沿之后,数据输入端信号必须保持稳定的最短时间。hold time时序检查确保新数据不会在触发器稳定输出初始数据之前过早到达D端而覆盖其初始数据。
Clock Skew:我们称为时钟偏差。由于时钟到每个寄存器的路径延迟不一样,造成信号到达 clock pin 的时间也不一样,我们把时钟信号到达不同寄存器的时间偏差称为clock skew。clock Skew是衡量时钟树性能的重要参数,传统CTS的目的就是把时钟树长度做到最短,clock skew做到最小。
Clock Jitter: 时钟抖动,它是指相对于理想时钟而言,实际时钟随着传播出现时钟的时而超前,时而滞后的情况。等效于时钟的脉冲宽度发生了暂时的变化,也就是Tcycle变大或变小。所以对于setup检查来说,clock uncertainty就需要考虑这个时钟抖动值。
Clock Uncertainty: 时钟的不确定性。它是一个时钟域中的寄存器或域之间的时钟到达之间的差异。时钟不确定性是时钟沿的实际到达时间相对于理想到达时间的偏差。在理想模式下,时钟信号可以同时到达所有时钟引脚。
Clock Insertion Delay(Clock Tree Latency): 时钟树的长度。
Source latency(时钟源插入延时):源头时钟延迟也称为插入延迟。从时钟源到时钟定义点的延迟。这个是指外部时钟源头到当前设计时钟定义点的延时。
Network latency(时钟网络延时): 从时钟定义点(create_clock)到触发器时钟引脚的延迟。所以这个Network latency就是当前设计的整体时钟树长度。
NDR:Non default routing rule, 非默认绕线规则。一般用于设置clock时钟走线的规则,如w2s2,即两倍线宽两倍间距。
Route阶段
pitchTrack:是指走线轨道,和row一样,可以约束走线器的走线方向。
pitch:就是每条track之间的间距。
Gird Point:光刻格点。又被称为制造单元格点,这是最基本的网格单元,任何元件都要对Litho Grid上,不然就无法被制造,它定义在design的technology LEF中,这部分如果出现问题时可以通过DRC检测出来。
Gcell(GRC): 全称global routing cells。工具会把设计拆分成很多个Gcell,基于每个Gcell可以提供的绕线资源和实际需要占用的绕线资源来估算出每个Gcell的绕线是否可以绕通,所以它是工具用来估算Congestion用的。
Crosstalk /niose:串扰/噪声,一般在长走线的过程中有可能会出现信号与信号之间的干扰。由于相邻金属线互相干扰引起耦合电容的增加,从而引起noise或者导致某条net的delay增加或者减小,最终影响timing。
Shield:屏蔽用的金属线,shield net的主要作用是可以屏蔽串扰的影响,它可以加在一些较强的信号线两边,然后接上电源线或者地线(通常都是接地),起到吸收干扰的作用。
天线效应(Antenna Effect):在MOS集成电路生产过程中,一种可潜在影响产品产量和可靠性的效应。在芯片生产过程中,暴露的金属线或者多晶硅(polysilicon)等导体,就象是一根根天线,会收集电荷(如等离子刻蚀产生的带电粒子)导致电位升高。天线越长,收集的电荷也就越多,电压就越高。若这片导体碰巧只接了 MOS 的栅,那么高电压就可能把薄栅氧化层击穿,使电路失效,这种现象我们称之为 “天线效应”。
Latch up栓锁效应:Latch up 是指cmos晶片中, 在电源power VDD和地线GND(VSS)之间由于寄生的PNP和NPN双极性BJT相互影响而产生的一低阻抗通路, 它的存在会使VDD和GND之间产生大电流。
DRC: DRC主要有两种,一种是Physical DRC,它是指违法设计规则的DRC,比如金属间距不够等DRC。还有一种是Timing DRC,它主要是指max transition,max fanout,max capacitiance等时序方面的DRC。
short:简单的理解就是设计中出现线路的短路。可能是因为局部的congestion严重,导致绕线资源紧张出现的short问题。也有可能是因为工艺的原因,导致Inst上的pin shape与PG或者signal产生short。
open:open的原因种类比较多,常见的就是具有电路中具有电气连接但没有物理连接。
Chipfinsh阶段
filler: Filler cell用于填充芯片内部的空白部分。物理版图没有标准单元的区域需要插入 Filler cell,filler cell用于连接芯片内部的扩散层和电源线,使 阱保持连续,满足DRC的检查要求。同时也可以对周围的std cell有一定的保护作用。
dummy metal:它是用于填充金属层的metal。因为制造的时候要求绕线层的金属密度到达一定的范围,并且希望整个chip的metal density相对平均,所以就会在绕线完成之后,在一些相对空的地方插入一些dummy metal。如果没有dummy metal可能导致制造出来的layer不平整,不易于实现后续的CMP。
STA阶段
Star RC:寄生参数提取,RC寄生参数提取主要是提取互联线的RC,抽取结果以spef方式呈现,这个spef文件提供给PT读入反标RC进行timing检查。
annotated:反标检测,主要看pin to pin nets,如果这一行的not annotated非0,则说明反标出现问题。需要检查工具此时读入的spef文件与netlist文件的一致性。
Analysis View:STA 中一个view = 一组具有相同PVT 的std/macro cell + 一个RC corner, 要确定当前View 是否正确。
Phase shift: 如果没有MCP ( multi cycle path ) 设置, 该值即为单个clock 的周期。
CPPR: 在考虑OCV 的STA 分析中,会分别对launch clock path 跟capture clock path 设不同的derate 值,如setup check: launch clock path 会设一个late 的derate, capture clock path 会设一个early 的derate. 而对于同一段path 在实际中不可能会有不同方向的variation 所以为了剔除悲观度,工具会将common path 上的这部分影响减除即CPPR; 对于0 沿check ( 如hold check) 除了Variation, CPPR 还会减除common path 上SI 的影响。这也是为什么common path 越长越好的原因。
Required time: 在此时间内到达时序即能满足 = clock period + capture clock path delay + CPPR - Setup - Uncertainty。
Arrival time: launch data 实际到达时间 = launch clock path delay + data path delay。
slack: 最终检验值,为正该path pass 为负该path 违规 = required time - arrival time。
PV阶段
物理验证阶段,依旧包含DRC验证过程,同时利用物理验证工具确保整体通过。
LVS:Layout Versus Schematic, 是数字后端物理验证中的一个重要步骤,用于检查设计的布局(Layout)是否与网表(Netlist)一致。其核心原理是对比两个网表是否一致。工具会将设计的布局抽取出对应的 SPICE 网表,然后与源网表进行比对。

8947

被折叠的 条评论
为什么被折叠?



