ic后端面试汇总 您所在的位置:网站首页 lef文件的作用 ic后端面试汇总

ic后端面试汇总

2023-11-12 18:42| 来源: 网络整理| 查看: 265

请说一下memory的摆放规则(floorplan)

尽量摆放在四周,和外界数据交互

Place之后有时序违规(timing violation),应该怎么处理?

CTS的目的是什么?怎么样是一个合格的clock tree?

CTS的目的就是减小时钟偏差(clock skew)

除了PPA(performance、power、area)之外,时钟树还应该robust。即所谓设计中的时钟树在任意设计需求的corner下都能满足时序。总之,CTS的结果应为一个满足时钟树特性定义的高质量时钟树网络

为什么时钟树需要平衡?不平衡的时钟树有什么缺点?

对于快速设计。时钟树的skew和latency影响时序收敛、功耗和面积。平衡可以使得timing收敛简单一点;

对于慢速设计,时钟树的skew和latency对时序收敛的影响降低。但是对于skew大的时钟树,工具修复时序会增加更多的面积和功耗。创造一个skew小的时钟树,虽然看似在时钟树上多用了buffer,但是会减少在修复时序问题时需要的buffer

所以,平衡对于时序收敛、面积和功耗都是有好处的。

什么是闩锁效应(latch up)?

闩锁效应是由NMOS的有源区、P衬底、N阱、PMOS的有源区构成的n-p-n-p结构产生的,当其中一个三极管正偏时,就会构成正反馈形成闩锁。

避免闩锁的方法就是要减小衬底和N阱的寄生电阻,使寄生的三极管不会处于正偏状态。

请说一下标准单元的延迟与哪些因素有关?

input transition、output load、PVT

请说一下为什么需要对时序器件进行setup,hold检查?

否则会出现亚稳态

解释一下什么是时钟转换时间(clock transition time)?

分为rise和fall transition,一般指信号从10%到90%需要的时间

timing path根据路径,一般可以划分为哪几种?

4种;input到DFF、DFF到DFF、DFF到output、input到output

综合DC主要做了什么事情?说一下具体综合的流程

将RTL变成netlist过程,主要分为3个阶段:

Translation:翻译,主要把描述RTL级的HDL语言

Logic optimization:逻辑优化,就是把路径调整一下,门给改一下等等。

Gate mapping :门级映射,把优化了的统一门级描述

什么是clock skew?如何计算的?

skew主要指时钟到达不同DFF时出现时序偏差,这个偏差叫作skew

create_clock和create_generate_clock有什么区别?

create_clock生成的是master clock,create_generate_clock是由master clock生成的,比如通过一个分频器,不会单独产生一个时钟,连接到master clock。

STA的基本概念,与仿真相比,它的优势是什么?

静态时序分析;优势是:1.100%覆盖率  2.速度快  3.考虑串扰,工艺偏差的影响

STA在什么阶段做,各个阶段的STA都有什么区别?

DC综合 placement单元放置 routing布线 都需要时序分析。

主要区别是CTS之前使用的都是虚拟时钟,设计约束文件SDC定义的时钟(SDC对电路的时序,面积,功耗进行约束)

各个阶段的时序分析model也不一样,比如DC使用的是线负载模型,routing之后就是实际的布线数据。

LEF文件的主要作用,它和GDSII有什么区别?

LEF只描述单元的底层细节,比如端口位置,层定义和通孔定义。只用于布局布线。GDSII拥有单元的全部信息,但由于过大,不利于工具的布局布线。

列举你知道的几种修复setup timing violation的方法,该优先使用哪一种?

调整size,更换阈值电压,修复DRC(transition和load会影响延迟),流水线,useful skew

timing signoff报告主要有哪些内容?

1.setup hold violation

2.DRC检查,input transition,output load

3.corner是否全

4.sdc检查,后仿作为最后检查sdc的过程,比如false path

5.噪声

spef文件里面记录了什么内容?如何得到?

