2023年IC行业收藏数字后端面试问题_第1页
2023年IC行业收藏数字后端面试问题_第2页
2023年IC行业收藏数字后端面试问题_第3页
2023年IC行业收藏数字后端面试问题_第4页
2023年IC行业收藏数字后端面试问题_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

IC行业收藏:数字后端面试问题zz

(2023-05-0813:06:07)HYPERLINK"javascript:;"转载▼分类:

HYPERLINK"http://blog.si/s/articlelist__1_1.html"\t"_blank"硬件

HYPERLINK""数字后端面试问题分类:

HYPERLINK""IC设计2023-08-3115:51

2251人阅读

评论(0)

收藏

举报HYPERLINK""\t"_blank"面试HYPERLINK""\t"_blank"transitionHYPERLINK""\t"_blank"delayHYPERLINK""pathHYPERLINK""\t"_blank"treeHYPERLINK""\t"_blank"function目录(?)HYPERLINK""\o"展开"[+]1.1EETOP版主面试问题001)Whypowerstripesroutedinthetopmetallayers?ﻫ为什么电源走线选用最上面的金属层?由于顶层金属通常比较厚,可以通过较大的电流1.高层更适合globalrouting.低层使用率比较高,用来做power的话会占用一些有用的资源,

比如stdcell

通常是m1Pin

。ﻫ2.EM能力不同样,一般顶层是低层的2~3倍。更适合电源布线。ﻫ3.一般ip占用的层次都靠近下几层,假如上层没有被严禁routing的话,toplayer

可以穿越,低层是不也许的,并且高层对下层的noise影响也小很多。

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

(感觉这个问题比较弱智,但是号称是intel的面试问题,晕!我憧憬和向往的圣地啊!!!)为了节省布线资源---重要因素横竖的两根线之间的耦合系数最小,信号干扰小003)Howtofixx-talkviolation?ﻫ如何解决线间干扰?答案:

1)upsizevictimnetdriver,downsizeaggressornetdriver

2)increasewirespace,shielding,changelayer,changewirewidth

3)insertbutterinvictimnet

能答出以上3条的,在工作中已经基本够用,但是尚有两个不常用到的,是AMD的一个大牛告诉我的。ﻫﻫ4)把与victimnet相连的输入端改成Hi-Vth的单元

5)改变信号的timingwindow。这个不易做到,但是也是解决方法

004)Whatareseveralfactorstoimprovepropagationdelayofstandardcell?

哪些因素可以影响标准单元的延迟?答案:

1)

PVT

2)inputtransition,

outputload

3)Vth

005)Whatwouldyoudoinordertonotusecertaincellsfromthelibrary?ﻫ如何严禁使用库里面的某些单元?禁用就用set_dont_use严禁修改就用set_dont_touch

006)Duringthesynthesis,whattypeofwireloadmodelareoftenused?ﻫ做RTL综合时,经常使用的wireloadmodel有哪几种?答案:

1)zerowireloadmodelﻫ2)基于fanout的传统

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

附加问题:ﻫWhattypesofdelaymodelareusedindigitaldesign?(数字IC设计中有多少种类型的delaymodel)

ﻫ答案:ﻫNLDM

CCS

ECSM

尚有一个现在基本不用了的—LDM

007)HowdelaysarecharacterizedusingWLM(WireLoadModel)?

使用一般的WLM

(不是zeroWLM,也不是按照物理位置算的DCT),DC是如何计算delay的?答案:ﻫDC在计算延时的时候,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的延时。

008)Therearesourceclockclka(create_clock),andgeneratedclockclkbbyclka.

Inpre-CTSnetlist,thereisnetworklatencyinclka,howthislatencypropagatestoclkb?

Inpost-CTSnetlist,Whatyouneedtodoforthisnetworklatency?ﻫ

假设有两个时钟,原始为clka,生成的时钟为clkb,ﻫ在没有时钟树的网表中,clka的networklatency会自动传递到clkb上吗?clkb的latency如何描述?ﻫ在生成时钟树的网表中,如何解决networklatency?clkb的latency又如何描述?答案:ﻫ在pre-CTS时,clka的networklatency会自动传到clkb上

