以下三个是最经常被问到的,基本上属于介绍性的题目,无所谓正确答案,在我看来,这些不算真正的问题。
Discuss about the projects worked in the previous company.
介绍一下你在公司里做过的项目
What are physical design flows, various activities you are involved?
介绍一下你们的后端流程(假设是从gate level netlist开始的),你负责哪一部分?
Design complexity, capacity, frequency, process technologies, block size you handled.
芯片的工艺,面积,standard cell 的gate count,FF的个数,memory macro的个数,时钟频率,时钟个数,是hierarchy还是flatten flow,
如果是flatten flow,分成几个block
下面是第一个真正的问题:
1、Why power stripes routed in the top metal layers?
为什么电源走线选用最上面的金属层?
难度:1
难度指数:
1:常识--无论是否有工作经验,都应该准确回答
2:简单--只要做过一点后端的设计,就应该明白
3:一般--有实际工作经验一年左右,做过2个以上真正的设计,应该可以答上来
4:较难--在这个特定的领域有较多的研究,并积累了一定的经验
5:很难--基本上是专家级的牛人了!
答案:
1)高金属层的IR比较小,EM能力大
2)底层被IP,标准单元用的机会更大
2、Why do you use alternate routing approach HVH/VHV (Horizontal-Vertical-Horizontal/ Vertical-Horizontal-Vertical)?
为什么要使用横竖交替的走线方式?(感觉这个问题比较,但是号称是intel的面试问题,晕!我憧憬和向往的圣地啊!!!)
难度:1
答案:
最有效地利用走线资源
3、How to fix x-talk violation?
如何解决线间干扰?
难度:4 (关于难度的定义,在第一题里面)
(应该至少有5大类解决办法,wire spacing, shielding, change layer之类的只算其中1类)
1)upsize victim net driver, downsize aggressor net driver
2)increase wire space, shielding, change layer,change wire width
3)insert butter in victim net
能答出以上3条的,在工作中已经基本够用,但是还有两个不常用到的,是AMD的一个大牛告诉我的。
4)把与victim net相连的输入端改成Hi-Vth的单元
5)改变信号的timing window。这个不易做到,但是也是解决方法
前端跟后端哪个就业难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
答案:
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("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、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,inser
tion delay等就好了,其它的事CTS会给你做
10、assume in pre-CTS SDC, clock uncertainty for setup contains pll jitter + clock tree skew. How do you set clock uncertainty for hold, and how to modify it to post-CTS sdc?
假设在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
答案:
clock mesh 是一种方法。
如果是用普通的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走线完成
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论