logo资料库

数字后端面试题.doc

第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
资料共28页,剩余部分请下载后查看
@@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 shiled ing 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("smic13_wl10") { : 8.5e-8; resistance capacitance area slope fanout_length : 0.7; : 66.667; : 1.5e-4; (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 到更高层 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 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% @@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 倍的宽 答案: 去除不太好用的 layer(比如 metal1)和 power 专用 layer(比如 RDL)后,比较剩下
的 layer 可以提供的 H 和 V 的 routing resource,如果 H 的多,就选宽的,反之,就选 高的。 @@16、if the design is IO limited, how to reduce the die size? 因为 IO 太多而导致芯片面积过大,有什么方法减小面积?难度:2 答案: 1)stagger IO,2 重 io 可以算一个方法 2)IO 可以不全放到四边,只要封装没问题就行啦 -- flip chip 算第二个方法 3)如果有多套 IOcell 可以选择,尽量选瘦的 4)调整芯片的长宽比 @@17、giving the schematic and delay in attached picture, calculate the WC setup slack at D pin of F2, and BC hold slack at D pin of F4 如图所示,时钟和延迟,计算到 F2 输入端 D 的 setup slack,到 F4 输入端 D 的 hold slack 难度:3 答案: F2 输入端 D 的 setup slack 是(8+0.5-0.3)-(0.7+7.0)=0.5 F4 输入端 D 的 hold slack 是(0.2+0.2)-(0.2+0.2+0.1)=-0.1 @@18、using the same logic as question #17, considering OCV on clock path only, which clock buffer will be used for OCV derating calculation and which clock buffer will not (a.k.a. CPPR)? 如果考虑 clock path 的 OCV,在第 17 题的电路里面,哪几个时钟 BUF 要被用来计算 OCV 的 derating, 哪几个不用(又叫 CPPR)?暂不考虑 X-talk 产生的 incremental delay 答案: C1 C2 不用算入 derating(应该是也计算过,但是会通过 CRPR 弥补),C3,C4,C5 要计算 derating 附录:以下是几个概念的通俗解释。 OCV:因为制造工艺的限制,同一芯片上不同位置的单元会有一点差异,这就是 OCV。 现在还有 LOCV 和 AOCV,暂且不提。 derating:是计算 OCV 的一种简单方法,在某个单一条件下,比如 WC 或者 BC,把 指定 path 的延迟放大或者缩小一点,这个比率就是 derating。注意,这里要强调的是
某个单一条件,要么是 WC,要么是 BC,不能把 WC 和 BC 混在一起,再 OCV,因为 那样太悲观,实际上是很难发生的。 除了 derating 以外,在使用 incremental SDF 的时候,也会对 OCV 发生作用。这是明 天的问题,比较有难度。 CPPR:一条 path 的 start flop 和 end flop 的时钟路径,有时会有一部分是重合的,重 合的部分不应该算 OCV(注意,这里假设没有使用 incremental SDF),这就叫 CPPR。 @@19、continue from question #18. Because there is CPPR, the OCV derating on clock path C1 and C2 are canceled. Now giving incremental delay caused by x-talk at net between C1 and C2. Please use the derating to calculate the difference of clock path delay from C1 to C2 (including the net between them) for WC setup and BC hold. 接上面#18 的问题继续讨论,因为有 CPPR,在 C1 到 C2 那段 clock path 上面的 OCV 被抵消掉了。 现在我们增加一个由 x-talk 引起的 incremental 延迟在 C1 到 C2 的那段 net 上,具体数字见图。 问题: 对于 C1 到 C2 那段 clock path, 在计算 WC setup 时,因为 OCV 引起的路径延迟的差是多少? 在计算 BC hold 时,因为 OCV 引起的路径延迟的差是多少? 注意: 问题是那段 clock path 因为 OCV 引起的 path delay 的差,不是问 path delay 的绝对值 难度:5 难度 5 的问题不是盖的吧, 好,改为选择题, C1 到 C2 一段的 OCV 延迟的差, 1)在计算 WC setup 时,是 a) 0 b) 0.0005 c) 0.00075 d) 0.0245 2)在计算 BC hold 时,是 a) 0 b) 0.001 c) 0.0015 d) 0.0265 答案: 现在从 incremental SDF 的格式说起, (-0.01::0.015)(-0.015::0.01) 左边括弧里的是 rising timing 延迟,右边的是 falling timing 括弧里面的一对数字表示在这个条件下(WC 或者 BC)延迟的最大和最小值 因为是 incremental 延迟,要和基本延迟结合使用,所以,会有负数出现。 再讲 OCV 的使用 incremental SDF 的方法, OCV 计算 path delay 时挑选最困难的情况, 在 WC setup 时,比如从 F1 到 F2, 计算 F1 的 clock path,就选 incremental SDF 里面的最大值 0.015, 计算 F2 的 clock path,就选最小值-0.01 因 为 有 0.95 derating 在 -clock , -early 上 , 所 以 F2 的 clock path 要 按 比 例 缩 小
-0.01x0.95=-0.0095 所以 C1 到 C2 那段的 OCV 的差是 0.015+0.0095=0.0245 (选项 d) 在 BC hold 时,比如 congF3 到 F4,因为 2 个 FF 在同一个时钟沿检测 hold timing, CPPR 可以把 incremental SDF 的延迟也抵消掉, 所以 C1 到 C2 那段的 OCV 的差是 0 (选项 a) 结论: 计算 setup 时,CPPR 不抵消 incremental SDF 计算 hold 时,CPPR 连 incremental SDF 都可以抵消掉 @@20、Explain ECO (Engineering Change Order) methodology. 说一下 ECO 的流程 难度:2 答案: ECO 有两种,pre-mask ECO 和 post-mask ECO,它的分界线就是 base layer tape out 之 前和之后。 pre-mask ECO 的流程是 1)后端写出网表,给前端 2)前端修改这个网表 (一般不再做综合),可以使用任何标准单元(只要不是 dont_use), 交给后端 3)后端读入 ECO 网表,和 ECO 之前的 place 和 route 4)ECO place&route,STA, DRC/LVS post-mask ECO 流程,假设你不想动 base layer 1)后端写出网表,给前端 2)前端修改这个网表 (一般不再做综合),只能使用 spare cell 或者象 gate array 一样的 ECO cell 3)后端读入 ECO 网表,和 ECO 之前的 place 和 route 4)如果使用 spare cell,不用 ECO place;如果用 ECO cell,要将 ECO cell 放在以前带 gate array 功能的 fill cell 的位置上,再按照指定的 layer 做 ECO route @@21、What do you write in CTS spec file? CTS spec 文件中一般包含哪些内容? 难度:3 答案: (以 Cadence CTS spec file 格式为例) AutoCTSRootPin pad Period MaxDelay MinDelay MaxSkew SinkMaxTran BufMaxTran Buffer NoGating NO/YES DetailReport YES/NO #SetDPinAsSync NO/YES SetIoPinAsSync YES/NO RouteClkNet YES/NO PostOpt YES/NO
OptAddBuffer YES/NO #RouteType specialRoute #LeafRouteType regularRoute ExcludedPin leafpin leafport hroughpin throughport clkgroup macromodel pin @@22、If there are too many pins of the logic cells in one place within core, what kind of issues would you face and how will you resolve? 如果在 core 里面某一块有太多的标准单元的 pin,有可能出现什么 place&route 的问题,如何解决? 难度:3 答案: 1)禁止使用 pin 太多的 cell 2)减小 utilization,方法很多 3)看 v h 可用资源,适当调整 moudle 形状 @@23、If there are DRC (spacing,short), hold and setup violations in the design, you don't have enough time to fix all of them before tape out, which one you will fix first, which one you can leave it as is? Why? 如果设计中有 DRC (特指 spacing 和 short),hold 和 setup 违反,tape out 之前,你已经没有时间 去修改所有这些违反,那么你首先修改哪个?哪个可以不管?请说明理由。难度:2 答案: 1) short, spacing 2) hold 3) 如果没有时间,setup 可以忽略 @@24、how to set multicycle path constraint? 如何设定 multicycle path?难度:1 提示:在一般情况下,multicycle -setup 和 -hold 要成对使用 答案: clock domain: fast-slow:set_multicycle_path num -setup -from clk1 -to clk2 -start set_multicycle_path num-1 -hold -from clk1 -to clk2 -start slow-fast:set_multicycle_paht num -setup -from clk2 -to clk1 -end set_multicycle_path num-1 -hole -from clk2 -to clk1 -end data path: set_multicycle_path num -setup -from data1 -to data2 set_multicycle_path num-1 -hold -from data1 -to data2 延伸问题: 为什么-hold 一般是-setup 的 n-1?如果只有-setup 木有-hold 会怎样? 答案: hold 是对前后两个 flip flop 在相同时钟沿的检查.设了 n-1 就是返回 n-1 个周期做 hold 的检查,满足了两个 flip flop 在同一个时钟沿。如果没有-hold 默认是检查 n 前一个有 效时钟沿,如果 n>=2,hold 的检查就不是在同一个时钟效沿,对 hold 的要求就要多 n-1 个周期,那样太苛刻了,一般时序无法收敛
分享到:
收藏