以下三个是最经常被问到的,基本上属于介绍性的题目,无所谓正确答案,在我看来,这些不算真正的问题。Discussabouttheprojectsworkedinthepreviouscompany.介绍一下你在公司里做过的项目Whatarephysicaldesignflows,variousactivitiesyouareinvolved?介绍一下你们的后端流程(假设是从gatelevelnetlist开始的),你负责哪一部分?Designcomplexity,capacity,frequency,processtechnologies,blocksizeyouhandled.芯片的工艺,面积,standardcell的gatecount,FF的个数,memorymacro的个数,时钟频率,时钟个数,是hierarchy还是flattenflow,如果是flattenflow,分成几个block下面是第一个真正的问题:1、Whypowerstripesroutedinthetopmetallayers?为什么电源走线选用最上面的金属层?难度:1难度指数:1:常识--无论是否有工作经验,都应该准确回答2:简单--只要做过一点后端的设计,就应该明白3:一般--有实际工作经验一年左右,做过2个以上真正的设计,应该可以答上来4:较难--在这个特定的领域有较多的研究,并积累了一定的经验5:很难--基本上是专家级的牛人了!答案:1)高金属层的IR比较小,EM能力大2)底层被IP,标准单元用的机会更大2、WhydoyouusealternateroutingapproachHVH/VHV(Horizontal-Vertical-Horizontal/Vertical-Horizontal-Vertical)?为什么要使用横竖交替的走线方式?(感觉这个问题比较弱智,但是号称是intel的面试问题,晕!我憧憬和向往的圣地啊!!!)难度:1答案:最有效地利用走线资源3、Howtofixx-talkviolation?如何解决线间干扰?难度:4(关于难度的定义,在第一题里面)(应该至少有5大类解决办法,wirespacing,shielding,changelayer之类的只算其中1类)答案:1)upsizevictimnetdriver,downsizeaggressornetdriver2)increasewirespace,shielding,changelayer,changewirewidth3)insertbutterinvictimnet能答出以上3条的,在工作中已经基本够用,但是还有两个不常用到的,是AMD的一个大牛告诉我的。4)把与victimnet相连的输入端改成Hi-Vth的单元5)改变信号的timingwindow。这个不易做到,但是也是解决方法4、Whatareseveralfactorstoimprovepropagationdelayofstandardcell?哪些因素可以影响标准单元的延迟?难度:3答案:1)PVT2)inputtransition,outputload3)Vth5、Whatwouldyoudoinordertonotusecertaincellsfromthelibrary?如何禁止使用库里面的某些单元?难度:1答案:set_dont_useset_dont_touch6、Duringthesynthesis,whattypeofwireloadmodelareoftenused?做RTL综合时,经常使用的wireloadmodel有哪几种?难度:2注意:问题是wireloadmodel,不是wireloadmode,也不是delaymodel答案:1)zerowireloadmodel2)基于fanout的传统WLM3)基于物理位置(距离)的wireloadmodel,在Cadence的RC中叫PLE,Synopsys叫DCUltraTopographical附加问题:Whattypesofdelaymodelareusedindigitaldesign?(数字IC设计中有多少种类型的delaymodel)答案:NLDMCCSECSM还有一个现在基本不用了的—LDM7、HowdelaysarecharacterizedusingWLM(WireLoadModel)?使用一般的WLM(不是zeroWLM,也不是按照物理位置算的DCT),DC是如何计算delay的?难度:2答案: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的延时。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去计算实际的clocknetworklatency9、Therearesourceclockclka(create_clock),andgeneratedclockclkbbyclka.howdoyouspecifytheminCTSspecfile?Assumethereisrealtimingpathbetweenclkaandclkb.clkb是clka的生成时钟,在CTS的spec文件中如何定义这两个时钟?假设clka和clkb之间的FF有时序收敛的要求。难度:3答案:在CTS的spec文件中定义clka是root,clkb为throughpin,再加上那些应该有的skew,transition,insertiondelay等就好了,其它的事CTS会给你做10、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+clocktreeskewhold的clockuncertainty=clocktreeskew2)post-CTS,setup的clockuncertainty=PLLjitterhold的clockuncertainty=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无法解决时,可以考虑切掉部分powermesh12、Howdoyougetbetterskew/insertiondelaysinCTS(ClockTreeSynthesis)?如何得到更好的时钟树skew和insertiondelay难度:4答案:clockmesh是一种方法。如果是用普通的CTS的方法,可以从下面几个方面着手。不太可能一次就把CTS做得很好,要反复调试各种参数,达到最佳效果。1)合理的clockroot和throughpin。这个看似CTS会从SDC自动抓出来,但是并不一定是最好的,特别是多个clock相互有重叠的leafpin时,要特别注意2)不要用太大或者太小的clockbuf/inv3)选用RC最小的金属层。如果上面RC最小的金属层已经被占用,比如RC最小的top,top-1已经不够clocknet时,而top-2到layer2都是一样的RC时,可以选用layer3/4。为什么不用更高层哪?因为这样既照顾了layer2/1的pin,有不用太多的via到更高层4)如果用doublewidthclockwire,可以适当增大clockbuf/inv的size5)合理的maxfanout。有时clockbuf/inv的fanout可以超过max_fanout的限制6)不要把skew设得太小7)min_insertion_delay=0ns8)合理的transitiontime,不要太小9)使用postCTS的CTSopt10)做clocktree时,就直接把clocknet走线完成13、Ifgivingtotalstan