陈涛后端面试总结v1重点讲义资料_第1页
陈涛后端面试总结v1重点讲义资料_第2页
陈涛后端面试总结v1重点讲义资料_第3页
陈涛后端面试总结v1重点讲义资料_第4页
陈涛后端面试总结v1重点讲义资料_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

精品文档精品文档PAGEPAGE52精品文档PAGE

难度指数:1:常识--无论是否有工作经验,都应该准确回答2:简单--只要做过一点后端的设计,就应该明白3:一般--有实际工作经验一年左右,做过2个以上真正的设计,应该可以答上来4:较难--在这个特定的领域有较多的研究,并积累了一定的经验5:很难--基本上是专家级的牛人了!transition是正确判断delay的前提,如果transition有violation,setup/hold的值就不准确,也就没有修的必要所以要先修好tran/cap这样的基本参数,然后再去看setup/hold,这样才是比较准确真实的setup/hold增加decap会减小IR_drop,会带来什么影响?影响:面积大,占用size边泄漏功耗产生作用:会减小noise,稳定电压sign-off的标准一般是timingbalancingclockskew只是CTS的一个中间步骤,判定timing的话还是要optdatapath之后才能够得到。如果说skew的target比较小,CTS不容易进行balance而达到目标,那么tool很有可能采用牺牲clockpath,或者叫latency,再或者叫insertiondelay,来实现skew的目标。那么,这样当然会插入更多的cell,走更长的path来实现,自然功耗就大了。同时,clocknet比较sensitive,path越长,潜在的OCV越明显。那么,反过来说,将skew的target设得比较大,tool可能可以采用更加简单的结构来buildclocktree。再说个题外话,CCOpt是timing-driven的CTStool,可以用更短的clockpath长度和更少的clockcell实现clock。总之一点,只要保证你的设计结果满足你的constraints,就没有问题。

PBA:一个cell中,如果有一条path的transition或者loading很大,它不但会影响自己的时序,还会影响这个单元的其他path的时序。CTS之前,clock

都是ideal的,这时候的

transition

和setup都是由

datapath引起,如果一定要在这个时候fix,无论从数量还是产生因果上来看,显然应该先

fixtransitionviolation

。用latch

可以

borrowtiming

,即便

enable信号不满足

setup,也可以成功采到实现

gating功能。如果用

Flop,一旦因为干扰或者时序本身的问题,很可能导致第一拍采不到数,会使得

gating的时序落后一拍,如果时序要求严格,会产生问题。

@@1、下面是第一个真正的问题:Why

powerstripesroutedinthetopmetallayers?

为什么电源走线选用最上面的金属层?难度:1

因为顶层金属通常比较厚,可以通过较大的电流1.高层更适合

比如stdcell

globalrouting.低层使用率比较高,用来做

通常是m1Pin。

power的话会占用一些有用的资源,EM能力不一样,一般顶层是低层的2~3倍。更适合电源布线。顶层金属通常比较厚,可以通过较大的电流3.一般

ip占用的层次都靠近下几层,如果上层没有被禁止

routing

的话,toplayer

可以穿越,低层是不可能的,并且高层对下层的

noise影响也小很多。@@2

、Why do you usealternate routing approach HVH/VHV

(Horizontal-Vertical-Horizontal/Vertical-Horizontal-Vertical)?为什么要使用横竖交替的走线方式?

(感觉这个问题比较弱智,但是号称是

intel的面试问题,晕!我憧憬和向往的圣地啊!!!)难度:11.有效利用布线资源,更利于布线

2.线间干扰最小

@@3、Howtofixx-talkviolation?

如何解决线间干扰?难度:4(关于难度的定义,在第一题里面)(应该至少有5大类解决办法,wirespacing,shielding,changelayer之类的只算其中1类)1.增加受害网络的驱动能力 upsizevictimdriver减小侵害网络的驱动能力

2.Doublewitch,doublespacing,wireshileding

3.Insertbufinvictimnet

4.Victim的输入端改成 hi-vthcell,hi-vth保证了再小纹波干扰下不发生翻转

5.改变timingwindows

@@4、Whatareseveralfactorstoimprovepropagationdelayofstandardcell?

哪些因素可以影响标准单元的延迟?难度: 3

答案应该包括

1)PVT

2)inputtransition,outputload

3)Vth

@@5、Whatwouldyoudoinordertonotusecertaincellsfromthelibrary?如何禁止使用库里面的某些单元?难度:1

禁用就用set_dont_use禁止修改就用set_dont_touch

@@6、Duringthesynthesis,whattypeofwireloadmodelareoftenused?

做RTL综合时,经常使用的 wireloadmodel有哪几种?难度: 2

注意:问题是wireloadmodel,不是wireloadmode,也不是delaymodel

答案:

1)zerowireloadmodel

2)基于fanout的传统WLM

3)基于物理位置(距离)的 wireloadmodel,在Cadence的RC中叫PLE,Synopsys叫DCUltraTopographical

附加问题:

Whattypesofdelaymodelareusedindigitaldesign?数(字IC设计中有多少种类型的 delaymodel)

答案就是你说的“NLDM,CCS,和ECSM”,还有一个现在基本不用了的 --LDM

DC默认的应该是zerowireloadmodel,当然也会根据design的大小选择不同K值的wiremodel,nldm(非线性负载模型)

CCS(synopsys)和ecsm(cadence)都是电流源模型,精细度更高,

这三种模型是对 celldelay的计算方式的不同区分;

PVT(processvoltagetemperature)条件

就是我们平时做时序分析的 wcl、wc、lt、tc、ml等corner设置workcondition

一般情况下wcl下修复setup

lt下修复hold、ml下查看leakage

答案:NLDM CCS ECSM 还有一个现在基本不用了的 —LDM

@@7、HowdelaysarecharacterizedusingWLM(WireLoadModel)?使用一般的WLM(不是zeroWLM,也不是按照物理位置算的DCT),DC是如何计算delay的?难度:2