在post-CTS时,可以把networklatency去掉,通过set_propagated_clock命令,让工具根据clocktree去计算实际的clocknetworklatency

009)Therearesourceclockclka(create_clock),andgeneratedclockclkbbyclka.howdoyouspecifytheminCTSspecfile?Assumethereisrealtimingpathbetweenclkaandclkb.ﻫclkb是clka的生成时钟,在CTS的spec文献中如何定义这两个时钟?假设clka和clkb之间的FF有时序收敛的规定。ﻫ难度:3ﻫ

答案:ﻫ在CTS的spec文献中定义

clka

root,clkb

throughpin,再加上那些应当有的skew,transition,insertiondelay等就好了,其它的事CTS会给你做

010)assumeinpre-CTSSDC,clockuncertaintyforsetupcontainsplljitter+clocktreeskew.Howdoyousetclockuncertaintyforhold,andhowtomodifyittopost-CTSsdc?ﻫ假设在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

011)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无法解决时,可以考虑切掉部分powermesh

012)Howdoyougetbetterskew/insertiondelaysinCTS(ClockTreeSynthesis)?ﻫ如何得到更好的时钟树skew和insertiondelay

难度:4答案:

clockmesh

是一种方法。

ﻫ假如是用普通的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走线完毕

013)Ifgivingtotalstandardcellgatecount,allmemorymacrolistincludingmemorytype,bitwidthanddepth,allothermacrowithrealsize,andIOtypeandtotalnumber.Howdoyouestimatethediesize?ﻫﻫ假如告诉你标准单元的门数,所有内存的类型和逻辑大小,其他IP的实际大小,以及IOcell的种类和数量,你如何估算整个芯片的面积?ﻫ

难度:3ﻫ

答案:

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的面积)/utilization

utilization与使用的金属层数和设计的用途有关,简朴地计算方法是ﻫ5层metal:50%ﻫ6层metal:60%

7层metal:70%

8层metal:80%ﻫ以上不涉及power专用的金属层

假如设计是多媒体芯片,一般可以增长3~5%utilizaion,假如是网络芯片,则要减少3~5%

014)whatsandconsofusingbufferandinvtersinCTS?

CTS中使用buffer和inverter的优缺陷是什么?答案:ﻫ使用BUF:

优点:逻辑简朴,便于post-CTS对时钟树的修改ﻫ缺陷:面积大,功耗大,insertiondelay大

使用INV:ﻫ优点:面积小,功耗小,insertiondelay小,对时钟dutycycle有利ﻫ缺陷:不易做时钟树的修改

015)Ifgivingtwophysicaldiesasbelow,andaskyouselectoneofthem.Howdoyoupickitup?explainthereasonplease.ﻫ(1)

width=2xheightﻫ(2)height=2xwidthﻫ假如从下面的两个芯片中选一个给你做后端设计,你选哪个?请说明选择的理由?

(1)

=2倍的长

(2)

=2倍的宽答案:

去除不太好用的layer(比如metal1)和power专用layer(比如RDL)后,比较剩下的layer可以提供的H和V的routingresource,假如H的多,就选宽的,反之,就选高的。

016)ifthedesignisIOlimited,howtoreducethediesize?ﻫ由于IO太多而导致芯片面积过大,有什么方法减小面积?答案:ﻫ1)staggerIO,2重io

可以算一个方法

2)IO可以不全放到四边,只要封装没问题就行啦

--flipchip

算第二个方法ﻫ3)假如有多套IOcell可以选择,尽量选瘦的ﻫ4)调整芯片的长宽比

017)givingtheschematicanddelayinattachedpicture,calculatetheWCsetupslackatDpinofF2,andBCholdslackatDpinofF4

如图所示电路,时钟和延迟,计算到F2输入端D的setupslack,到F4输入端D的holdslack答案:ﻫ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

018)usingthesamelogicasquestion#17,consideringOCVonclockpathonly,whichclockbufferwillbeusedforOCVderatingcalculationandwhichclockbufferwillnot(a.k.a.CPPR)?

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

