杭州泡良实战故事经历:关于monte carlo分析[转载] -- sucra's Blog

来源:百度文库 编辑:中财网 时间:2024/04/29 10:20:36
关于monte carlo分析[转载]发表于2007/5/19 13:58:04

    了解这些泊来的东西可以从它的名字说起,为什么叫Mente Carlo Analysis?Mente Carlo原来是欧洲的一个著名的赌城,所以Mente Carlo Analysis分析的意思大致就是说每次随机指定不同的参数组合,看电路performance的分布情况。Mente Carlo分析中一次模拟的情形大致是这样的:电路有这么几个工艺参数,A的分布为a,B的分布为b,...先随机选择参数A的值,我掷一颗骰子,喔,掷到0.3了,好,这次A就用0.3,然后是B,再掷一次骰子,哦,0.2...OK!直到全部工艺参数都确定下来,然后照此仿真,得到一个仿真结果I。重复以上过程,可以得到不同参数组合下的仿真结果II,III。。。从而得到仿真结果的分布。在各工艺参数独立分布的情况下,以上分析还是合理的。从我个人有限的工作经历来说,不要说Mente Carlo Analysis,就是一般的Corner分析我也很少去做,因为个人认为只要设计时给各方面留下足够的裕量,Corner分析不管做不做都不会出现什么大的纰漏,起码对一般精度要求不高的电路而言。
    3年前曾经有一位同事也算老师,关于要不要做corner分析或Mente Carlo分析,怎样做,他讲了他的一些经历。此人在工研员读的硕士,以后又到可能是纽约大学还是伯克力哪处分校念的博士,以后又在超微(AMD)做flash memory,也有在国半(NS)工作的经历。交待这些背景很有必要,因为这或许代表了一个在大公司工作十几年的老engineer考虑问题的态度方法。就我现在还能记起来的说一说

    要不要做Monte Carlo分析?我在AMD做了10年,针对工艺的分析基本上都只要做corner分析,做4个corner,也就是ff、fs、sf、ss,tt就不算了。做归做,可是心里总是有点,怎么说。。。惴惴不安的感觉:是不是只要4个corner通过了,电路就一定能工作?可能基本上是如此,但是也不能排除performance在p管-n管速度平面上存在着这样的分布,就是在4个corner上它都是work的,但在四个corner构成的矩形区域内,并不能保证它就能work(在X-Y平面上画一个不规则封闭曲线,曲线通过4个corner,曲线包围的区域为电路可以工作的区域)。反过来讲,是不是4个corner只要有一个没有通过,电路就不能正常工作了?当然,4个corner都通过当然也没有什么坏处。可是有时出现过这样的情况,一个电路做了8个月9个月完成后,发现某个corner没有通过,就想难道要重新修改整个设计去满足它吗?万一修改以后满足了这个corner,却丢掉了另一个corner怎么办? 但是,有些corner实际上是根本不会出现的,这个时候,即使仿真的结果说明在这个corner上没有通过,也不一定就说明电路有问题。因为事实上,一些工艺参数是相关的,比如oxide厚度对Vthn就有影响,oxide越薄,Vthn就越小,而monte carlo分析却不管这个基本原理,它甚至会去考虑oxide小而Vtn大的情况,显然是不合理的,得到的分布自然也是不可信的。我如果用monte carlo分析,我一般会自己考虑各个工艺参数之间的关系并把它们代儒到仿真条件中去,是n-reality的,假设管子速度分布在X-Y平面上是一个圆,经过分析发现电路的工作区域可能是个不规则的图形,老板一看可能说,咦,怎么有一个corner没有包含进来呢,还有这个工作区域太小或者形状和位置看起来不太舒服,也可能说给你还得给我来点裕量(你要把这个圆完全包含到工作区域中去!) 你不能对老板说,有一个corner没通过,但是估计没有什么问题,老板会说流片前总得给我点信心呀。这时你就可以充分利用Monte Carlo分析这个工具,告诉老板,喏,根据工艺提供的数据,A参数是这个分布,B参数是那个分布,经过Monte Carlo分析,说明大概有90%的情况是work的,这样就说服了老板。在XXX做事的时候,基本上都是用Corner分析,后来因为工艺变化太大(几u到.18u),需要Monte Carlo工具进行分析。这种分析要进行很多计算,电路扔进去往往要两三天才出来,所以很多engineer,觉得这个好玩。Engineers们就说,好,老子上班就玩这玩意儿了。碰到什么问题搞不清楚,就把东西扔进去,说让你去掷骰子吧。。。
­AF:G"w0z4Thb 你说这样的分析会有什么意义?总而言之,在做这个分析之前,自己先要分析一下,这些变化参数之间以及和结果之间到底是什么关系,结果应该会是什么样子的,然后我才会去用它。就是说你不要在那里瞎搞!你在使用这些分析工具之前,必须知道它到底是怎么回事,要弄清他的来龙去脉,这样才是有用的,不能说:管他呢,让它(分析软件)去扔骰子好了!总之,进去什么出来什么(指如果你连Monte Carlo分析的机制算法搞什么事情都搞不清,你就不能指望它帮你解决什么问题,扔进去是一团乱麻,出来还是一团乱麻),英文里叫GIGO(Garbage In Garbage Out),垃圾进垃圾出。
M3@7MM$L0mT       他的观点也许有点偏颇,例如有些论点的前提不太准确,例如Mento Carlo分析在保证各输入参数的独立性上面还是有所考虑的,但他的一个关于软体分析的基本观点我是十分赞同的就是:IC设计工程师在simulation之前一定要弄清楚自己在干什么,希望验证什么以及如何验证,电路模拟软体只能当作一个验证的工具,永远不能指望电脑代替你来做思考。年轻的工程师往往过分依赖电路分析软体,这一点提醒特别需要注意