lookuptable LUT

一条Timingpath上的Delay有2部分组成,CellDelay+NetDelay。

在DC中,NetDelay应该来说就是有WLM中得到的,而CellDelay就是根据WLM中得到的inputTran跟Cell的outputload通过查表得到Celldelay。

DC在计算延时的时候,主要根据输出的 tansition和net的RC值来计算。outputtansition是由驱动cell的inputtansition

和load通过查表得到的,net的rc就要根据所选取的 wrieloadmodel来计算,

计算时和输出的 fanout决定

smic13的smic13_wl10为例

wire_load("smic13_wl10"){

resistance :8.5e-8;

capacitance :1.5e-4;

area :0.7;

slope :66.667;

fanout_length (1,66.667);

根据fanout值,由fanout(1,66.667)可以得出互连线长度为 66.667,然后根据resistance和capacitance计算出互连线电容

1.5e-4*66.667,互连线电阻为8.5e-8*66.667

,当然如果扇出值表中没有,就会用到slope,例如扇出为3时,此时估算的互连线长度为1*66.667+(3-1)*slope,再计算出RC值,然后DC由此计算net的延时。

@@8、Therearesourceclockclka(create_clock),andgeneratedclockclkbbyclka.

Inpre-CTSnetlist,thereisnetworklatencyinclka,howthislatencypropagatestoclkb?

Inpost-CTSnetlist,Whatyouneedtodoforthisnetworklatency?假设有两个时钟,原始为在没有时钟树的网表中,

clka,生成的时钟为 clkb,

clka的networklatency会自动传递到

clkb上吗?

clkb的

latency如何描述?在生成时钟树的网表中,如何处理

networklatency?clkb

的latency又如何描述?难度:

3答案:pre-CTS时,clka的networklatency会自动传到clkb上在post-CTS时,可以把networklatency去掉,

set_propagated_clock命令,让工具根据 clocktree去计算实际的clock networklatency

@@9、Therearesourceclockclka(create_clock),andgeneratedclockclkbbyclka.howdoyouspecifytheminCTSspecfile?Assumethereisrealtimingpathbetweenclkaandclkb.clkb是

clka的生成时钟,在

CTS的spec文件中如何定义这两个时钟?假设

clka

和clkb间的

FF有时序收敛的要求。难度:

3答案:

CTS的spec文件中定义clka是root,clkb为throughpin,再加上那些应该有的skewtransition,insertiondelay等就好了,其它的事CTS会给你做

@@10、假设在pre-CTS的时序约束中,setup的clockuncertainty是由PLLjitter和clocktreeskew两部分组成,那么

1)pre-CTS的时序约束中, hold的clockuncertainty是什么?

2)post-CTS的时序约束中, setup和hold的clockuncertainty要做什么样的修改?难度: 2

答案:1)pre-CTS,

setup的clockuncertainty=PLLjitter+clocktreeskew

hold的clockuncertainty=clocktreeskew

2)post-CTS,

setup的clockuncertainty=PLLjitter

hold的clockuncertainty=0

@@11、Whatarevarioustechniquestoresolveroutingcongestion?

请详细解释解决走线阻塞的问题难度: 4

提示:1)routingcongestion发生在后端,前端一般不太考虑这个问题,需要后端自己去办法解决,但是解决的办法不只在后端,也有一些方法需要前端的配合

2)阻塞有多种情形,要分别讨论,没有一个统一的解决办法。能够把大部分的阻塞情况列举出来,就已

经够4级的水平啦

答案:1)阻塞在RAM(macro)之间:可能RAM之间的距离没有计算正确,可以加大RAM之间的间距;扭转RAM的方向,使得RAM的IOpin朝向更容易走线的那边;如果是多个RAM共用地址或者数据线,尽量把RAM的

地址数据pin对齐

2)阻塞出现在RAM和帮助单元交界的地方:在 RAM周围加一条halo(keepout);把RAM放在四周,尽量把

中间留下的空间变成方形;在有阻塞的地方加一些由小的 placementblockage组成的矩阵

3)阻塞出现在标准单元的某一块: 也可以加一些由小的 placementblockage组成的矩阵;module/instancepadding;利用

placementguide减少那块地方的标准单元个数;

scanchainreordering也会改善一些阻塞;定义

density上限;使用

congestiondriven的placement,并且要求

place之后做

congestion优化;在综合是禁止使用那些

pin太多太密集的标准单元(多半是那些复杂的组合逻辑单元 );请前端使用RAM代替触发器矩阵;请前端修改算法

4)应该尽量减少powerroute占有的资源,谨慎选择powermesh使用的金属层,VIA的大小等。在detailroute完成之后,你如果已经试了各种解决signalcongestion的方法,还有少量DRC无法解决时,可以考虑切掉部分power

mesh

主要就是memorychannel出现congestion的处理,还有全是标准单元但有congestion的处理。若全是标准单元但仍有congestion,要么是localdensity太高,要么就是pindensity太高,这时候就要限制celldensity来降低pindensity,另外如果是用ICC的话,在placement的时候使用globalrouter来进行congestionremoval以及congestionremoval

higheffort都是有帮助的。

@@12、Howdoyougetbetterskew/insertiondelaysinCTS(ClockTreeSynthesis)?

如何得到更好的时钟树 skew和insertiondelay 难度:4

如果是用普通的 CTS的方法,可以从下面几个方面着手。不太可能一次就把 CTS做得很好,要反复调试各种参数,达

到最佳效果。

1)合理的clockroot和throughpin。这个看似CTS会从SDC自动抓出来,但是并不一定是最好的,特别是多个clock相互有重叠的leafpin时,要特别注意

2)不要用太大或者太小的 clockbuf/inv

3)选用RC最小的金属层。如果上面RC最小的金属层已经被占用,比如RC最小的top,top-1已经不够clocknet时,而top-2到layer2都是一样的RC时,可以选用layer3/4。为什么不用更高层哪?因为这样既照顾了layer2/1的pin,有不用太多的via到更高层