答案:

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。

019)continuefromquestion#18.BecausethereisCPPR,theOCVderatingonclockpathC1andC2arecanceled.Nowgivingincrementaldelaycausedbyx-talkbetweenC1andC2.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ﻫb)0.0005

c)0.00075

d)0.0245ﻫ

2)在计算BChold时,是ﻫa)0ﻫb)0.001ﻫc)0.0015

d)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都可以抵消掉

020)ExplainECO(EngineeringChangeOrder)methodology.ﻫ说一下ECO的流程

难度:2ﻫﻫ答案:ﻫ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

021)ctsWhatdoyouwriteinCTSspecfile?ﻫCTSspec

文献中一般包含哪些内容?

答案:ﻫ(以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

hroughpinthroughport

ﻫclkgroupﻫmacromodelpin

22)congestionIftherearetoomanypinsofthelogiccellsinoneplacewithincore,whatkindofissueswouldyoufaceandhowwillyouresolve?假如在core里面某一块有太多的标准单元的pin,有也许出现什么place&route的问题,如何解决?答案:1)严禁使用pin太多的cell2)减小utilization,方法很多3)看vh

可用资源,适当调整moudle

形状

23)IfthereareDRC

(spacing,short),holdandsetupviolationsinthedesign,youdon'thaveenoughtimetofixallofthembeforetapeout,whichoneyouwillfixfirst,whichoneyoucanleaveitasis?Why?

假如设计中有DRC(特指spacing和short),hold和setup违反,tapeout之前,你已经没有时间去修改所有这些违反,那么你一方面修改哪个?哪个可以不管?请说明理由。

答案:1)short,spacing2)hold3)

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

24)SDC-multicyclehowtosetmulticyclepathconstraint?

如何设定multicyclepath?提醒:在一般情况下,multicycle-setup

-hold要成对使用答案:clockdomain:fast-slow:set_multicycle_pathnum-setup-fromclk1-toclk2-start

set_multicycle_pathnum-1-hold-fromclk1-toclk2-startslow-fast:set_multicycle_pahtnum-setup-fromclk2-toclk1-end

set_multicycle_pathnum-1-hole-fromclk2-toclk1-end

datapath:set_multicycle_pathnum-setup-fromdata1-todata2set_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)SDChowaretimingconstraintsdeveloped,suchasclock,generatedclock,IOtiming,exception?Whatbackendteamcontributetoit?

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

multicyclepath是如何得到的?在完毕时序约束的过程中,后端可以给予什么样的帮助?答案:

clock和generatedclock一般由设计spec决定。除非有些个别的localgeneratedclock可以有前端工程师自己添加ﻫIOtiming与系统设计有关,应当参考/兼顾其他芯片的IO时序,由前端工程师作出ﻫexception(falsepath,

multicyclepath)一般是由前端工程师在做设计时决定的后端可以提供clocknetworkdelay/skew,DRV,以及帮助检查SDC是否合格

26)FLOWInregularbackendflowwithonlyonefunctionalmodeSDC,pleaseexplaintimingclosuremethodology/issue/fixesinpre-CTS,post-CTSandpost-Routestages.ﻫ

在只有一个functionSDC的普通后端流程中,对于pre-CTS,post-CTS

post-Route这三步,请分别讲述它们在时序收敛上的方法,一般会碰到的问题和解决方法。

答案:

ﻫpre-CTS时,使用idealclock,只fixsetupﻫpost-CTS后,使用propagateclock,可以只fixsetup,检查hold,但可以不fixholdﻫpost-Route后,仍然使用propagateclock,fixsetup和holdﻫﻫ具体碰到的问题和解决方法:ﻫpre-CTS:

假如有setup,重在调整floorplan,buffertree结构ﻫPost-CTS:

假如有setup,重在调整clocktree,buffertree结构或者sizeﻫPost-Route:

假如有setup/hold,微调clocktree/buffertree的size,routingchannel和图层,实在不行,回到CTS

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

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

