同一个电路,进行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;
方便,可一键执行操作;
独立,每个文件可独立执行
审核编辑:黄飞
-
指令
+关注
关注
1文章
607浏览量
35691 -
仿真电路
+关注
关注
5文章
82浏览量
33290 -
PVT
+关注
关注
0文章
13浏览量
3926
发布评论请先 登录
相关推荐
评论