陈涛后端面试总结 - v1

更新时间:2023-11-23 02:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

难度指数:

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的标准一般是timing

balancing clock skew只是CTS的一个中间步骤,判定timing的话还是要opt data path之后才能够得到。如果说skew的target比较小,CTS不容易进行balance而达到目标,那么tool很有可能采用牺牲clock path,或者叫latency,再或者叫insertion delay,来实现skew的目标。那么,这样当然会插入更多的cell,走更长的path来实现,自然功耗就大了。同时,clock net比较sensitive,path越长,潜在的OCV越明显。那么,反过来说,将skew的target设得比较大,tool可能可以采用更加简单的结构来build clock tree。

再说个题外话,CCOpt是timing-driven的CTS tool,可以用更短的clock path长度和更少的clock cell实现clock。 总之一点,只要保证你的设计结果满足你的constraints,就没有问题。

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

CTS之前,clock都是ideal的,这时候的transition和setup都是由data path引起,如果一定要在这个时候fix,无论从数量还是产生因果上来看,显然应该先fix transition violation。

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

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

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

CCS(synopsys)和ecsm(cadence)都是电流源模型,精细度更高, 这三种模型是对cell delay的计算方式的不同区分; PVT(process voltage temperature)条件

就是我们平时做时序分析的wcl、wc、lt、tc、ml等corner设置work condition 一般情况下wcl下修复setup lt下修复hold、ml下查看leakage

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

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

look up table LUT

一条Timing path上的Delay有2部分组成,Cell Delay + NetDelay。

在DC中,Net Delay应该来说就是有WLM中得到的,而Cell Delay就是根据WLM中得到的input Tran跟Cell 的output load通过查表得到Cell delay。

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

和load通过查表得到的,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

主要就是memory channel出现congestion的处理,还有全是标准单元但有congestion的处理。若全是标准单元但仍有

congestion,要么是local density太高,要么就是pin density太高,这时候就要限制cell density来降低pin density,另外如果是用ICC的话,在placement的时候使用global router来进行congestion removal以及congestion removal用high effort都是有帮助的。

@@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到更高层

4)如果用double width clock wire,可以适当增大clock buf/inv的size

5)合理的max fanout。有时clock buf/inv的fanout可以超过max_fanout的限制 6)不要把skew设得太小 7)min_insertion_delay = 0ns 8)合理的transition time,不要太小 9)使用postCTS的CTS opt

10)做clock tree时,就直接把clock net走线完成 CTS时,就把时钟net都route了,不要等到detail route那一步

@@13、If giving total standard cell gate count, all memory macro list including memory type, bit width and depth, all other macro with real size, and IO type and total number. How do you estimate the die size?

如果告诉你标准单元的门数,所有内存的类型和逻辑大小,其他IP的实际大小,以及IO cell 的种类和数量,你如何估算整个芯片的面积?

答案:

IO neck 和 core neck 一般称作 IO limited 和 core limited,

IO limited :这个芯片的面积是因为IO个数限制(太多),而不得不做得那么大。core部分其实用不了那么大。这时面积计算就简化为每边IO个数的计算了。

Core limited:芯片面积是有core部分的决定的,IO没有那么多 在Core limited情况下,die size的估算如下:

芯片面积 = core面积+ power ring面积 +PAD ring面积 core面积 = RAM面积 + 其他macro面积 + 标准单元面积

RAM面积 = RAM 自身的面积 + RAM power ring面积 + keepout面积 + mbist面积 RAM自身的面积可以通过memory compiler或者查datasheet得到,

有些RAM 可以不要power ring。如果要的话,按照power mesh的宽度 x RAM的长宽 x 2 = 面积 keepout + mbist 的面积一般是RAM自身面积的10%

其他macro的面积,比如PLL,ADC,DAC等,直接把面积加起来,再留3~5%的keepout面积就好了 标准单元的面积=(预估的gate count x 每个gate的面积)/ utilization utilization与使用的金属层数和设计的用途有关,简单地计算方法是 5层metal:50% 6层metal:60% 7层metal:70% 8层metal:80%

以上不包括power专用的金属层

如果设计是多媒体芯片,一般可以增加3~5% utilizaion,如果是网络芯片,则要减少3~5% case by case吧,io neck or core neck ,

我们一般是很快摆摆各个hard module位置,fast place , 看一下neck, 估计一个合适的uti ,re-try几次,基本上面积就定下来了,不过将来再变的可能挺大的,一般要2~3次变size

我们这边前端team也会预估他们设计的面积,然后给我们,说是他们期望的面积,他们是统计一下total cell area * 1.2,

表示考虑到了电源空间和std util,不过基本上我我们实际都比这大不小于20%,感觉不着调,对后端很苛刻啊 门数知道,面积可以确定了,考虑到你的std uitl,hard ip也只知道大小了,sum一下,加上你认可的(经验参数) p/g/special

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

@@14、what is pros and cons of using buffer and invters in CTS? CTS中使用buffer和inverter的优缺点是什么? 难度:3

答案:

使用BUF:

优点:逻辑简单,便于post-CTS对时钟树的修改 缺点:面积大,功耗大,insertion delay大 使用INV:

优点:面积小,功耗小,insertion delay小,对时钟duty cycle有利 缺点:不易做时钟树的修改

@@15、If giving two physical dies as below, and ask you select one of them. How do you pick it up? explain

the reason please. (1) width = 2 x height (2) height = 2 x width

如果从下面的两个芯片中选一个给你做后端设计,你选哪个?请说明选择的理由? (1) 宽 = 2倍的长 (2) 长 = 2倍的宽

本文来源:https://www.bwwdw.com/article/sggv.html

Top