4)如果用doublewidthclockwire,可以适当增大clockbuf/inv的size

5)合理的maxfanout。有时clockbuf/inv的fanout可以超过max_fanout的限制

6)不要把skew设得太小

7)min_insertion_delay=0ns

8)合理的transitiontime,不要太小

9)使用postCTS的CTSopt

10)做clocktree时,就直接把 clocknet走线完成

CTS时,就把时钟net都route了,不要等到detailroute那一步

@@13、Ifgivingtotalstandardcellgatecount,allmemorymacrolistincludingmemorytype,bitwidthanddepth,allothermacrowithrealsize,andIOtypeandtotalnumber.Howdoyouestimatethediesize?

如果告诉你标准单元的门数,所有内存的类型和逻辑大小,其他 IP的实际大小,以及 IOcell

的种类和数量,你如何估算整个芯片的面积?

答案:

IOneck和coreneck一般称作 IOlimited 和corelimited,

IOlimited:这个芯片的面积是因为 IO个数限制(太多),而不得不做得那么大。core部分其实用不了那么大。

这时面积计算就简化为每边 IO个数的计算了。

Corelimited:芯片面积是有 core部分的决定的,IO没有那么多

Corelimited情况下,diesize的估算如下:

芯片面积 =core面积+powerring面积+PADring面积

core面积=RAM面积+其他macro面积+标准单元面积

RAM面积=RAM自身的面积+RAMpowerring面积+keepout面积+mbist面积RAM自身的面积可以通过memorycompiler或者查datasheet得到,

有些RAM可以不要powerring。如果要的话,按照 powermesh的宽度xRAM的长宽x2=面积keepout+mbist

的面积一般是

RAM

自身面积的

10%其他

macro的面积,比如

PLL,ADC,DAC

等,直接把面积加起来,再留

3~5%的

keepout面积就好了标准单元的面积

=(预估的

gatecountx

每个gate的面积)/utilizationutilization与使用的金属层数和设计的用途有关,简单地计算方法是

5层metal:50%

6层metal:60%

7层metal:70%

8层metal:80%以上不包括

power专用的金属层如果设计是多媒体芯片,一般可以增加 3~5%utilizaion,如果是网络芯片,则要减少 3~5%

casebycase吧,ioneckorcoreneck,我们一般是很快摆摆各个

hardmodule位置,fastplace,看一下

neck,估计一个合适的

uti,re-try几次,基本上面积就定下来了,不过将来再变的可能挺大的,一般要

2~3次变size我们这边前端

team也会预估他们设计的面积,然后给我们,说是他们期望的面积,他们是统计一下

totalcellarea*1.2,表示考虑到了电源空间和

stdutil,不过基本上我我们实际都比这大不小于

20%,感觉不着调,对后端很苛刻啊门数知道,面积可以确定了,考虑到你的stduitl,hardip也只知道大小了,sum一下,加上你认可的(经验参数)p/g/special

route面积,大体确定了。如果是ioneck的话,iomin-space排起来就是你的最小面积了,但此时无法保证 package

可以过。

@@14、whatisprosandconsofusingbufferandinvtersinCTS?

CTS中使用buffer和inverter的优缺点是什么?

难度:3

答案:

使用BUF:

优点:逻辑简单,便于 post-CTS对时钟树的修改

缺点:面积大,功耗大, insertiondelay大

使用INV:

优点:面积小,功耗小, insertiondelay小,对时钟dutycycle有利

缺点:不易做时钟树的修改

@@15、Ifgivingtwophysicaldiesasbelow,andaskyouselectoneofthem.Howdoyoupickitup?explain

thereasonplease.

1)width=2xheight

(2)height=2xwidth

如果从下面的两个芯片中选一个给你做后端设计,你选哪个?请说明选择的理由?

1)宽=2倍的长

2)长=2倍的宽

答案:

去除不太好用的layer(比如metal1)和power专用layer(比如RDL)后,比较剩下的 layer可以提供的H和V

routingresource,如果H的多,就选宽的,反之,就选高的。

看这个设计是几层金属的了,我觉得H向的多(比如3层,5层。。)我就选宽的,反之就选高的。因为一般大家习惯把std做成横向,也就是metal1是H的,所以高的可以节省些strap。

@@16、ifthedesignisIOlimited,howtoreducethediesize?

因为IO太多而导致芯片面积过大,有什么方法减小面积?难度:2答案:

1)staggerIO,2重io可以算一个方法

2)IO可以不全放到四边,只要封装没问题就行啦 --flipchip算第二个方法

3)如果有多套IOcell可以选择,尽量选瘦的

4)调整芯片的长宽比

@@17、givingtheschematicanddelayinattachedpicture,calculatetheWCsetupslackatDpinofF2,and

BCholdslackatDpinofF4

如图所示,时钟和延迟,计算WC下到F2输入端D的setupslack,BC下到F4输入端D的holdslack

难度:3

答案:

时钟周期4,后面有个分频器,所以为 8

一般bcwc计算都用bc算hold。bc情况下,cell,net的delay都比较小。

计算ocv是clockpath用bc,datapath用wc

F2输入端D的setupslack是(8+0.5-0.3)-(0.7+7.0)=0.5

F4输入端D的holdslack是(0.2+0.2)-(0.2+0.2+0.1)=-0.1

@@18、usingthesamelogicasquestion#17,consideringOCVonclockpathonly,whichclockbufferwillbeusedforOCVderatingcalculationandwhichclockbufferwillnot(a.k.a.CPPR)?

如果考虑clockpath的OCV,在第17题的电路里面,哪几个时钟BUF要被用来计算OCV的derating,哪几个不用(又叫CPPR)?暂不考虑X-talk产生的incrementaldelay

答案:

C1C2不用算入derating(应该是也计算过,但是会通过CRPR弥补),C3,C4,C5要计算derating

