陈涛后端面试总结 下载本文

内容发布更新时间 : 2024/12/23 11:10:48星期一 下面是文章的全部内容请认真阅读。

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

Why power stripes routed in the top metal layers? 为什么电源走线选用最上面的金属层? 难度:1

1.高层更适合global routing.低层使用率比较高,用来做power的话会占用一些有用的资源, 比如std cell 通常是m1 Pin 。

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

3.一般ip占用的层次都靠近下几层,如果上层没有被禁止routing的话,top layer 可以穿越,低层是不可能的,并且高层对下层的noise影响也小很多。

@@2、Why do you use alternate routing approach HVH/VHV (Horizontal-Vertical-Horizontal/ Vertical-Horizontal-Vertical)? 为什么要使用横竖交替的走线方式? (感觉这个问题比较弱智,但是号称是intel的面试问题,晕!我憧憬和向往的圣地啊!!!) 难度:1

老是简单的问题比较无趣,问一个貌似简单,但是不容易回答完整的 1.有效利用布线资源,更利于布线 2.线间干扰最小

@@3、How to fix x-talk violation? 如何解决线间干扰?

难度:4 (关于难度的定义,在第一题里面)

(应该至少有5大类解决办法,wire spacing, shielding, change layer之类的只算其中1类) 1.增加受害网络的驱动能力upsize victim driver减小侵害网络的驱动能力 2.Double witch ,double spacing,wire shileding 3.Insert buf in victim net

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

@@4、What are several factors to improve propagation delay of standard cell? 哪些因素可以影响标准单元的延迟?难度:3

答案应该包括 1) PVT

2)input transition, output load 3)Vth

@@5、What would you do in order to not use certain cells from the library?如何禁止使用库里面的某些单元?难度:1

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

@@6、During the synthesis, what type of wire load model are often used? 做RTL综合时,经常使用的wire load model有哪几种?难度:2

注意:问题是wire load model,不是wire load mode,也不是delay model 答案:

1)zero wire load model 2)基于fanout的传统 WLM

3)基于物理位置(距离)的wire load model,在Cadence的RC中叫PLE,Synopsys叫DC Ultra Topographical 附加问题:

What types of delay model are used in digital design? (数字IC设计中有多少种类型的delay model)

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

@@7、How delays are characterized using WLM (Wire Load Model)?使用一般的WLM (不是zero WLM,也不是按照物理位置算的DCT),DC是如何计算delay的?难度:2

DC在计算延时的时候,net的rc就要根据所选取的wrie load model来计算, 计算时和输出的fanout决定 以smic13的smic13_wl10为例 wire_load(\ 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、There are source clock clka (create_clock), and generated clock clkb by clka. In pre-CTS netlist, there is network latency in clka, how this latency propagates to clkb? In post-CTS netlist, What you need to do for this network latency? 假设有两个时钟,原始为clka,生成的时钟为clkb,

在没有时钟树的网表中,clka的network latency会自动传递到clkb上吗?clkb的latency如何描述?

在生成时钟树的网表中,如何处理network latency? clkb的latency又如何描述?难度:3

答案:

在pre-CTS时,clka的network latency会自动传到clkb上在post-CTS时,可以

把network

latency去掉,通过set_propagated_clock命令,让工具根据clock tree去计算实际

的clock network latency

@@9、There are source clock clka (create_clock), and generated clock clkb by clka. how do

you

specify them in CTS spec file? Assume there is real timing path between clka and clkb. clkb是clka的生成时钟,在CTS的spec文件中如何定义这两个时钟?假设clka和clkb 间的FF有时序收敛的要求。难度:3

答案:

CTS的spec文件中定义 clka 是 root,clkb 为 through pin,再加上那些应该有

的skew

transition,insertion delay等就好了,其它的事CTS会给你做

@@10、假设在pre-CTS的时序约束中,setup的clock uncertainty是由PLL jitter和clock

tree

skew两部分组成,那么

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

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

2

答案:1) pre-CTS,

setup的clock uncertainty = PLL jitter + clock tree skew hold的clock uncertainty = clock tree skew 2) post-CTS,

setup的clock uncertainty = PLL jitter hold的clock uncertainty = 0

@@11、What are various techniques to resolve routing congestion? 请详细解释解决走线阻塞的问题难度:4

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

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

列举出来,就已经够4级的水平啦

答案:

1)阻塞在RAM(macro)之间:可能RAM之间的距离没有计算正确,可以加大RAM之间的间距;扭转RAM的方向,使得RAM的IO pin朝向更容易走线的那边;如果是多个RAM共用地址或者数据线,尽量把RAM的地址数据pin对齐 2)阻塞出现在RAM和帮助单元交界的地方:在RAM周围加一条halo(keepout);把RAM放在四周,尽量把中间留下的空间变成方形;在有阻塞的地方加一些由小的placement blockage组成的矩阵

3)阻塞出现在标准单元的某一块:也可以加一些由小的placement blockage组成的矩阵;module/instance padding;利用placement guide减少那块地方的标准单元个数;scan chain reordering也会改善一些阻塞;定义density上限;使用congestion driven的placement,并且要求place之后做congestion优化;在综合是禁止使用那些pin太多太密集的标准单元(多半是那些复杂的组合逻辑单元);请前端使用RAM代替触发器矩阵;请前端修改算法

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

@@12、How do you get better skew/insertion delays in CTS (Clock Tree Synthesis)? 如何得到更好的时钟树skew和insertion delay 难度:4

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

1)合理的clock root和through pin。这个看似CTS会从SDC自动抓出来,但是并不一定是最好的,特别是多个clock相互有重叠的leaf pin时,要特别注意 2)不要用太大或者太小的clock buf/inv

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