cadence面试.docx
《cadence面试.docx》由会员分享,可在线阅读,更多相关《cadence面试.docx(11页珍藏版)》请在冰点文库上搜索。
cadence面试
竭诚为您提供优质文档/双击可除
cadence面试
篇一:
微电子一些面试问题
亚稳态
setup/holdtime是测试芯片对输入信号和时钟信号之间的时间要求。
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
输入信号应提前时钟上升沿(如上升沿有效)t时间到达芯片,这个t就是建立时间-setuptime.如不满足setuptime,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。
保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。
如果holdtime不够,数据同样不能被打入触发器。
建立时间(setuptime)和保持时间(holdtime)。
建立时间是指在时钟边沿前,数据信号需要保持不变的时间。
保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。
如果不满足建立和保持时间的话,那么dFF将不能正确地采样到数据,将会出现亚稳态(metastability)的情况。
如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。
在数字集成电路中,触发器要满足setup/hold的时间要求。
当一个信号被寄存器锁存时,如果信号和时钟之间不满足这个要求,q端的值是不确定的,并且在未知的时刻会固定到高电平或低电平。
这个过程称为亚稳态
(metastability)。
一些关于微电子方面的笔试题(zz)
1.Fpga和asic的概念,他们的区别。
(未知)
答案:
Fpga是可编程asic。
asic:
专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造的。
根据一个用户的特定要求,能以低研制成本,短、交货周期供货的全定制,半定制集成电路。
与门阵列等其它asic(applicationspecificic)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点.
2.建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
输入信号应提前时钟上升沿(如上升沿有效)t时间到达芯片,这个t就是建立时间-setuptime.如不满足setuptime,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。
保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。
如果holdtime不够,数据同样不能被打入触发器。
建立时间是指在时钟边沿前,数据信号需要保持不变的时
间。
保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。
如果不满足建立和保持时间的话,那么dFF将不能正确地采样到数据,将会出现metastability(亚稳态)的情况。
如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。
3.什么是竞争与冒险现象?
怎样判断?
如何消除?
(汉王笔试)
在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。
产生毛刺叫冒险。
如果布尔式中有相反的信号则可能产生竞争和冒险现象。
解决方法:
一是添加布尔式的消去项,二是在芯片外部加电容。
4.列举几种集成电路典型工艺。
工艺上常提到0.25,0.18指的是什么?
(仕兰微面试题目)制造工艺:
我们经常说的0.18微米、0.13微米制程,就是指制造工艺了。
制造工艺直接关系到cpu的电气性能。
而0.18微米、0.13微米这个尺度就是指的是cpu核心中线路的宽度。
线宽越小,cpu的功耗和发热量就越低,并可以工作在更高的频率上了。
所以以前0.18微米的cpu最高的频率比较低,用0.13微米制造工艺
的cpu会比0.18微米的制造工艺的发热量低都是这个道理了。
5.集成电路前段设计流程,写出相关的工具。
(扬智电子笔试)
先介绍下ic开发流程:
1.)代码输入(designinput)
用vhdl或者是verilog语言来完成器件的功能描述,生成hdl代码
语言输入工具:
summitVisualhdl
mentoRRenioR
图形输入:
composer(cadence);
viewlogic(viewdraw)
2.)电路仿真(circuitsimulation)
将vhd代码进行先前逻辑仿真,验证功能描述是否正确数字电路仿真工具:
Verolog:
cadenceVerolig-xl
synopsysVcs
mentoRmodle-sim
Vhdl:
cadencenc-vhdl
synopsysVss
mentoRmodle-sim
模拟电路仿真工具:
***antihspicepspice,spectremicromicrowave:
eesoft:
hp
3.)逻辑综合(synthesistools)
逻辑综合工具可以将设计思想vhd代码转化成对应一定工艺手段的门级电路;将初级仿真中所没有考虑的门沿(gatesdelay)反标到生成的门级网表中,返回电路仿真阶段进行再仿真。
最终仿真结果生成的网表称为物理网表。
7.解释setup和holdtimeviolation,画图说明,并说明解决办法。
(威盛Via20xx.11.06上海笔试试题)
setup/holdtime是测试芯片对输入信号和时钟信号之间的时间要求。
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。
输入信号应提前时钟上升沿(如上升沿有效)t时间到达芯片,这个t就是建立时间-setuptime.如不满足setuptime,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。
保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。
如果holdtime不够,数据同样不能被打入触发器。
篇二:
ic面试问题
1.静态功耗:
指电路处于等待状态或者不激活状态时的泄漏电流产生的功耗。
泄漏电流主要有:
1)反偏二极管泄漏电流(漏极和衬底是一对反偏二极管)
2)门栅感应漏极泄漏电流(gidl,gate-induceddrainleakage):
3)漏致势垒降低效应,使得在栅极电压较低(nmos)时,沟道内的势垒高低
降低,漏电流随着漏电压变化,。
在亚阈值下的漏电流,主要是沟道内的载
流子扩散引起的。
4)栅极泄漏电流:
栅极泄漏电流一般用叠栅和和高k介质解决。
2.whattypesofdelaymodelareusedindigitaldesign(数字ic设计中有多少
种类型的delaymodel)?
nldm,ccs,和ecsm”,还有一个现在基本不用了的--ldm
模型(ldm)线负载,非线负载模型模型(nldm),复合电流源模型(ccs),有效电流模型(ecsm)。
3.set_wire_load_mode:
setsthewire_load_model_modeattributeonthecurrentdesign,
specifyinghowwireloadmodelsaretobeusedtocalculatewirecapacitanceinnets。
set_wire_load_mode[top|segmented|enclose]
当需要估算连接不同模块的连线的延时时需要设主席set_wire_load_mode选项:
有三种enclosed(用包围两个子模块的模块的线负载模型估算连接它们的连线的延时),top,(用包含所有模块的顶层模块的线负载模型来估算),segment(分别根据穿过的三段模型估算之后相加得到)
4.set_wire_load_model:
wireloadmodel,在综合时,除了用zwlm,或者不同k值的
wireloadmodel以外,还有一个基于物理位置(距离)的wireloadmodel,在cadence的Rc中叫ple,synopsys叫dcultratopographical
5.whatwouldyoudoinordertonotusecertaincellsfromthelibrary
如何禁止使用库里面的某些单元?
禁用就用set_dont_use禁止修改就用set_dont_touch
6.哪些因素会影响标准单元的延迟?
答案应该包括
1)pVt
2)inputtransition,outputload
3)Vth
7.whydoyouusealternateroutingapproachhVh/VhV(horizontal-Vertical-horizontal/
Vertical-horizontal-Vertical)
主要是为了节省布线资源,而且垂直布线的话耦合电容较小。
8.whypowerstripesroutedinthetopmetallayers
为什么电源走线选用最上面的金属层?
1.高层更适合globalrouting.低层使用率比较高,用来做power的话会占用一些有用的资源,比如stdcell通常是m1pin。
2.em能力不一样,一般顶层是低层的2~3倍。
更适合电源布线。
3.一般ip占用的层次都靠近下几层,如果上层没有被禁止routing的话,toplayer可以穿越,低层是不可能的,并且高层对下层的noise影响也小很多
4:
顶层金属的宽度教宽,不仅可以提高抗em的能力,也可以减小iRdrop。
9.howtofixx-talkviolation?
如何解决线间干扰?
1)upsizevictimnetdriver,downsizeaggressornetdriver
2)increasewirespace,shielding,changelayer,changewirewidth
3)insertbutterinvictimnet
能答出以上3条的,在工作中已经基本够用,但是还有两个不常用到的,是amd的一个大牛告诉我的。
4)把与victimnet相连的输入端改成hi-Vth(Vth提高后,小的glitch可以被过滤掉)的单元。
5)改变信号的timingwindow。
这个不易做到,但是也是解决方法
10.cppR:
commonpathpessimismremove
11.pt计算时序的时候都是按照最紧约束来计算的。
set_timing_derate-early0.8
set_timing_derate-late1.1
deratetheminimum/shortest/earlypathsby-20%andderatethemaximum/
longest/latestpathsby+10%.longpathdelays(forexample,data
pathsandlaunchclockpathforsetupchecksorcaptureclockpathsfor
holdchecks)aremultipliedbythederatevaluespecifiedusingthe-lateoption,
andshortpathdelays(forexample,captureclockpathsforsetup
checksordatapathsandlaunchclockpathsforholdchecks)aremultiplied
bythederatevaluesspecifiedusingthe-earlyoption.ifnoderatingfactors
arespecified,avalueof1.0isassumed.
12.输入延迟:
时钟上升沿后,外部模块数据到达受约束模块输入端口所用的时间。
input_delay=clk_to_q+combo1.
clk_launch_edge+max_input_dealy(clk_to_q+combo1)+max_combo2 13.输出延迟:
output_dealy=tc2+tsetup(uff1).
tck2q+tc1+output_dealy 14.site
sitestandard#定义site
symmetRyy;
classcore;
size1.20by10.80;
endstandard
site是se中最小的几何单位,一个设计中可能有几种site,sitestandard指标准单元的site,siteio指iopad的site...一般说来,cell的高度是一定的,等于site的高度,cell的宽度是site的整数倍。
pitch
pitch是leF中一个重要的概念,它定义了将来布线的间距,它对布线的效果有很大的影响。
pitch就是同一层中金属的间距,se是一个有网格布线器,它布线的最小网格就是1个pitch,如下图(t7.3)所示,信号线是沿着网格走的,pitch大于等于linetoviaspacing,即保证1个格点上走线,相邻格点打孔,孔与线的间距不违反间距规则。
在多层布线中,一般定义各层pitch相同或保持一个简单关系,如1:
2,这样保证好的布线效果。
pitch的大小一定要仔细考虑。
track
布线轨道(routingtrack)是指芯片内部专门用于布线的路径。
布线通道是指(routingchannel)是每两条或者多条布线轨道空间,他们上面不允许摆放标准单元,晕道(halo)p65.
deF文件:
布局布线后的电路网表文件,可用于寄生参数的提取,功耗分析,电压将分析。
leF:
包技术lef和celllef文件,用于自动布局布线的物理文件。
15.16.17.18.
leF是一种简化版的gds,它只包括size和metal层有关的信息,比如pin,blockage等,其他baselayer的东西只在gds里面可以看到。
同时leF还有一些gds里面没有的信息,比如,metal的R,c,routingandplacementrule等
怎么说呢,lef包含techlef和macrolef2种,一般lib给的有的是合在一起的,有的是分开的
建议分开,因为有时候techheaderlef要修改些东西的,
techheaderlef主要是place
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如何描述?
在生成时钟树的网表中,如何处理networklatencyclkb的latency又如何描述?
难度:
3
答案:
在pre-cts时,clka的networklatency会自动传到clkb上在post-cts时,可以把networklatency去掉,
set_propagated_clock命令,让工具根据clocktree去计算实际的clocknetworklatency
@@9、therearesourceclockclka(create_clock),andgeneratedclockclkbbyclka.howdoyou
specifytheminctsspecfileassumethereisrealtimingpathbetweenclkaandclkb.
clkb是clka的生成时钟,在cts的spec文件中如何定义这两个时钟?
假设clka和clkb
间的FF有时序收敛的要求。
难度:
3
答案:
cts的spec文件中定义clka是root,clkb为throughpin,再加上那些应该有的skew
transition,insertiondelay等就好了,其它的事cts会给你做
@@10、假设在pre-cts的时序约束中,setup的clockuncertainty是由plljitter和clocktreeskew两部分组成,那么
1)pre-cts的时序约束中,hold的clockuncertainty是什么?
2)post-cts的时序约束中,setup和hold的clockuncertainty要做什么样的修改?
难度:
2
答案:
1)pre-cts,
setup的clockuncertainty=plljitter+clocktreeskew
hold的clockuncertainty=clocktreeskew
2)post-cts,
setup的clockuncertainty=plljitter
hold的clockuncertainty=0
@@11、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无法解决时,可以考虑切掉部分powermesh
主要就是memorychannel出现congestion的处理,还有全是标准单元但有congestion的处理。
若全是标准单元但仍有
congestion,要么是localdensity太高,要么就是pindensity太高,这时候就要限制celldensity来降低pindensity,另外如果是用icc的话,在placement的时候使用globalrouter来进行congestionremoval以及congestionremoval用higheffort都是有帮助的。
@@12、howdoyougetbetterskew/insertiondelaysincts(clocktreesynthesis)
如何得到更好的时钟树skew和insertiondelay难度:
4
如果是用普通的cts的方法,可以从下面几个方面着手。
不太可能一次就把cts做得很好,要反复调试各种参数,达
到最佳效果。
1)合理的clockroot和throughpin。
这个看似cts会从sdc自动抓出来,但是并不一定是最好的,特别是多个clock相互有重叠的leafpin时,要特别注意
2)不要用太大或者太小的clockbuf/inv
3)选用Rc最小的金属层。
如果上面Rc最小的金属层已经被占用,比如Rc最小的top,top-1已经不够clocknet时,而top-2到layer2都是一样的Rc时,可以选用layer3/4。
为什么不用更高层哪?
因为这样既照顾了layer2/1的pin,有不用太多的via到更高层
4)如果用doublewidthclockwire,可以适当增大clockbuf/inv的size
5)合理的maxfanout。
有时clockbuf/inv的fanout可以超过max_fanout的限制
6)不要把skew设得太小
7)min_insertion_delay=0ns
8)合理的transitiontime,不要太小
9)使用postcts的ctsopt
10)做clocktree时,就直接把clocknet走线完成
cts时,就把时钟net都route了,不要等到detailroute那一步
@@13、ifgivingtotalstandardcellgatecount,allmemorymacrolistincludingmemorytype,bitwidthanddepth,allothermacrowithrealsize,andiotypeandtotalnumber.howdoyou
estimatethediesize
如果告诉你标准单元的门数,所有内存的类型和逻辑大小,其他ip的实际大小,以及iocell
的种类和数量,你如何估算整个芯片的面积?
答案:
ioneck和coreneck一般称作iolimited和corelimited,
iolimited:
这个芯片的面积是因为io个数限制(太多),而不得不做得那么大。
core部分其实用不了那么大。
这时面积计算就简化为每边io个数的计算了。
corelimited:
芯片面积是有core部分的决定的,io没有那么多
在corelimited情况下,diesize的估算如下:
芯片面积=core面积+powerring面积+padring面积
core面积=