微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > DX帮小弟看看这个ocean脚本错在哪里了,谢谢

DX帮小弟看看这个ocean脚本错在哪里了,谢谢

时间:10-02 整理:3721RD 点击:
小弟刚开始学着用ocean脚本来做corner仿真,但是无法仿真下去,下面是小弟的脚本,
ocnWaveformTool( 'wavescan )
simulator( 'spectre )
design("/home/xjq28007/simulation/LC_VCO_V2_1920M_corners/spectre/schematic/netlist/netlist")
resultsDir( "/home/xjq28007/simulation/LC_VCO_V2_1920M_corners/spectre/schematic" )
silter=list(
(
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_to_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_bjt_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_res_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_mim_cap_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_nvar_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18rf_vpcd_inductor_rev0_2.scs" "section=c18rf_vpcd_tt")
)
(
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_to_ff")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_bjt_max")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_res_max")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_mim_cap_max")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_nvar_max")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18rf_vpcd_inductor_rev0_2.scs" "section=c18rf_vpcd_max")
)
(
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_to_ss")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_bjt_min")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_res_min")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_mim_cap_min")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_nvar_min")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18rf_vpcd_inductor_rev0_2.scs" "section=c18rf_vpcd_min")
))
i=0
tmp=list(125 27 -40)
foreach(silterra silter
foreach(temp tmp
i=i+1
model_silter=list(silterra)
modelFile( model_silter)
analysis('pss ?fund "1.5G"?harms "5"?errpreset "conservative"
?tstab "500n"?oscana t?p "/OUTPUTN"?n "/gnda"
?param "vctrl"?start "0"?stop "2.5"?sweepStep "0.2"
?restart ""?ic "dc"?method "gear2only"?tstabmethod "gear2only"
?ppv "")
)
desVar("vdd33" 3.3)
desVar("vctrl" 2.5)
desVar("vctrlN" "2.5-vctrl")
envOption(
'firstRunt
)
run()
harm\=1\ freq\;\ pss\ \(Hz\) = harmonic(xval(getData("/ACGND" ?result "pss_fd")) '1)
plot( harm\=1\ freq\;\ pss\ \(Hz\) ?expr '( "harm=1 freq; pss (Hz)" ) )
)
)
提示的错误是:
*Error* eval: not a function - '("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_to_tt")

先谢谢大家了!

跪求指点一二,小弟对编程语言是在是愚钝,第一次照猫画虎,谢谢大家了!

请大家帮忙看看吧,谢谢!

大家帮忙啊,跪谢!

list列的不对。你怎么用括号把他们分成三段呢?另外我猜“section=”应该是不需要的。

silter=list(
(
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_to_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_bjt_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_res_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_mim_cap_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_nvar_tt")
'("/home/xjq28007/project/work/cadence/models/spectre_corners/c18rf_vpcd_inductor_rev0_2.scs" "section=c18rf_vpcd_tt")
)
把这里面的东西,用 include "/home/xjq28007/project/work/cadence/models/spectre_corners/c18_core18_io33_header_spectre.scs" "section=c18_to_tt"的形式存到ttt.scs文件里,其他两个也用这种形式存到fff.scs和sss.scs文件里,
然后: silter=list("/home/xjq28007/project/work/cadence/models/spectre_corners/ttt.scs", "/home/xjq28007/project/work/cadence/models/spectre_corners/fff.scs","/home/xjq28007/project/work/cadence/models/spectre_corners/sss.scs")
这样简洁直观。你的问题出在没有加include这个命令

谢谢这位大哥了,我的问题解决了,就是因为没有include的原因,按照你的方法,我已成功解决,留个联系方式吧,在深圳或者来深圳的话请你吃饭,

有这等好事啊
以后不搞IC开班培训Ocean去了

小编在深圳么?

在啊,科技园这里上班,一家很小的公司
之前这个比较郁闷,
不知道该怎么办了,
6楼的给了思路,帮助还是很大的,

学习了

唉,我也是同样的问题,用的GF的库比较恶心,乱

麻烦大神帮我看一下程序哪地方错了,主要是list和modelFile的用法是否正确,谢谢!
;; * corner_np_ctrl begin
for(corner_np_ctrl 1 2 3
if(corner_np_ctrl == 1 corner1="/home/zhangwei/ocean/model_nptt.scs")
if(corner_np_ctrl == 2 corner1="/home/zhangwei/ocean/model_npss.scs")
if(corner_np_ctrl == 3 corner1="/home/zhangwei/ocean/model_npff.scs")
;; * corner_rc_ctrl begin
for(corner_rc_ctrl 1 2 3
if(corner_rc_ctrl == 1 corner2="/home/zhangwei/ocean/model_rctt.scs")
if(corner_rc_ctrl == 2 corner2="/home/zhangwei/ocean/model_rcss.scs")
if(corner_rc_ctrl == 3 corner2="/home/zhangwei/ocean/model_rcff.scs")
;; * corner_bjt_ctrl begin
for(corner_bjt_ctrl 1 2 3
if(corner_bjt_ctrl == 1 corner3="/home/zhangwei/ocean/model_bjttt.scs")
if(corner_bjt_ctrl == 2 corner3="/home/zhangwei/ocean/model_bjtss.scs")
if(corner_bjt_ctrl == 3 corner3="/home/zhangwei/ocean/model_bjtff.scs")

;; * Vpower_ctrl begin
for(Vpower_ctrl 1 2
if(Vpower_ctrl == 1 then Vpower=2.7 Vpower_path="v2.7")
if(Vpower_ctrl == 2 then Vpower=3.6 Vpower_path="v3.6")
;; * T_ctrl begin
for(T_ctrl 1 2
if(T_ctrl == 1 then T=-40 T_path="T-40")
if(T_ctrl == 2 then T=85 T_path="T85")

corner=list(corner1,corner2,corner3)

printf("The current simulation: %s Vpower=%4.2f temp=%d \n" corner Vpower T)

save_path=strcat("/home/cds/simulation/sim_sdm/spectre/corner_tran" "_" substring(corner -8 4) "_" Vpower_path "_" T_path)

ocnWaveformTool( 'awd )
simulator( 'spectre )

;; change the netlist to delete the capacitance of mim cap

design( "/home/cds/simulation/sim_sdm/spectre/corner_tran/netlist/netlist")

resultsDir( save_path )

modelFile( corner)

include这句加在哪里啊?

include这句加在最开始么?

include不加肯定有问题的,只是不用循环也太那个了吧......

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

网站地图

Top