互连线寄生参数,使用starRC

时钟树走线和普通信号线有什么区别?

double width和double space,高层走线

静态功耗的概念,如何降低?请列举一些你知道的方法?

主要是泄露功耗

1.提高阈值电压

2.电源门控

3.体偏置。进而改变阈值电压,如果正向体偏置就会提高性能。

动态功耗主要包含哪些部分,如何降低?请列举一些你知道的方法

包含短路功耗和开关功耗

1.降低电压

2.DVFS

3.多电压域

4.降低负载

5.降低时钟频率

芯片为什么需要采用纵横交错的走线方式?

减少crosstalk

什么是crosstalk? 为什么会产生crosstalk? 会带来什么后果?

串扰。信号线之间的干扰。产生glitch和transition time的变化。transition和delay有关系,同向transition变小,反向transition变大。glitch会产生逻辑错误。

列举一下你知道的修复hold timing violation的方法?

1.单元面积

2.单元尺寸

3.流水线

我们在修复hold violation时,buffer应该加在什么位置?

组合逻辑,DFF间路径

列举几个常见的drc种类?(design rule check。设计规则检查。主要目的是检查layout中所有因违反设计规则而引起潜在断路,短路等其他设计规则违反)

满足良率的同一金属层或者不同金属层的几何尺寸的最小值的集合,就是设计规则检查。

版图和lef文件进行比较(lef由单元lef和技术lef,这边技术lef定义设计规则,单元lef)

请介绍几种修复drc的方法?

1.工具自动修,在DRC违规的地方添加routing guide,做iteration routing

2.工具抓取出DRC违例的地方,删除这些net,做routing eco。

说一下Calibre检查drc的具体流程?

主要输入两个文件。一个是得到的版图GDSII文件和工艺厂商提供的设计规则文件。工具通过标出违反设计规则的位置,进而手工修改违规。

CTS之前是如何计算clock path上的延迟的?

根据sdc中clock的uncertainty(包含skew),CTS之后使用实际的CTS计算skew。

介绍一下CPPR的概念,为什么需要用到CPPR?

共同路径悲观去除。在OCV时需要乘以一个derate系数,共同路径的部分需要移除悲观量。

什么是天线效应(antenna effect)? 说几种你知道的修复方法?

芯片中没有氧化层覆盖的金属或者多晶硅收集游离电荷。

给存在天线效应的金属层接上二极管;跨层走线;插入缓冲器

请列举一下导入后端设计需要哪些文件?

netlist

工艺库(逻辑库db lib 物理库lef)

工艺文件

TLU+

请列举几个你知道的sdc命令,并说出它的用途?

create_clock

create_generated_clock

set_driving

set_load

set_input_delay

set_output_delay

set_case_analysis

set_false_path

set_multicycle_path

set_max_fanout

set_max_transition

set_min_capacitance

set_max_capacitance

修复timing violation时,首先应该关注什么,有哪些需要注意的点?

1.逻辑

2.floorplan

3.时序路径的延迟,cell size,阈值电压,buffer

4.工具层次,group的weight

5.线延迟,插buffer

CTS之前需要修复hold violation么,为什么?

不需要。1.没有实际的CTS 2.很好修,插buffer

在修复hold violation时,delay cell和buffer该优先使用哪一种,各有什么优缺点?

特点:delay cell延迟比较大,buffer驱动能力强

较大的violation使用delay cell。

setup和hold violation该优先修复哪种,为什么?

优先修复setup。hold比较好修。并且setup决定我们的性能

clock latency的概念,什么情况下需要设置?

可分为source latency和network latency。

source latency是这clock 信号来源到芯片的 clock输入端的delay,而network latency是指芯片clokc输入端到 flip-flop clock输入的delay。

一般不需要设置。

1.不同clock source latency不同,考虑时序,需要设置。

2.不同时钟network latency (insert delay cell)不同时,需要考虑时序,也需要设置。

