微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > 瞬态仿真中caculator导不出数据的问题

瞬态仿真中caculator导不出数据的问题

时间:10-02 整理:3721RD 点击:
大家好,
小弟最近在做ADC的瞬态仿真,当仿真结束后,想用caculator的tabular results display功能来导出某个时间范围内的数据,比如说ADC输出D9~D0在0us~1000us范围内,每隔3.3333us的数据,但是会报错,错误如下:
-warning-
<calculator>
Evaluation error(ERROR: ("Insufficient virtual memory" 18 t nil ("*ERROR* Insufficient virtual memory. Malloc failed" nil ))).
Expression: Error
-warning-
<calculator>
Expression error(does not evaluate to a number). Expression: Error.
按照表面意思来看,应该是虚拟内存不足,但是我把取点数设置的只有10个点也不行,还是报错!
请问有谁碰到过这样或者类似的问题,如何解决?
谢谢各位了!

这有可能是Cadence 用自身带的很旧版本的Java的结果。
可以尝试装一下最新版的Java和Jre,然后让Cadence找到这个最新的Java并运行,就应该解决这个问题了。如果是IC6.1 版本,在$CDS_INST_DIR/tools/dfII/bin/viva中,改动
MAXHEAP=-Xmx${CDS_WAVESCAN_MAXHEAP:=1024M}
到256M就可以。

看看。

我用的是Cadence IC5141版本,您所说的Java和Jre这个我不懂,呵呵,请问应该怎么做?
谢谢您了!

那要补很多IT/UNIX的课哦,才能摆弄这个东西起来的.

额,那请问您有没有简单的方法可以把ADC的数据导出来啊?谢谢您了!

另外,之前我仿真了256个点和512个点的时候,有时候能够导出数据,有时候就报错,但是过很长时间后,又能把数据导出来,不知道是为什么?

你可以试着关掉现在的Cadence session, 然后在命令行打 wavescan ,只启动最小的部分。然后从Result Browser中装载你前面运行过的仿真数据,然后再照原样输出成表格。 如果这个不行的话,用简单的 printf 命令,每隔几个微秒打印一次到文件中,也是可以的,这样就彻底绕过了wavescan和Java了。你会用OCEAN不?这个需要打几行最基本的OCEAN命令,让系统找到你的ResultDir, 然后用
myfile=outfile("mydata.txt" "w")
for(n 0 1000000
prTime=n*3e-6
fprintf(myfile, "%f%.5f\n" prTime value(VT("/my_output_nde") prTime))
) ;; for n
close(myfile)

amodaman 牛人啊!
按照您说的第一种方法,在terminal中输入wavescan,启动Result Browser,装载仿真数据,再用caculator就可以输出了,但是输出了D9~D5时,D4就导不出来了,然后我就又重新在terminal中输入wavescan,重复步骤,导出D4~D0,呵呵!
请问这种方法的原理是什么?呵呵,很是不懂!
另外,您所说的第二种方法我没尝试,因为不会ocean语言,呵呵,希望您能详细的讲解下,免得第一种方法不行的时候使用第二种方法,呵呵!
真心感谢您!

第一种方法就是绕过了wavescan 程序自带的java所认为的内存不够的问题。

呵呵,谢谢您的指教!

OCEAN是SKILL语言的子集,专门围绕控制仿真流程的.
SKILL语法很像C, 但是内核是Scheme写成的. Scheme是类似于lisp的人工智能语言,处理list这种数据结构最强大,所以懂得list操作的人一般都很会写SKILL。SKILL的使用手册在装载目录中。Cadence公司的人认为,SKILL的处理能力是无限的。

amodaman,
您好!
最近仿真了INL和DNL,想要导出瞬态仿真时的数据,您所说的前面一种方法现在也导不出数据了,您能不能详细的说一下后面哪一种方法,就是用printf命令的方法?本人不会OCEAN,麻烦您了!谢谢了!

收藏了

这几天碰到了和LZ一样的问题,也是虚拟内存不足~我还在想在哪儿改个设置神马的~

请问您解决了没有?

非常有用,谢谢LZ,解决了我头痛了一年多的问题。另外,一般linux系统里面的java/jre版本是足够的,不需要升级,只需改一下MAXHEAP 就行了。
不过比较不明白的是,为什么由1024反而要改小而不是加大。

嘻嘻.

请问,如何让cadence找到最新的Java,能不能说说具体的方法啊?

多谢大神,解决了一个大问题

你好,请问5141版本也是直接找到MAXHEAP,然后将数值改小吗?

顶起来,最近也碰到了这个问题

谢谢,解决了个头疼问题

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

网站地图

Top