很多inter-clockpathviolation都是由于没有balance好导致的

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

postRoute重要是SI

影响,timing

会变差些,

可以做postroute

opt来修复回来,减少下crosstalk的影响,

27)FLOWContinuefrompreviousquestion,ifaddingonemoreDFTtimingconstraint,howdoyouhandlethemultipleSDC?UsingEncounterorICCcommands,pleaseexplainthedetailwhatyoudo.ﻫ

继续#26的问题,假如再给一个DFT时序约束,在后端流程中,你如何解决多个SDC?假设使用Encounter或者ICC,请具体介绍如何设立

答案:简朴地说就是使用MMMC。

在Encounter里面,要逐步定义,create_library_setcreate_op_condcreate_rc_cornercreate_delay_cornercreatePowerDomaincreate_constraint_modecreate_analysis_viewset_default_viewset_timing_derate

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

28)CTSTherearefunctionSDCwithmultipleclockdomainandscanSDCwithanindividualscanclock.Assumethosefunctionalclockareun-balanced,howdoyoubalancethescanclock?

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

答案:ﻫﻫ假如CTS支持multi-mode,直接使用即可。ﻫ假如不支持,或者MMCTS效果不抱负,就是在CTSspec中,同时定义function

DFT

的时钟,然后在scanclock里面,把MUX设为leavepin,再让它们与functionclok到MUX的延迟做动态平衡

29)SDCTherearefunctionSDC,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下的时序

答案:这个要从每个SDC的特点着手,个人经验,与设计有关,不敢保证使用与所有设计。1)scanshift:速度很慢,不用太紧张setup,但是hold很重要,一旦hold有问题,所有与scan有关的测试全泡汤2)scancapture:也是慢速,但是会有很多hold出来,特别是在不同的function时钟之间3)scanat-speed:高速,解决了它的setup,其他DFT的setup基本上就连带着解决了4)mbistat-speed:高速,但是涉及的逻辑不多5)jtag:慢速,很容易与functionSDC合并

所有结论是MMMCsetup:function+scanat-speedMMMCHold:function(+jtag)

+scanshift+scancapture

30)STAExplainSDFandSPEFbackannotationtimingcorrelationissue,

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

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

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

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

31)Thereare4powersuppliesinthedesign.VDD1/2/3aredifferentvoltage.VDD1isalwayson,butVDD2andVDD3canbeturnoffandon.VDD2toblockBandblockCdon'tswitchatsametime.Pleasefillintheblankneedstobeaddedlevelshifterand/orisolationcell.IfyouthinkLevelshifter/isolationcellshouldbeaddedinnetABatBside,thenwriteB;ifyouthinkit'snotnecessary,writeX.

如图,一个设计中有4个电源,VDD1/2/3的电压各不相同,VDD1总是开着,其他会有开和关,并且到模块B的VDD2和到模块C的VDD2有各自分别的开关。请判断在连接这4个模块的8条net上,哪些需要levelshifter,哪些需要ioslationcell,把结果填入右边的表中。

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

�������+31

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

答案:

在第一次做完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散热降温

动态功耗:降压powerislandDVSF非关键途径HVTcell

替换clockgatingmemorysplitsignalgatingtransitiontime

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

42)如何设计PADring?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,反标回网表中以后,再做一次时序优化

78)Caninputpinfloating(openning)?Canoutputfloating?why?

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

难度:2

答案:

输入端不行,输出端可以输入悬空会由于周边电场的变化而引起cell内部的翻转,继而影响到其他的逻辑的对的性

77)WhatareRTL,Gate,MetalandFIBfixes?

难度:

3

答案:就是tapeout

后的修改,rtl

级别的修改,很大了gatelevel:要动baselayer,metalfix:只动metal,不动baseFIBfix:

focusionbeam,聚焦离子束,

常用于修改金属连接

,就像动手术同样

76)WhatisScan,memBIST,andlogicBIST?usuallywhatpercentageoftestcoverageofsuck-atrequested?what%ofat-speedtransitiontest?

什么是Scan,

memBIST和logicBIST?通常suck-at和at-speedtransition测试的coverage规定多高?

