基于文本的对不同电路进行批量仿真

描述

  同一个电路,进行PVT仿真可以用ADEXL来实现,但多个不同电路的批量仿真有什么好的办法呢?前段时间就遇到了这样一个棘手的问题,也是关于仿真的。有一个TOP电路,其系统工作模式的组合约有22种。我当然可以搭建22个Testbench,使用ADEL对每个环境进行仿真分析。但这样做精力比较分散,且同时开很多ADEL很容易让我混乱。还因为我决定不使用cadence的图形化窗口界面,开22个标签简直没眼看。所以从心理上不愿意用这种方式。于是,经过探索找到了下面的办法,解决了这个问题。

  (1)首先调通一种模式,导出input.scs的仿真文本。此后的后续一切步骤都是基于该input.scs文本的;

  (2)分离input.scs中的公共部分成一个个独立文件,然后用include的方式包含进来。这些公共部分包括:netist、savefile、Lib等。这么做主要是为了简化仿真文件,且之后万一修改netlist和savefile的话只需要修改一个文件。

  Note:netlist为顶层电路的网表;savefile为需要保存的信号文件。最终将得到一种模式下的仿真文件

  (3)基于第2步的仿真文件,在其基础上进行外部激励修改,陆续得到其他21个仿真文件。至此已经得到全部22个仿真文件了。当然每一个文件都是可独立运行的,现在的问题是怎样一键运行所有的仿真文件。

  (4)建立一个runSimulation的可执行文件,在其中依次写下22个仿真文件的运行指令,比如下面那样,当然这是最简单的运行指令 。

  // runSimulation,command:

  spectre input1.scs

  spectre input2.scs

  spectre input3.scs

  。。。。。。

  (5)检查运行指令,建议在指令中包含psf文件的具体存储位置。这样做的目的是呈现出一个清晰可读的设计目录,让结果和仿真文件一一对应。

  Note: 意外之喜,runSimulation中的指令是并行执行的。

  写在最后:

  方法是普通的,但探索的过程还是有点曲折的,还好没有卡住太久。这种方法第四步的建立可执行文件的作为最关键的一步,可以说是一个巧合,还好结果是好的。

  在找出建立可执行文件运行指令的方法之前,其实已经让PYLI兄写了个简单的Sheel脚本,寥寥几句指令完全可以解决问题。但是我感觉可以用模拟人员擅长的方式来解决这个问题,只是我还没有找到办法而已。还好,源于那个巧合,还是找到了办法。这可能是模拟人员的执着吧,最终还是用了自己的方法。

  我一直觉得仿真文本有三个对我来说很大的优点:

  简介,不用开很多GUI;

  方便,可一键执行操作;

  独立,每个文件可独立执行

  审核编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分