附录:以下是几个概念的通俗解释。

OCV:因为制造工艺的限制,同一芯片上不同位置的单元会有一点差异, 这就是OCV。现在还有LOCV和AOCV,

暂且不提。

derating:是计算OCV的一种简单方法,在某个单一条件下,比如WC或者BC,把指定path的延迟放大或者缩小一点,这个比率就是derating。注意,这里要强调的是某个单一条件,要么是WC,要么是BC,不能把WC和BC混在一起,再

OCV,因为那样太悲观,实际上是很难发生的。除了derating以外,在使用incrementalSDF的时候,也会对OCV发生作用。这是明天的问题,比较有难度。CPPR:一条

path的

startflop和

endflop的时钟路径,有时会有一部分是重合的,重合的部分不应该算

OCV(注意,这里假设没有使用

incrementalSDF),这就叫

CPPR。@@19、continuefromquestion#18.BecausethereisCPPR,theOCVderatingonclockpathC1andC2arecanceled.Nowgivingincrementaldelaycausedbyx-talkatnetbetweenC1andC2.PleaseusethederatingtocalculatethedifferenceofclockpathdelayfromC1toC2(includingthenetbetweenthem)forWCsetupandBChold.

接上面#18的问题继续讨论,因为有CPPR,在C1到C2那段clockpath上面的OCV被抵消掉了。

现在我们增加一个由 x-talk引起的incremental延迟在C1到C2的那段net上,具体数字见图。

问题:

对于C1到C2那段clockpath,

在计算WCsetup时,因为OCV引起的路径延迟的差是多少?

在计算BChold时,因为OCV引起的路径延迟的差是多少?

注意:

问题是那段clockpath因为OCV引起的pathdelay的差,不是问pathdelay的绝对值难度:5

难度5的问题不是盖的吧,

好,改为选择题,

C1到C2一段的OCV延迟的差,

1)在计算WCsetup时,是

a)0

0.0005

0.00075

0.0245

2)在计算BChold时,是

0

0.001

0.0015

0.0265

答案:

现在从incrementalSDF的格式说起,

-0.01::0.015)(-0.015::0.01)

左边括弧里的是risingtiming延迟,右边的是fallingtiming

括弧里面的一对数字表示在这个条件下( WC或者BC)延迟的最大和最小值

因为是incremental延迟,要和基本延迟结合使用,所以,会有负数出现。

再讲OCV的使用incrementalSDF的方法,

OCV计算pathdelay时挑选最困难的情况,

WCsetup时,比如从F1到F2,

计算F1的clockpath,就选incrementalSDF里面的最大值0.015,

计算F2的clockpath,就选最小值-0.01

因为有0.95derating在-clock,-early上,所以F2的clockpath要按比例缩小-0.01x0.95=-0.0095

所以C1到C2那段的OCV的差是0.015+0.0095=0.0245(选项d)

在BChold时,比如congF3到F4,因为2个FF在同一个时钟沿检测holdtiming,CPPR可以把incrementalSDF的延迟也抵消掉,

所以C1到C2那段的OCV的差是0(选项a)

结论:

计算setup时,CPPR不抵消incrementalSDF

计算hold时,CPPR连incrementalSDF都可以抵消掉

所谓on-chip-variation主要是指芯片上不同位置的 cell之间的差别

@@20、ExplainECO(EngineeringChangeOrder)methodology.

说一下ECO的流程 难度:2

答案:

ECO指的是工程改变指令(engineerchangeorder)。当整个工程接近完成,但是时序或者电源有少数违规。要修正这些

违规,如果重新进行全部线甚至从流程起点开始会非常耗时。因此布线工具会提供相应的功能在该阶段对布线进

行手工修正。

ECO布线

在默认状态下,布线器在实施 ECO布线时,只对部分需要加入逻辑单元的进行布线。同时尽可能保持其他的布

线状态。ECO布线在以下情况会非常有用:

1.当芯片已经完成布线,但是前端部门给出进行极小修改的新的网表。

2.当芯片已经初步完成布线。但是要插入缓冲器来修复建立时间,保持时间或者设计规则违规,从而进行进一步

优化。

3.插入天线二极管来修复天线效应。

4.金属填充已经完成。

ECO流程:

1.解决掉RTL中的bug

2.在综合中实现ECO

3.形式化验证(RTL和网表)

4.版图实现

5.形式化验证(版图和网表)

6.导出GDS,后仿

不知道对不对,望陈涛前辈指正

正确答案:

ECO有两种,pre-maskECO和post-maskECO,它的分界线就是 baselayertapeout之前和之后。

pre-maskECO的流程是

1)后端写出网表,给前端

2)前端修改这个网表 (一般不再做综合),可以使用任何标准单元(只要不是 dont_use),交给后端

3)后端读入ECO网表,和ECO之前的place和route

4)ECOplace&route,STA,DRC/LVS

post-maskECO流程,假设你不想动 baselayer

1)后端写出网表,给前端

2)前端修改这个网表 (一般不再做综合),只能使用sparecell或者象gatearray一样的ECOcell

3)后端读入ECO网表,和ECO之前的place和route

4)如果使用sparecell,不用ECOplace;如果用ECOcell,要将ECOcell放在以前带gatearray功能的fillcell的

位置上,再按照指定的 layer做ECOroute

@@21、WhatdoyouwriteinCTSspecfile?

CTSspec文件中一般包含哪些内容? 难度:3

答案:

(以CadenceCTSspecfile格式为例)

AutoCTSRootPinpad

Period

MaxDelay

MinDelay

MaxSkew

SinkMaxTran

BufMaxTran

Buffer

NoGatingNO/YES

DetailReportYES/NO

#SetDPinAsSyncNO/YES

SetIoPinAsSyncYES/NO

RouteClkNetYES/NO

PostOptYES/NO

OptAddBufferYES/NO

#RouteTypespecialRoute

#LeafRouteTyperegularRoute

ExcludedPin

leafpinleafport