如何判断floorplan摆放质量的好坏?

1.memory要放在边缘,和外界数据交互

2.SRAM地址线对齐

3.有关联的Macro放在一起

电源走线为什么需要使用高层线?

1.高层金属更厚,有更强的EM能力

2.对低层信号线干扰更小

3.不会占用低层的信号线

请说一下OCV的概念,为什么需要用到OCV,什么阶段需要OCV,如何实现?

片上工艺偏差,因为OCV对时序分析造成影响,那么进行时序分析时需要将这些OCV考虑进来。 在STA中,通过对不同的时序路径添加derate来实现对OCV的建模

我们需要在什么阶段做formal验证?

DC,floorplan,routing

DC综合的时候,我们是怎么计算net的delay?

根据线负载模型,由扇出计算出线长,再乘以单位线长上的电阻和电容,计算RC。利用Elmore 模型计算delay。

谈谈整个芯片设计的大概流程?

从架构定义——前端设计——后端设计——生产制造——封装——测试

从后端角度,对于芯片设计的要做哪些检查?

LVS (Layout vs Schematic) 版图与原理图比较,DRC(design rule check )设计规则检查,timing signoff,功耗,功能,性能(频率),面积

clock时钟一般采用哪层金属走线?

较高层的走线,一般是5,6,7;double space和double width

为什么采用double width, double spacing的时钟树走线方式?

EM,fanout较大,电流大。

clock uncertainty主要包含哪些内容?你设置了多少?

CTS之前

setup:clock uncertainty = jitter + skew + margin

hold:clock uncertainty = skew + margin

CTS之后

setup:clock uncertainty = jitter + skew + margin

hold:clock uncertainty = skew + margin

什么是IR drop? 有IR drop问题应该怎么办?

电压降,分为静态和动态。静态是由于连线电阻分压;动态是由于门同时打开,局部电流过大。

有IR drop应该合理设置电源I/O PAD的数量和位置;为电源网络添加去耦电容

什么是LVS?出现LVS violation时应该怎么办?

版图原理图一致性检查,又称电气规则检查。

主要步骤将RTL抽取成spice网表,然后比对。

比对单元数量,单元个数,节点个数等。

说一下检查LVS的具体流程?

版图原理图一致性检查

将版图抽取出spice模型和初始netlist进行对比。

请说一下clock gate cell的结构

时钟前面和一个latch加一个与门,latch主要是消除毛刺

LEC(等价性检查工具)主要检查哪些内容,为什么要做?

以DC后的RTL和netlist为例。读入netlist,RTL和svf判断,根据逻辑锥和svf判断是否存在错误

什么是EM?有EM问题应该怎么办?

电迁移。金属原子移动。

1.减小fanout

2.增加线的width

3.单元驱动能力过强

4.连线过长

综合的约束和后端的约束有什么区别?

综合时,模型粗略,过约SDC,时钟频率调高。

CTS之前没有真实的时钟树,uncertainty加大

PR工具和signoff工具一致性问题,margin也会有区别

画一个4位异步计数器,如何加时序约束?

在每个DFF的Q端做create_generated_clock

为什么clock gating cell里面用的是latch,如果换成flop的话,有什么不同

用latch可以borrow timing,即便enable信号不满足setup,也可以成功采到实现gating功能。

如果用Flop,一旦因为干扰或者时序本身的问题,很可能导致第一拍采不到数,会使得gating的时序落后一拍,如果时序要求严格,会产生问题

在AOCV里面,随着逻辑单元级数的增加,derate的值是增加还是减少?

在OCV中,随级数增加,derate不变

在OCV中,公共路径的derate也会被CRPR去掉

OCV中,随着级数的增加,derate不变。但是这样time会很难满足,因为OCV本身的影响已经很严重了。

所以出现了AOCV,随着级数的增加,derate减小,这样可以让time更容易满足

在ocv中,如果设derate是1%,那么对于3级buffer链的derate值就是:

