微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 请教如何分段测量混合电路的平均功耗!

请教如何分段测量混合电路的平均功耗!

时间:12-12 整理:3721RD 点击:
design的结构:信号源是一个用verilog写的纯数字模块,待测模块是一个纯模拟的电
路。
现在我想要从仿真的0时刻开始,在每一个clock周期内(此clock由verilog生成),对
模拟电路中的某一路电流做时间的积分(为了测功耗),得到的值再写入一个文件中。
例如,仿真时间是100ns,时钟是10ns,那么仿真结束后就应该有100/10=10个数值存入
指定的文件中。
由于是混合信号仿真,所以simulator用的是ams(spectreVerilog不考虑),并且用的
是OSS-based的irun命令,所以在仿真时实际使用的网表不是spectre/spice格式的,而
是.vams格式的。这样貌似就不能用.meas等测量语句了。况且meas语句也需要绝对的起
始时间,而我这里clock的周期以后可能还会调整。我要的是自动检测到一个clock结束
后,做积分。如果把时间点在meas里面写死了,以后也很不好改。
另外,我也考虑过ocean的方法。ocean是仿真完成后,事后处理的一种方法,同样地,
由于我的仿真时间不确定,无法把测量语句写好并保存,所以貌似也行不通。只能想办
法在网表中完成自动分段和测量的操作。
我查了一下Verilog-AMS的语法手册。找到两个可能相关的语句。idt和timer。不过貌
似idt只能从仿真0时刻开始积分,没法调整积分开始的时间。另外,看了timer(0,
period)的语法解释,好像很符合我的需求,把时间按period的值划分。不过我试了一
下,写了这几条语句:
。。。。。
analog begin
    @ (timer(0, 1))
       $ display ($abstime);
......
发现,如果和spectre联合仿真的话,step数值始终是根据模拟仿真器来,没有按照设
定的每1ns,打印一次时间,而是每个模拟步长打印了一次时间。
我的需求貌似有点特殊,在网上查了很多,都没查到相似的问题,特上来请教大家,谢
谢!

这个问题我们曾经研究过,也是类似应用,
过程很复杂,最后跟Designers' guide community的人也确认过
结论是目前ams没有办法很准确的测量chip level的电流
原因大致是因为目前的a2d d2a没有办法保证数模接口的KCL
如果有好方法欢迎讨论

把那个要测得电流,用流控电流源复制出来
送入一个理想的积分器,可以用理想运放来搭;Vout=Integrate{Itest*dt}/C
输出加一个sampler,用你的clock来采样,输出到文件中
后处理,将Vout结果做个差分,I(n)=(Vout(n)-Vout(n-1))*C/Tclk

在我的这个设计中,我的verilog文件纯输出信号,做激励的。 我要测量的电流就是模拟
模块的电源的电流,我觉得应该没有触及到vams在KCL方面的不足。

感谢指教! 这样做对一个模块应该可行。进一步说,我的最终需求其实是:模拟模块A
的实例化实际上有2万个左右,并形成一个矩阵(我的design是较大的 CAM cell 矩
阵)。但由于每个实例的输入激励不同,导致工作状态不同,进而功耗也不一样。而我
要做的就是统计每个模块在每个clock中的平均功耗。所以,生成的文件应该是一个二
维矩阵。 比如仿真时间10000ns,时钟周期10ns,那么矩阵的大小是20000 X 1000.
根据我的理解,您的方法主要是解决clock周期可能变化的问题,对任意clock周期,您
的方法都可以适用,而不用在meas语句中定死起始时间,不知我理解对了没有?
另外,要形成我所要的二维数组文件的话,我想可能还是需要ocean脚本的支持来做后
处理。 我现在想到的是,貌似SKILL有和perl类似的字符串粘合的功能(我不太确定?
SKILL不是很熟,不好意思)。比如 integ (i(I$i(vdd)), $start, $ stop).  
$i, $strat, $stop 通过循环赋值。这样我就可以只写一条格式化的语句,然后通过循
环实现测量20000 x 1000次的功能。 不知这个思路大家觉得如何?

你用了ams仿真器就可能有这个问题,你可能需要小心模拟里面的分散数字逻辑,比如说反相器与非门之类的

没错,我解决的是你clock周期在变化的问题
这么多模块还得考虑一下复杂度的问题,积分器的好处是spectre自动调整一个周期内的仿真步长,精度保持的比ocean那种采样后积分的要好些,但是估计仿真时间会长不少

非常感谢tonyboz和PrimeTime两位大侠的指教!谢谢你们!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top