throughpinthroughport

clkgroup

macromodelpin

@@22、Iftherearetoomanypinsofthelogiccellsinoneplacewithincore,whatkindofissueswouldyoufaceandhowwillyouresolve?

如果在core里面某一块有太多的标准单元的 pin,有可能出现什么 place&route的问题,如何解决?

难度:3

答案:

1)禁止使用pin太多的cell

2)减小utilization,方法很多

3)看vh可用资源,适当调整 moudle形状

@@23、IfthereareDRC(spacing,short),holdandsetupviolationsinthedesign,youdon'thaveenoughtimetofixallofthembeforetapeout,whichoneyouwillfixfirst,whichoneyoucanleaveitasis?Why?

如果设计中有 DRC(特指spacing和short),hold和setup违反,tapeout之前,你已经没有时间

去修改所有这些违反,那么你首先修改哪个?哪个可以不管?请说明理由。难度: 2

答案:

short,spacing

hold

如果没有时间,setup可以忽略

先修hold,因为修hold可能会影响到cell的添加或减少,从而影响到金属之前的层如 nwell、active、poly等;

setup是尽可能修,修不掉,出来后只能降频;

drc(space、short)只是金属层,tapeout之后有一段时间还可以再改;这个可以先不管。

@@24、howtosetmulticyclepathconstraint?

如何设定multicyclepath?难度:1

提示:在一般情况下, multicycle-setup和-hold要成对使用

答案:

clockdomain:

fast-slow:set_multicycle_pathnum-setup-fromclk1-toclk2-start

set_multicycle_pathnum-1-hold-fromclk1-toclk2-start

slow-fast:set_multicycle_pahtnum-setup-fromclk2-toclk1-end

set_multicycle_pathnum-1-hole-fromclk2-toclk1-end

datapath:

set_multicycle_pathnum-setup-fromdata1-todata2

set_multicycle_pathnum-1-hold-fromdata1-todata2

延伸问题:

为什么-hold一般是-setup的n-1?如果只有-setup木有-hold会怎样?

答案:

hold是对前后两个flipflop在相同时钟沿的检查.设了n-1就是返回n-1个周期做hold的检查,满足了两个flipflop在同一个时钟沿。如果没有-hold默认是检查n前一个有效时钟沿,如果n>=2,hold的检查就不是在同一个时钟效沿,对hold的要求就要多n-1个周期,那样太苛刻了,一般时序无法收敛

@@25、howaretimingconstraintsdeveloped,suchasclock,generatedclock,IOtiming,exception?What

backendteamcontributetoit?

一个设计的时序约束是怎么写出来的?请大略说明时钟, IOdelay,falsepath,multicyclepath是

如何得到的?在完成时序约束的过程中,后端可以给予什么样的帮助?难度: 2

答案:

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

IOtiming与系统设计有关,应该参考/兼顾其他芯片的IO时序,由前端工程师作出exception(falsepath,multicyclepath)一般是由前端工程师在做设计时决定的

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

@@26、In regularbackendflowwithonlyonefunctionalmodeSDC,pleaseexplaintiming closure

methodology/issue/fixesinpre-CTS,post-CTSandpost-Routestages.

在只有一个 functionSDC的普通后端流程中,对于 pre-CTS,post-CTS和post-Route这三步,请

分别讲述它们在时序收敛上的方法,一般会遇到的问题和解决方法。

难度:3暂时不考虑 DFT。后续的每日一题中,会加入 DFTmodeSDC。

答案:

pre-CTS时,使用idealclock,只fixsetup

post-CTS后,使用propagateclock,可以只fixsetup,检查hold,但可以不fixholdpost-Route后,依然使用propagateclock,fixsetup和hold

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

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

Post-CTS:如果有setup,重在调整clocktree,buffertree结构或者size

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

要看是toplevel还是blocklevel的,这两个讲究是不太一样的。

如果仅仅针对sdc文件来说。

1>prcts文件如果没有做过 timingborrowing,那么只需要在给过来的 sdc文件中加入maxtransition以及maxfanout

contstraint就行了,这两个constraint最好加上。加的值根据经验值。

maxtransiton决定了你对criticalpath的预估程度。(因为tran是可以传递的,所以最好设置要和 postroute的

值相差不远,如果你的 floorplan不好,导致最后你某些地方的 tran做的比较差,到 0.4ns,好比,结果你 Place

的时候,设为0.2,那么明显是不合理的。fanout比较特殊,对你芯片面积影响很大, timing影响也比较大,个人

觉得工艺不同,最好 fanout选择不要一样)

对于post-cts阶段,其实工具进化到现在,不管是 s还是c,都可以用一些command来来设置uncertainty以及

latency了,sdc可以和之前保持一致。但是可能有一些设置,事实上还是和timing相关的。最大的就是uncertainty了,setuphold的。。。。事实上,这个值也是casebycase的。该值决定了你的timingclousure的难易程度,需要自己把握。还有个比较重要的值,是clocktree的fanout,该值对clock有很大的影响,当然也会影响density,需要把握。(此值和sdc无关)

如果上面一切顺利的话,到 post-route阶段,假设之前的 fanout和transiton都比较好,并且uncertainty也控制

的比较好,density也还不错。还未爆掉。此时就没什么什么好改的了,之前对 sdc的一些constraint都记录在了

scenarios里面。直接routing就是了。

所以总结下来,sdc文件一共要改的就是 transtion和fanout了,其他的各家工具的 command皆有体现,记录在

各自的scenario里面就好了。

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

还有buildclock的方法,这个很重要,

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

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

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

可以做postrouteopt来修复回来,减少下 crosstalk的影响,@@27、Continuefrompreviousquestion,ifaddingonemoreDFTtimingconstraint,howdoyouhandlethe

multipleSDC?UsingEncounterorICCcommands,pleaseexplainthedetailwhatyoudo.继续#26

的问题,如果再给一个

DFT

时序约束,在后端流程中,你如何处理多个