1%d+1%d+1%d=1%3d(每个buffer的延迟是d);

在aocv中,同样1%的derate,多级cell会对derate乘一个小于1的修正系数r,那么对于3级buffer链的derate值就是:

1%d+1%dr+1%drr=1%*d(1+r+r^2)=2,hold的检查就不是在同一个时钟效沿,对hold的要求就要多n-1个周期,那样太苛刻了,一般时序无法收敛

一个设计的时序约束是怎么写出来的?请大略说明时钟,IO delay,false path, multicyclepath是如何得到的?在完成时序约束的过程中,后端可以给予什么样的帮助?

clock和generated clock一般由设计spec决定。除非有些个别的local generated clock可以有前端工程师自己添加

IO timing与系统设计有关,应该参考/兼顾其他芯片的IO时序,由前端工程师作出

exception(false path, multicycle path)一般是由前端工程师在做设计时决定的

后端可以提供clock network delay/skew,DRV,以及帮助检查SDC是否合格

在只有一个function SDC的普通后端流程中,对于pre-CTS, post-CTS 和 post-Route这三步,请分别讲述它们在时序收敛上的方法,一般会遇到的问题和解决方法。

pre-CTS时,使用ideal clock,只fix setup

post-CTS后,使用propagate clock,可以只fix setup,检查hold,但可以不fix hold

post-Route后,依然使用propagate clock,fix setup和hold

具体遇到的问题和解决方法:

pre-CTS: 如果有setup,重在调整floorplan,buffer tree结构

Post-CTS: 如果有setup,重在调整clock tree,buffer tree结构或者size

Post-Route: 如果有setup/hold,微调clock tree/buffer tree的size,routingchannel和图层,实在不行,回到CTS

preCTS和postCTs主要就是差个clock skew的问题

还有build clock的方法,这个很重要,

很多inter-clock pathviolation都是由于没有balance好造成的

所以你在postCTS后的timing有时候有很奇怪的结果,

postRoute主要是SI 影响,timing 会变差些,

可以做postroute opt来修复回来,减少下crosstalk的影响,

假设一个设计的function SDC中有多个时钟,在scan mode下,另有一个单独的scanclock,如果functional的各个时钟树之间是不平衡的,请问如何平衡那个scan时钟?

如果CTS支持multi-mode,直接使用即可。

如果不支持,或者MMCTS效果不理想,就是在CTS spec中,同时定义function 和 DFT 的时钟,然后在scanclock里面,把MUX设为leave pin,再让它们与function clok到MUX的延迟做动态平衡

在一个设计中有多个时序约束,象function,scan shift, scan capture, scan at-speed, mbistat-speed, 和 jtag SDC,为了减少运行时间,不能把它们都放入MMMC中,你选择哪些放入MMMC的setup中,哪些放入MMMC的hold中?

这个要从每个SDC的特点着手,个人经验,与设计有关,不敢保证使用与所有设计。

scanshift:速度很慢,不用太担心setup,但是hold很重要,一旦hold有问题,所有与scan有关的测试全泡汤

scancapture:也是慢速,但是会有很多hold出来,特别是在不同的function时钟之间

scanat-speed:高速,解决了它的setup,其他DFT的setup基本上就连带着解决了

mbist at-speed:高速,但是涉及的逻辑不多

jtag:慢速,很容易与function SDC合并

所有结论是

MMMC setup:function + scan at-speed

MMMC Hold: function(+jtag) + scanshift + scan capture

请解释反标SDF和SPEF在时序分析时的差异,特别是用不同的STA工具检查timing

使用SDF做时序分析,无论使用什么tools,其结果应该是一样的,没有差异

使用SPEF时,因为工具需要把SPEF换算成SDF,这时会产生差异。

所以建议使用一个你信得过的工具生成SDF,然后大家都使用这个SDF做STA和仿真

在后端流程的每步中,如何处理门控时钟?

