最近刚做完的一个项目就是这样的情况。这个项目是一款SRAM的IO电路,供电为3.3V兼容2.5V,带有2BIT的修调控制位TRIM《1:0》。在批量仿真时,批量条件就包括了工艺角、电源电压、温度以及修调信号的组合。因为设计需要,需要分别统计出不同工艺角、不同修调档位下的参数。这样一来就需要统计24个批量仿真的结果,如下图所示:
图 1 24种筛选条件
面对这种情况,如果我们还是采用ADEXL对所有条件进行仿真,然后通过眼睛来对GUI界面显示的结果进行逐一分类甄别肯定是不现实的。可以想见,如果使用肉眼识别的方法,这将是多么大的工作量!到这里,或许有人会说那使用ADEXL进行多次的批量仿真,然后每次进行结果统计不就可以了吗?这么做当然可以,为什么不可以呢?但问题是这么做很机械、没效率且易出错,不是一个好的办法。
要解决这个问题,其实可以考虑使用ADEXL的Ocean脚本进行仿真。Ocean脚本可以通过ADEXL软件直接导出。
回归到我们要解决的问题本身,整个过程大概可以分为以下四步:
01比如我们可以在ADEXL中设置好TT、TRIM=00时的温度、电压组合条件,调通仿真环境之后即可以导出Ocean脚本,我们可以给之命名一个有识别度的名字,如TT_00.ocn,表示TT、TRIM《1:0》=00时的仿真脚本。接下来最关键的点来了,在Ocean脚本的最后,你会看到有一个ocnxLOutputSummary命令,我们需要对其进行一点点修改,在原来的基础上增加描述:?fileName “xxx/ resultfile”。等每次仿真运行完之后,仿真器会自动将所有的参数结果打印到你指定目录下的一个文件中,文件可以自己命名,不过建议起一个识别度高的名字。修改前后的ocnxLOutputSummary描述如下:修改前:ocnxLOutputSummary (?exprSummary t ?specSummary ?detailed t ?wave nil )修改后:ocnxLOutputSummary (?exprSummary t ?specSummary ?detailed t ?wave nil ?fileName ”xxx/ resultfile“)
02接下来是修改脚本。对TT_00.ocn中的工艺角和修调档位进行简单的修改,就可以得到其他的仿真脚本,如TT_01.ocn、TT_10.ocn、TT_11.ocn、SS_00.ocn等。最终我们会得到24个仿真脚本,对应我们需要统计的每一种情况(参考图1)。
03最后是脚本汇总。可以新建一个TOTAL.ocn文件,将24个仿真脚本全部load进来,这样就完成了所有仿真脚本的整合。
图 2 进行所有脚本文件的汇总
04最后是仿真。在CIW窗口键入:load(“/xxx/xxx/TOTAL.ocn”),然后回车,仿真就开始进行了。需要注意图2中只有前一个仿真完成之后,才会开始下一个仿真。也就是说,图2所示的Ocean脚本是按顺序执行的。但每个仿真脚本仿真的时候,是采取并行仿真的方式进行的(前提是在ADEXL图形化界面设置的时候就设置成了并行模式。)。
到这里,仿真已全部挂起,只需要等待仿真结果出来。这时候你就可以去干点更加有意义的事情了,比如说喝喝茶、摸摸鱼(^_^)。
那么我们最终得到的参数文本是怎样的呢?可以看下面的图。文本中不仅有每个详细条件的具体参数值,还有对所有参数的统计结果。而且更重要的是,你可以直接复制文本内容到EXCEL表中做进一步处理,会很方便地处理成想要的数据表,大大提高设计报告的撰写效率。
图 3 参数文本的一个示例
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !