微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > ocean PVT仿真

ocean PVT仿真

时间:10-02 整理:3721RD 点击:
请教下,用ocean 仿真PVT后,可以看到所有情况下的仿真波形,但问题是波形太多了,我如何知道哪一条波形是什么情况下的仿真结果,有没什么快捷的办法,找出某条波形所对应的corner、temp、vdd的值。我现在的办法是,选中想知道的波形,然后慢慢找,看下是第几条曲线,然后再根据循环语句来计算得到结果,这样太痛苦了,恳请大虾支招。

在每个循环中加一句打印当次循环的编号和PVT参数到一个文件,用文件和图对照着看,就知道编号所对应的PVT了。

plot(your_signal ?expr'("your_corner"))

比较习惯把波形里需要的信息用公式表示出来,然后打到CSV文件里

能不能具体点,把语句也给我。呵呵,我是菜鸟。

能不能具体点,我初学ocean。下面是我的语句,能不能告诉我加在哪?ocnWaveformTool( 'wavescan )
simulator( 'spectre )
design(
"/home/simulation/sim_vref/spectre/schematic/netlist/netlist")
resultsDir( "/home/simulation/sim_vref/spectre/schematic" )
mvCorner=list( "sp_mv_ff" "sp_mv_fs" "sp_mv_ss" "sp_mv_sf")
bjtCorner=list( "sp_bjt_min" "sp_bjt_max")
mimCorner=list( "sp_mimcap_min" "sp_mimcap_max")
lvCorner=list("sp_lv_tt")
resCorner=list( "sp_resistor_min" "sp_resistor_max")
tmp=list(-4085)
vlot=list(2.3 3 3.7)

foreach(lv lvCorner
foreach(mv mvCorner
foreach(bjt bjtCorner
foreach(res resCorner
foreach(mim mimCorner
foreach(temp tmp
foreach(vdd vlot
i=i+1
modelFile(
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",lv)
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",mv)
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",bjt)
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",res)
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",mim)


)
analysis('tran ?stop "50u"?errpreset "conservative")
desVar(
"VCI" vdd
)
temp( temp)
run()
selectResult( 'tran )
plot(getData("/I0/Vbg") )
)
)
)
)
)
)
)

能不能具体点,我初学ocean。下面是我的语句,能不能告诉我加在哪?ocnWaveformTool( 'wavescan )
simulator( 'spectre )
design(
"/home/simulation/sim_vref/spectre/schematic/netlist/netlist")
resultsDir( "/home/simulation/sim_vref/spectre/schematic" )
mvCorner=list( "sp_mv_ff" "sp_mv_fs" "sp_mv_ss" "sp_mv_sf")
bjtCorner=list( "sp_bjt_min" "sp_bjt_max")
mimCorner=list( "sp_mimcap_min" "sp_mimcap_max")
lvCorner=list("sp_lv_tt")
resCorner=list( "sp_resistor_min" "sp_resistor_max")
tmp=list(-4085)
vlot=list(2.3 3 3.7)

foreach(lv lvCorner
foreach(mv mvCorner
foreach(bjt bjtCorner
foreach(res resCorner
foreach(mim mimCorner
foreach(temp tmp
foreach(vdd vlot
i=i+1
modelFile(
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",lv)
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",mv)
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",bjt)
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",res)
list("/home/yuqh/simulation/model_lib/sp_header_spectre.scs",mim)


)
analysis('tran ?stop "50u"?errpreset "conservative")
desVar(
"VCI" vdd
)
temp( temp)
run()
selectResult( 'tran )
plot(getData("/I0/Vbg") )
)
)
)
)
)
)
)

试着把最后一句脚本要改;
Vbg=VT("/I0/Vbg")
plot(Vbg ?expr list(strcat(vdd temp lv mv bjt res mim)))

analysis('tran ?stop "50u"?errpreset "conservative")
desVar(
"VCI" vdd
)
temp( temp)
run()
selectResult( 'tran )
Vbg=VT("/I0/Vbg")
plot(Vbg ?expr list(strcat(vdd temp lv mv bjt res mim)))

)
)
)
)
仿真结果为:
*Error* strcat: argument #1 should be either a string or a symbol (type template = "S") - 2.3*Error* load: error while loading file - "vref_bg.ocn"

我把语句改为:Vbg=VT("/I0/Vbg")plot(Vbg ?expr list(strcat("vdd" "temp" "lv" "mv" "bjt" "res" "mim")))

仿真不会出错,但显示结果为下图




还是没得到想要的结果,应该是循环语句没把值赋给输出。



i=i+1之后加
v=desVar("vdd" vdd)
然后把list(strcat())括号里的vdd换成v;你看是不是能够显示电压。

我把语句改为:Vbg=VT("/I0/Vbg")plot(Vbg ?expr list(strcat("vdd" "temp" "lv" "mv" "bjt" "res" "mim")))

仿真不会出错,但显示结果为下图


还是没得到想要的结果,应该是循环语句没把值赋给输出。

非常感谢了。现在可以了 。我加了语句i=i+1v=desVar("vdd" vdd)
t=desVar("temp" temp)
mvcor=desVar("mv" mv)
bjtcor=desVar("bjt" bjt)
rescor=desVar("res" res)
mimcor=desVar("mim" mim)
Vbg=VT("/I0/Vbg")
plot(Vbg ?expr list(strcat(mvcor bjtcor rescor mimcor v t)))

仿真结果除了最后一个t(温度)显示不了,其他都可以了。

t是保留变量,你换个别的名字就行了;

还有, i=i+1没看出有什么用;

感觉温度这个变量是被定义过了还是怎样,有点怪,怎么弄就是显示不出来,把t改成其他字母它就出错。

t是保留变量,是命令执行以后返回的表示done的量;换成其他的名字就没问题了;注意要换两处:desvar和strcat

好东西,学习了!

temp直接当参数传递给strcat或者list是被当做fixnum来处理的,而strcat或者list接受的参数类型是string或者symbol。所以需要提前将temp用concat函数转换为symbol。
concat的具体用法是:
temp_symbol=concat(temp)
然后将temp_symbol作为list的参数

dsfdsfdf



这个怎么学习?函数的用法,还有ocean。

基本上只能看manual和userguide

xue xi

您好,我现在还是有一个问题,我想用ocean脚本跑PVT,现在温度和工艺角都可以跑起来,但是电源电压依旧跑不起来,你能帮我看看脚本问题出在哪吗?谢谢啦~

现在运行脚本总提示vpwer是无约束变量,应该怎么改?

foreach(vpower Vpower
此句中的Vpower的确没有定义,应该换成VDD

desVar里的Vpower是不是也要换成VDD?我换了之后报错,ERROR:input.scs8:Unexpected quotedstring ””4.5”
ERROR:input.scs8:Badly formed parameters statement

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

网站地图

Top