如果是用latch+and/or在组合成的clock gatingcell,比较麻烦,以后估计不多见了,暫不讨论。TomPaul提到的问题都很让人头痛,特别是做CTS时,如何处理那些个latch的clkpin。Place时,latch和and/or cell一定要靠得很近。

一般使用ICG cell时,

place:使用clock gating awareplacement选项

CTS:主要看工具的本领了,一般是希望在满足setup的前提下,ICGcell要尽量靠近clock root

route:除了clock net优先以外,不记得还有什么可做的了

什么是SSO,设计PAD ring时,如何计算SSO?

sso ,即simultaneous switchingouputs,即允许同时切换的信号IO的数量。多个信号IO同时切换时,因更多电流流过pad ring,在pad电源IO的bondingwire及片外引线上的电感上,产生Ldi/dt的压降。也即ssn,同时切换噪声。主要是会引起地弹,即ground bounce。

避免sso有很多方法。如增加供给pad用的电源IO数量,采用doublebonding或triple bonding,采用slew rate control的IO,避免把pad电源IO放在corner上(corner处bondingwire引线最长,L最大),等。

主要还是采用增加pad用电源IO数量的办法,计算方法一般foundry会提供,一般是给每个信号PAD一个DF值(还要根据bondingwire电感值做出选择),把自己用的所有信号IO的DF值加在一起,能得出所需要的POWER PAD的数量。

写时序约束时,是否需要对所有的IO端口加约束?一个信号端口是否可以被多个时钟约束?应该如何对这种端口设置delay?一个时钟端口是否可以定义多个时钟?应该如何定义这些时钟?

CLOCK ports 不需要加,其他都要

可以,set_input_delay -add_delay

可以,create_clock -add

如何设计PAD ring?

大的流程是:

1)根据系统(其他芯片的)要求,芯片内部的floorplan,决定信号PAD的位置

2)计算出power PAD的个数,插入到信号PAD里面

3)加其他的PAD,比如IO filler,powercut,power on control,corner PAD,ESD等

细节可以包括:

1)如何计算core power PAD:估算corepower,再加50%,算出电流,除以每个core power IO的最大电流,就是大致的PAD个数。插入到信号PAD ring后,还要再计算powerEM,防止一根电源线上的电流过大。

2)如何计算IO powerPAD:从信号IO的功耗算起,同时计算SSO,取2个结果里面较大的

3)在什么地方插入powercut:不同的电压core电压和不同的IO电压之间,power island之间,数字和模拟电源之间。

4)power on control PAD,一段每个IOring需要一个

5)ESD一般要加在每个不同的电源之间

在设计中,单元的输入端可以悬空吗?输出端哪?

输入端不行,输出端可以

输入悬空会因为周围电场的变化而引起cell内部的翻转,继而影响到其他的逻辑的正确性

设计的哪些地方容易出现IR-drop的问题?

从电源布线的角度讲,那些远离电源端的地方,电源布线少的地方,容易出现ir-drop的问题。

比如wire bond芯片的中间,flipchip的四角,analog macro的边上(因为有些analog的上面不容许数字电源布线)

从swtiching activity的角度讲,toggle rate高并且celldensiy高的地方IRdrop大,所以切记不要为了balance clock tree,把一堆clock buffer摆在一起。

如果是静态IRdrop,频率高的地方IRdrop大。

输入端信号的transition的快慢是如何影响APR之后的时序,门数,和功耗的?

对timing的影响:slowtransition使得速度变慢,fast transition使得速度变快

对power的影响:slowtransition时功耗增大,fast时功耗减小

对gatecount的影响:要分以下2种情况,(1)如果整体的transition要求较高,slow transition会增加gatecount;(2)如果整体的transition要求不高,input transition对gate count没有大的影响

注意:inputtransition会逐级传送到chip里面的,虽然效力在逐级减小

什么叫克隆和缓冲,什么情况下用到这2种技术?