SDC?假设使用Encounter或者

ICC,请详细介绍如何设置

难度:3答案:

简单地说就是使用 MMMC。

在Encounter里面,要逐步定义,

create_library_set

create_op_cond

create_rc_corner

create_delay_corner

createPowerDomain

create_constraint_mode

create_analysis_view

set_default_view

set_timing_derate

对设计和SDC仔细分析后,也可以合并 functionSDC和几个DFTSDC,这个属于难度5的做法

@@28、TherearefunctionSDCwithmultipleclockdomainandscanSDCwithanindividualscanclock.

Assumethosefunctionalclockareun-balanced,howdoyoubalancethescanclock?假设一个设计的

functionSDC中有多个时钟,在 scanmode下,另有一个单独的

scanclock,如果functional的各个时钟树之间是不平衡的,请问如何平衡那个

scan时钟?难度:4答案:

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

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

@@29、TherearefunctionSDC,scanshift,scancapture,scanat-speed,mbistat-speed,andjtagSDC.

ConsideringCPUruntime,youcan'taddallofthemintoMMMC.ThenwhichSDCyouwilladdintoMMMCsetup,andhold?

在一个设计中有多个时序约束,象function,scanshift,scancapture,scanat-speed,mbistat-speed,和jtagSDC,为了减少运行时间,不能把它们都放入MMMC中,你选择哪些放入MMMC的setup中,哪些放入

MMMC

的hold中?提示:选择的

SDC

要尽量的少,并且尽可能多地覆盖其他没有入选的

SDC下的时序难度:4

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

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

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

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

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

jtag:慢速,很容易与functionSDC合并

所有结论是

MMMCsetup:function+scanat-speed

MMMCHold:function(+jtag)+scanshift+scancapture

@@30、ExplainSDFandSPEFbackannotationtimingcorrelationissue,especiallyindifferentSTAtools请解释反标

SDF

和SPEF在时序分析时的差异

,特别是用不同的

STA工具检查

timing

难度:3答案:spef是寄生参数描述文件,给出了路径上的寄生电阻电容等,具体的延时还需要

sta工具进行计算。而

sdf则是时序的描述文件,里面包含有

celldelay以及

wiredelay。sta工具不需要再对延时进行计算。以我做过的项目为例,在

soce中导出def文件到starrc,通过starrc提取出spef文件,导入Pt进行分析,得到时序反标文件 sdf,再将此文件导入到 vcs等仿真环境中做后仿真。使用

SDF做时序分析,无论使用什么

tools,其结果应该是一样的,没有差异使用

SPEF时,因为工具需要把

SPEF换算成

SDF,这时会产生差异。所以建议使用一个你信得过的工具生成

SDF,然后大家都使用这个SDF做STA和仿真@@031、

Thereare4powersuppliesinthedesign.VDD1/2/3aredifferentvoltage.VDD1isalwayson,butVDD2andVDD3canbeturnoffandon.VDD2toblockBandblockCdon'tswitchatsametime.Pleasefillintheblankwhichnetneedstobeaddedlevelshifterand/orisolationcell.IfyouthinkLevelshifter/isolationcellshouldbeaddedinnetABatBside,thenwriteB;ifyouthinkit'snotnecessary,writeX.如图,一个设计中有

4个电源,VDD1/2/3

的电压各不相同,

VDD1

总是开着,其他会有开和关,并且到模块B的上,哪些需要

VDD2和到模块C的

levelshifter,哪些需要

VDD2有各自分别的开关。请判断在连接这

ioslationcell,把结果填入右边的表中。

4个模块的

8条

net填法如下:假如你认为需要在netAB上加个levelshifter,加的位置在模块B里面,就在netAB的右边的第一列空格里写B。如果什么都不加,就写X。难度:3

没做过lowpower设计,但是研读过lowpowermethodologymanualforsoc这本书。我来说说我的理解,有不对之处请高手指教。

一、电平不同的模块之间即需要levelshifter,故netAB/BA/AD/DA/CD/DC都需要levelshifter。至于levelshifter的位置是放在src端还是des端。一般来说H2L的由于只包含有des的powerrail,所以肯定要放在des端。而L2H则包含有

两种powerrail。肯定需要跨电压域的电源线连接。考虑到 outputdriver需要的电流一般要大于 inputdriver需要的电流。

所以也推荐放在des端。在本题中也未提到电平之间的相对大小。所以我都放在 des端。

二、有powergated控制的模块,其输出都要加上 isolationcell,故netBA/BC/CB/CD/DC/DA 都需要isolationcell。其位

置的摆放也有两种,一是摆放在 ouput端,一是摆放在input端。前者一是可以节省所需要的 isolationcell数量(考虑一

个模块引脚的输出连到多个模块引脚的输入的情况),二是便于check。后者优点是isolationcell需要always-on的power。若放在output端,还需要引always-on的powerrail过来。故此例中BA和DA的isolationcell都放在了A模块中,其它的则放在ouput端。

我的答案是:

netABBX;netBAAA;netBCXB;netCBXC;netCDDC;netDCCD;netDAAA;netADDX;

应该是“后者优点是isolationcell不需要always-on的power”吧?

isolationcell理论上可以放在 output端,但是考虑power-onrail的走线,isolationcell自身的功耗,一般还是放在 input

端比较好。

你的答案也是正确的!

@@32、Continuefrom#31question,thereisisolationcellonnetBAwithisolateenablepin.WhenshutdowntheblockB,willyouenableisolatepinfirst,orshutdownBfirst?WhatorderitisduringblockBpower-on?

接着上一题提问,在 netBA上有一个isolationcell,isolationcell都会有一个isolateenable端,在模

B关断电源时,是先让isolateenable端on哪,还是先关模块B?反之,在开模块B的电源时,谁先谁后?难度:2

答案:

isolateon,再poweroff,反之先poweron,再isolateoff