难度:1

答案:

跳过名词解释suck-atcoverage

一般要98%以上at-speedtransition

也许会规定到75%

75)WhatisaSoC(SystemOnChip),ASIC,"fullcustomchip",andanFPGA?givingexamples?

举例说明什么是SoC,

ASIC"fullcustomchip"和

FPGA?

难度:

1

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

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

难度:4

(不容易答全了)

答案:

从电源布线的角度讲,那些远离电源端的地方,电源布线少的地方,容易出现ir-drop的问题。比如wirebond芯片的中间,flipchip的四角,analogmacro的边上(由于有些analog的上面不允许数字电源布线)

从swtichingactivity的角度讲,togglerate高并且celldensiy高的地方IRdrop大,所以牢记不要为了balanceclocktree,把一堆clockbuffer摆在一起。假如是静态IRdrop,频率高的地方IRdrop大。那么对于动态IRdrop,一定是频率高的地方IRdrop大吗?

73)Howslowandfasttransitionatinputseffecttiming,

gatecount,

andpower?

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

难度:3

答案:对timing的影响:slowtransition使得速度变慢,fasttransition使得速度变快对power的影响:slowtransition时功耗增大,fast时功耗减小对gatecount的影响:要分以下2种情况,(1)假如整体的transition规定较高,slowtransition会增长gatecount;(2)假如整体的transition规定不高,inputtransition对gatecount没有大的影响

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

72)Iftheroutingcongestionexistsbetweentwomacros,thenwhatwillyoudo?

假如2个macro之间有走线拥堵的话,该如何解决?

难度:2

答案:

1)增大macro之间的间距2)在macro之间加non-bufferplacementblockage

加partialblockage控制channel里面的celldensity3)调查那些congestion是如何导致的,改变floorplan,引导工具不要从macro中间走线

71)Whatiscloningandbuffering?wherewewilluseit?

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

难度:3

答案:cloning是在有多个sink的情况下,不改变逻辑功能把当前cell复制一份,分别驱动下一级的cell,这样可以减少当前单元的负载,从而获得更好的时序,有时是为了placement的考虑,譬如几个sink的方向不同,缺陷是会增长上一级的负载buffering是在不改变信号的情况下对信号再生,提高它的驱动能力,通常是两级反相器构成,可以提高电路的运营速度,有时也用来当延时单元,特点是不会增长上一级的负载在多个sink的时序都比较紧的情况下适合用cloning,假如sink对timing的规定区别挺大的,可以用buffering,一部分时序较紧的由上一级直接驱动,剩下的可以加一级buffer后驱动

70)WhatisdifferencebetweenHFNbuffertreeandCTS?

大扇出net的buffertree和CTS在时序和做法上的区别

难度:3

答案:

buffertree和clocktree的共同点是它们都是解决highfanoutnet的问题,只但是规定不同而已。buffertree规定满足maxtrans/fanout/cap,有时还要满足setup/holdtimingclocktree不仅要满足上面的所有规定,尚有skew,max/minlatency的规定

做法上大不相同,一般,buffertree在时序优化时自动就做了

(以后别再问怎么用CTS来做resettree了)clocktree有专门的命令,由于它的做法与datapath的做法太不同样了

69)WhatisLEF?whatit'sdifferencewithGDS?

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

难度:2

答案:

LEF是一种简化版的GDS,它只涉及size和metal层有关的信息,比如pin,blockage等,其他baselayer的东西只在GDS里面可以看到。同时LEF尚有一些GDS里面没有的信息,比如,metal的R,C,routingandplacementrule等

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

68)Whatcorner-IOcontains?

corner-IO

里面有什么?

难度:2

答案:

corneriopad除了

能保证

两边的

连线连接,

尚有

1)

dummybondpad

为了减小封装的难度和减小一些应力的效益

(不是必须的)因此cornerpad两端最佳空一些距离

来bondwire,封装,否则封装有一定的难度,容易出问题,

2)

dummypoly

也是减小机械等效益,有一些ACtive,

SP区域,不知道干啥的