cloning是在有多个sink的情况下,不改变逻辑功能把当前cell复制一份,分别驱动下一级的cell,这样可以减少当前单元的负载,从而获得更好的时序,有时是为了placement的考虑,譬如几个sink的方向不同,缺点是会增加上一级的负载

buffering是在不改变信号的情况下对信号再生,提高它的驱动能力,通常是两级反相器构成,可以提高电路的运行速度,有时也用来当延时单元,特点是不会增加上一级的负载

在多个sink的时序都比较紧的情况下适合用cloning,如果sink对timing的要求区别挺大的,可以用buffering,一部分时序较紧的由上一级直接驱动,剩下的可以加一级buffer后驱动

LEF是做什么用的?与GDS的区别是什么?

LEF是一种简化版的GDS,它只包括size和metal层有关的信息,比如pin,blockage等,其他baselayer的东西只在GDS里面可以看到。

同时LEF还有一些GDS里面没有的信息,比如,metal的R,C,routingand placement rule等

LEF是一个文本文件,可以修改编辑。GDS是二进制文件,比较难修改

详细解释形式验证和仿真的异同

形式验证是为了验证综合前后或者layout前后,电路是否在数学模型上有改变吧。那综合前后的形式验证为例,用formality进行形式验证时需要DC提供验证节点,然后FM根据这些节点去验证综合前后的电路在数学逻辑功能上是否等价。形式验证不需要任何激励测试向量,他能保证逻辑上电路没有发生变化。

仿真的话有分为layout前后的仿真,前仿真主要用于测试功能是否正确,需要测试激励,后仿真主要用于测试是否满足时序(当然也就测试了功能是否正确),同样也需要激励信号。仿真的目的是模拟电路实际工作状态,看输入和输出是否满足设计要求。

如果要说区别的话,我个人感觉形式验证就像数字电路中的analyse,分析电路功能,看是否满足设计要求,而仿真的话更多的是在模拟实际电路工作情况。

为什么综合时,不动clock?为什么不动某些大扇出的net,比如reset?

因为clock tree与leafpin的物理位置密切相关,DC没有这些个信息,做了也不准,所以就不做了。也是因为后端知道DC给的clcok tree根本不准,所以一旦遇到,就直接删除

至于resettree,是可做可不做,如果reset的时序很难的话,还是建议做一下,看看DC时是否可以满足时序,如果DC都满足不了,估计后端也很难做到,趁早想别的方案

如何计算gate count?

以前比较确切地定义是4个transistor为一个gate,

计算整个设计的gate count时,应该先算出(所有standardcell的总面积),再除以(4个transistor的面积)。注意,各种RAM,PLL,ADC,DAC等macro不能算在总面积里

现在人们为了简单,就把一倍驱动能力的,2输入的nandcell的面积认为一个gate的面积,一个nandcell与4个transistor的面积是有一点差别的,但是你一般不容易搞到准确的4个transistor的面积

所以现在的standard cell的gatecount就变成(所有standard cell的总面积),再除以(一倍驱动能力的,2输入的nand cell的面积)

什么是ESD? 在什么地方需要插入ESD 电路?

ESD是指静电放电。带有足够高电荷的电气绝缘的导体在靠近时,会形成有相反电势的集成电路,电荷“跨接”,从而引起静电放电(ESD)。

ESD是指静电泄放。一般在IO 的InPut 加ESD电路,在IC的测试。封装。运输。使用等过程中可以把静电有效泄放避免对CMOS 栅极的损伤,从而有效地保护IC。

如果不考虑模拟电路的干扰问题,基本上在各个VDD,VSS之间都要加入back-to-backdiode的ESD电路

DFM包含什么?什么是OPC, RET, CMP 和 Litho物理/电子分析?

后端主要是double via, spead wirewidth/space, 还有add dummy metal,使metal desity更均匀,

OPC: optical proximity correction

CMP: chemical mechanicalplanarization

RET: resolution enhancementtechniques



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有