@@33、Thereare1000clocksinadesign.Youguesstheconstraintcrosstheclocksisincomplete,andwanttohavealistofclockswhichhascrossclockdomainpath.Howdoyoufindwhetherthereispathbetween2clocks?

设计中有1000个clock,你怀疑跨时钟的时序约束有问题,想找出哪些

clock之间有

realpath,请问如何找?难度:

2答案:

check_timing

report_timing-clock_from-clock_to 循环

@@34、WhatarevariousstatisticsavailableinIR-dropanalysisreports?

IR-drop的分析报告里面都包含哪些内容?难度: 2

答案:

至少包括

各种mode下的static和dynamicIR-sropreport,其中drop的容许范围可以参考厂家的意见

functionmode下的EMreport和RJreport

@@35、Withrespecttoclockgate,whatarevariousissuesyoufacedatvariousstagesinthephysicaldesignflow?

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

答案:如果是用

latch+and/or在组合成的

clockgatingcell,比较麻烦,以后估计不多见了,暫不讨论。

TomPaul提到的问题都很让人头痛,特别是做

CTS时,如何处理那些个

latch的

clkpin。Place时,latch和

and/orcell一定要靠得很近。一般使用

ICGcell时,place:使用

clockgatingawareplacement选项CTS:主要看工具的本领了,一般是希望在满足

setup的前提下,

ICGcell

要尽量靠近

clockrootroute:除了clocknet优先以外,不记得还有什么可做的了

@@36、WhatisSSO?HowtocalculatetheSSOinpadringdesign?

什么是SSO,设计PADring时,如何计算 SSO?难度:3

答案:sso

,即simultaneousswitchingouputs,即允许同时切换的信号

IO的数量。多个信号

IO同时切换时,因更多电流流过padring,在pad电源IO的bondingwire及片外引线上的电感上,产生 Ldi/dt的压降。也即ssn,同时切换噪声。主要是

会引起地弹,即 groundbounce。

避免sso有很多方法。如增加供给 pad用的电源IO数量,采用doublebonding或triplebonding,采用slewratecontrol的

IO,避免把pad电源IO放在corner上(corner处bondingwire引线最长,L最大),等。

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

@@37、Inbuildingthetimingconstraints,doyouneedtoconstrainallIOports?Canasingleporthavemulti-clocked?Howdoyousetdelaysforsuchports?Canaclockporthavemulti-clockdefinition?Howdoyoucreateclockforthisport?

写时序约束时,是否需要对所有的 IO端口加约束?一个信号端口是否可以被多个时钟约束?应该如

何对这种端口设置 delay?一个时钟端口是否可以定义多个时钟?应该如何定义这些时钟?难度: 2

答案:

CLOCKports不需要加,其他都要

可以,set_input_delay-add_delay

可以,create_clock–add

@@38、Whatispurposeoflockuplatchinscanchain?Doeslockuplatchalwaysfixtheproblemoffirstquestion?Doeslockuplatchclkpinconnecttotheclockofpredecessorfloporsuccessor?scanchain中插入lockuplatch的目的是什么?是不是lockuplatch总能达到那个目的?lockuplatch的clk端与前一个flop的clock相连,还是后一个flop的clock相连?

难度:3

答案:

一般scan用的时钟树大部分是与function的共享,所以scanchain的前一段和后一段的clockinsertiondelay会不一样,因为scanshift速度很慢,不太用顾及setup,但是要确保hold。所以在前一个FF的clockinsertiondelay小,后一个大时,插入一个lockuplatch,使信号多保持半个周期,以满足后一个FF的hold要求。它们的时序关系是前FF时钟延迟+1/2scan时钟周期>=后FF时钟延迟+后FFhold要求当后FF时钟延迟太大时,lockuplatch也解决不了hold违反的问题

按此分析,lockuplatch的clk端是和前一个FF的时钟相连的。

@@39、HowisscanDEFgenerated?

scanDEF是怎么生成的?难度: 2

书上小抄的:

ThescandeffileisgeneratedfromDesignCompilerasfollows:

dc_shell-xg-t>insert_dft

dc_shell-xg-t>change_names-hierarchy-ruleverilog

dc_shell-xg-t>write–formatverilog–output–hierarchyxxx.v

dc_shell-xg-t>write_scan_def–outputscandef_file

在第一次做完scanchainstitch后,让DFTtool输出一个scandef

@@40、Whatarepros/consofusinglowVt,highVtcells?

使用lowVt和highVtcell的优缺点?

难度:1

答案:

lvtcell速度快,耗电高,静态电流大

hvtcell速度慢,静态电流小

这是timing与power的tradeoff

@@41、Howdoyoureducestandby(leakage)power?Howdoyoureducedynamicpower?

如何减少静态功耗?如何减少动态功耗?

难度:3

答案:

老陈认为,这是最邪恶的一种提问方法!貌似简单,其实覆盖范围很广。

leakagepower+dynamicpower不就是totalpower吗?

那么这个问题可以换一个说法:如何减少功耗?

这样可以从系统结构,算法,前端,一直说到后端,即可以罗列几个大的方向,也可以具体到每个细节,你也搞不清楚他想问的是那个方面。

反过来说,如果他有意刁难你,就可以用这种问法,反正你答不全,到时就说你水平不够!

我们就集中在后端的部分(加一小部分前端) ,而且是细节讨论

楼上几位说得都对,总结一下

静态功耗: 非关键路径HVTcell替换 coarsegrain,finegrain,powershutdown 减少decap_cell 散热降温

动态功耗:降压 powerisland DVSF 非关键路径HVTcell替换 clockgating memorysplit signalgating

transitiontime约束 减小高速信号的走线长度

降低静态功耗:1、在非关键路径上用

Hvt的cell替换Lvt

的cell;2、降低信号的翻转时间,即

transition;3、降低电源电压;降低动态功耗:

1、采用始终门控单元;

2、降低电压,采用多阈值电压,动态电压缩放技术;

3、减少

decap_cell的数量;4、降低走线的长度;

