1 前言
之前的一篇文章中提到,在蒙特卡洛仿真中可以通过设置不考虑某些器件的失调的方式来分析一个电路中的某些器件对电路失调特性的影响。此外,Cadence 的蒙特卡洛仿真中还提供一个功能:将一次蒙特卡洛仿真中的一个具体的点创建成一个静态的 Corner,这个 Corner 会记录这一次蒙特卡洛仿真的信息。有了这一个静态的 Corner 后,我们就可在这个静态的 Corner 下运行 DC、AC、PSS以及 HB 等多种仿真分析,来全面分析一个电路在当前失调情况下的各项性能指标并寻找改进方法。
2 方法介绍
这次同样使用之前的一篇文章中的电路来介绍这种方法。之前的一篇文章中提到的是一个运放的失调电压仿真电路,并给出了下图这样的一个失调电压的蒙特卡洛仿真结果:
可以看出,该蒙卡的仿真结果中最右边存在一个点,在这一个点下电路的某些性能较差。现在假设我们期望将这个点单独拿出来,在这个点的失配情况下进行其他的更复杂仿真,来自己分析这个点所在的情况下电路的工作状态,这时我们就可以用到 Cadence 中的 「Create Statistical Corner」这个选项了。
在使用该点创建静态的 Corner 之前,首先我们要做的就是要知道该点是这次蒙特卡洛仿真中的第几个点。知道这是第几个点的方式很简单,只需要用鼠标悬停在这个点的上方即可(或者点一下这个点也可以),如下图:
此时即可显示出该点为本次蒙特卡洛仿真中的第几个点,本例中为第 117 个点。
接下来转到 maestro,在 maestro 中选择如下图中的选项,并将该处选项改为「Detail」,即可总览本次蒙卡仿真中每一个点的情况。
此时下方就会列出本次蒙特卡洛仿真涉及到的全部点的信息。接下来要做的是在这些点中找到我们感兴趣的那个仿真点(这里是第 117 个点),并在仿真结果上面右键,即可看到「Create Statistical Corner」选项,如下图:
单击这个选项,即可在设置工艺角的地方看到一个新增加的工艺角,如下图:
随后,取消勾选「Nominal」工艺角,并将 maestro 上面的仿真选项设置为普通的仿真,且无需更改任何仿真库选项,即可愉快的进行各种各样花式的仿真来分析电路了,如下图。
例如,在下图这里我设置了一个 DC 仿真和一个 AC 仿真,可以看出仿真能够正常进行,并且能够得出一个正确的,确实是属于该蒙特卡洛工艺角下的仿真结果。
3 一点猜想
根据这个将蒙特卡洛仿真中的某一个点创建为静态 Corner 的操作过程来看,本人猜想 Cadence 中的蒙特卡洛仿真产生随机失配的方式很可能使用的是生成伪随机数的方法。因此只要给定一个种子(seed),给定一个仿真点(如本文中的第 117 点),那么对于一个特定的电路结构,每次仿真时 Cadence 计算出的电路中的器件的失配情况都会是完全相同的。正式由于这种伪随机数产生算法在对同一个输入时能够具有相同的输出,我们才可以将其创建成一个静态的 Corner,并使用这个 Corner 进行其他的更复杂的仿真来对电路进行分析。
以上只是本人的一点猜想,如果有了解 Cadence 中蒙特卡洛仿真算法原理的读者也欢迎在评论区中为大家科普一下,谢谢。
之前debug的时候,想把结果不好的点保存成一个adel的状态,方便改参数之后再看看该点有无变化,一直没找到方法。现在get了。3qヾ(≧∇≦*)ゝ
感谢支持!这个方法是我们老师教我的,我觉得很好用就共享了出来,能起到帮助就好哈哈。
大佬,我在帖子里面借鉴了一下你的这篇文章,希望你不要介意,欸嘿。
我的帖子:(顺便引个流嘿嘿)https://zhuanlan.zhihu.com/p/628060656
哈哈,没关系,我觉得多多交流引用才能让微电子的知识更多发扬光大起来。
正好我 Verilog-A 语言入门那里缺乏一些例程,如果你不介意的话那我就顺便把你的文章引用一下加到我的例程里面了哈哈
嗯嗯没问题的,一起学习,我也是看了你的网站,受到启发,心血来潮,也觉得网上做模拟的资料太少了,确实需要大家多多交流
你好,我想请问一下,按照您提供的方法来选取其中一个点来单独仿真,我的 “create statistical corner ”选项是灰色无法选中的状态,请问这是什么原因
你好,你的描述比较笼统,我这边也不太好判断原因,建议你再检查一下仿真设置看看。