67)Whatismeantof9track,12trackstandardcells?

对标准单元所说的9track和12track是什么意思?(同一种工艺下)这两种单元有什么区别?

难度:3

答案:

一般sitewidth就是metal2pitch,比如SMIC18

0.56x5.04,

0.56

就是metal2pitch,由于stdcellpin基本上都是由metal2连接出来的,

高度

一般都是

sitewidth的整数倍,比如7,

8,

9

,10

,12

倍,也就叫做7/8/9/10/12track单元,比如

0.56x5.04

的就是9track,

0.56x

3.92

的就是

7track,0.2x

2.4(SMIC65)

是12track,

0.2x1.8(TSMC65)

是9track,

区别重要是:1)带不带tap

(n/pwellpickup),但是也不是绝对的,比如SMIC18

sc-x9track带tap,

sc-m

7track不带tap,不带tap的要用tapcell来偏置电位,但是比如

TSMC40nm的

12trackTCBNBWP12T,也不带tap,

TSMC65

tcbn65bwp

9track

tap,

2)一般来说9track是

属于标准size,

7track属于小size,也就是低功耗一些,速度慢些,10、12track

是高速,

一般

metal1的rail做的更宽,管子仿佛没啥区别,

rail做的宽自然能走更多的电流,自然速度就快了,

功耗大了,有的还添加metal2rail比如65nm以下的库,

这样速度更快了,

选几个track

是由设计目的决定的,假如简朴些

,就选9track标准带tap的,

比较方便低功耗选7track,timing不够就选12track的,

ARM的9track叫sage-x,

7track叫metro,

12track叫POP

(performanceoptimizationpackets),

66)detailexplainwhatisthedifferencebetweenLECandsimulation?

具体解释形式验证和仿真的异同

难度:2

答案:

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

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

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

65)

时钟走线一般用那层金属问题由szp9912收集提供,特此感谢!

Whichlayerisusedforclockroutingandwhy?

时钟走线一般用那层金属,为什么?

难度:3

答案:

这是一个可以挖得比较深的问题,让我们先从各层metal的特性说起,假设共有8层金属层最底层M1/2一般很薄,走线宽度最小,RC一般最大,并且会被cell的pin占去很多资源,肯定不适合做clockwire。最高1/2层M7/8一般很厚,走线宽度大,RC很小,适合大驱动的clockbuffer走线。假如是用铜做金属层的话,最上面还会有一层极厚的铝金属层,一般不用做信号线的走线。中间几层M3/4/5/6的厚度,宽度都适中,假如使用doublewidth,doublespace的走线的话,RC也比较小,也可以做clockwire。

假如考虑到VIA增长的电阻,一味地使用最高层不一定会得到最快的clocktree。但是一般信号走线大多是先用下层的金属,所以建议根据各层的RC和整个设计的congestion来选择clockwire的层数。

假如最高1/2层M7/8的RC远小于中间几层M3/4/5/6的RC,就选最高1/2层假如最高1/2层M7/8的RC与中间几层M3/4/5/6的RC相差不大,在很拥堵时,还是选最高1/2层;不太拥堵时,选中间几层里面的高层M5/6;主线没有拥堵时,用中间层里面的底层M3/4

64)本帖资料由

szp9912

收集提供,特此感谢,

WhyclockisnotsynthesizedinDC?whyhighfanoutnet,suchasreset,isnotsynthesizedinDC?

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

难度:2

答案:

由于clocktree与leafpin的物理位置密切相关,DC没有这些个信息,做了也不准,所以就不做了。也是由于后端知道DC给的clcoktree主线不准,所以一旦碰到,就直接删除

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

63)Howtocalculategatecount?如何计算gatecount?

难度:1

答案:

以前比较确切地定义是4个transistor为一个gate,计算整个设计的gatecount时,应当先算出(所有standardcell的总面积),再除以(4个transistor的面积)。注意,各种RAM,PLL,ADC,DAC等macro不能算在总面积里

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

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

62)ThetimingreportiscreatedinPTformat.The

温馨提示

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

评论

0/150

提交评论