5、前端代码优化;@@42、HowdoyoudesignPADring?

如何设计 PADring?

难度:3

(又是一道比较邪恶的题目)

大的流程是:

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

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

3)加其他的PAD,比如IOfiller,powercut,poweroncontrol,cornerPAD,ESD等

细节可以包括:

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

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

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

4)poweroncontrolPAD,一段每个IOring需要一个

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

@@43、Inhierarchicaldesignflow,explainblocklevelpinplacementflow?Whatareparameterstodecide?

hierarchical流程中,如何确定block的pin(位置,金属层)?难度:3

答案:

在top-down流程中位置 :主要是看与该block相关的其它block(如ANALOG 等)的interface,一般相关的PIN/PORT要比

较近,同时也尽量不要使PIN被block内部的memory(一般放在block的boundary处)等挡到金属层:也要看相关的其它block的PIN/PORT所出的金属层,尽量用一致的,同时不用M7.M8等一般用来走power的金属层,当然M1也不用encounter(ICC也应该是同样的道理)用

flatten的

trialroute来决定

blockpin

的位置和金属层。当然,你可以事先指定,也可以事后修改在

bottom-up流程中,主要是人为的规定了@@44、Whatdoesx-talkreportscontain?Howdoyouusethosereportstoimprovethedesign?分析X-talk后都输出哪些报告和结果?如何利用这些结果改善设计?难度:3

答案:X-talk的分析结果中,至少要包含X-talkglitch和X-talkdelay的报告和数据,可以把glitch报告读回到P&Rtool里面,让tool自动解决这些问题,也可以手动,详细请参考每日一题(003)

X-talkdelay就是incrementaldelay,反标回网表中以后,再做一次时序优化

@@45、ExplainfunctionanddifferenceofMuxedFF(MultiplexedFlipFlop)/scanFF(withscan_inandscan_eninputpins).

解释MuxedFF和scanFF的异同

难度:2

答案:

ScanFF是MuxFF的子集。ScanDFF从功能上讲,就是 Mux+FF

但是一般2者不混用,因为在输入端的时序要求大不一样

想问的是 scanFF的内部结构以及时序特点

@@46、Inlogicequivalencechecking,howdoyouhandlescan_ensignal?

LEC中如何处理 scan_en端?

难度:3

答案:

如果有scanchainreorder,disablescan_en

如果没有,enablescan_en

@@47、whyoptimizeleakagepoweraftertimingclosure?What'shappenifdoingitwithsetup

violation?(在P&R中)为什么优化静态功耗要在时序收敛之后做?在有 setup违反时做的话,会怎

么样?难度:3

答案:

优化静态功耗主要是通过换 HVT的CELL的方法来做吧。在有 setup违反时做自然会使已经违反 setup的路径变得更差

更难收敛。这里应该先考虑满足 timing,再尽可能降低power

@@48、Doesastandardcellleakagepowerdependonitsinputpatten?

标准单元的 leakage功耗与其输入端的状态有关吗?不考虑 inputpinopen的情况

难度:2

答案:

有影响的。根据衬底偏置效应,阈值电压与 Vbs有关。对于nmos来说,一般B级电平固定接地。s级电平越高,阈值

电压越小。相应漏电流越大。

@@49、IfyouhavebothIRdropandcongestionhowwillyoufixit?

如果设计中既有 IR-drop的问题,又有 congestion的问题,你如何解决?

难度:3

答案:

如果说的是同一块区域即有 IR又有congestion的话,把这块区域的 cell密度降低一点就可以了吧

Chiputilizationdependson___.

Onlyonstandardcells

Standardcellsandmacros

Onlyonmacros

StandardcellsmacrosandIOpads

2)InSoftblockages____cellsareplaced.

a.Onlysequentialcells

b.Nocells

c.OnlyBuffersandInverters

d.Anycells

Whywehavetoremovescanchainsbeforeplacement?

Becausescanchainsaregroupofflipflop

Itdoesnothavetimingcriticalpath

ItisseriesofflipflopconnectedinFIFO

None

Delaybetweenshortestpathandlongestpathintheclockiscalled____.

a.Usefulskew

b.Localskew

c.Globalskew

d.Slack

Crosstalkcanbeavoidedby___.

Decreasingthespacingbetweenthemetallayers

Shieldingthenets

Usinglowermetallayers

Usinglongnets

Preroutingmeansroutingof_____.

a.Clocknets

b.Signalnets

c.IOnets

d.thenetwithspecialrequirement

7)WhichofthefollowingmetallayerhasMaximumresistance?

Metal1

Metal2

Metal3

Metal4

WhatisthemajorgoalofCTS?

MinimumIRDrop

MinimumEM

MinimumSkew

MinimumSlack

UsuallyHoldisfixed___.

a.BeforePlacement

b.AfterPlacement

c.BeforeCTS

d.AfterCTS

10)Toachievebettertiming____cellsareplacedinthecriticalpath.

HVT

LVT

RVT

SVT

Leakagepowerisinverselyproportionalto___.

Frequency

LoadCapacitance

Supplyvoltage

ThresholdVoltage

Regularfillercellsareadded___.

a.BeforePlacementofstdcells

b.AfterPlacementofStdCells

c.BeforeFloorplanning

d.BeforeDetailRouting

SearchandRepairisusedfor___.

ReducingIRDrop

ReducingDRC

c.ReducingEMviolations

d.None

14)Maximumcurrentdensityofametalisavailablein___.

a..lib

b..v

c..tf

d..sdc

MoreIRdropisdueto___.

Increaseinmetalwidth

Increaseinmetallength

Decreaseinmetallength

Lotofmetallayers

Theminimumheightandwidthacellcanoccupyinthedesigniscalledas

___.

a.UnitTilecell

b.Multiheightencell

c.LVTcell

d.HVTcell

CRPRstandsfor___.

CellConvergencePessimismRemoval

CellConverge

温馨提示

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

评论

0/150

提交评论