微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > 有关ocean脚本仿真有两个电源的多个corner,请高手帮我检查一下··急

有关ocean脚本仿真有两个电源的多个corner,请高手帮我检查一下··急

时间:10-02 整理:3721RD 点击:

我是一个初学者,望各位大侠多赐教啊万分感激
我是在ADE里面先设置好条件后,再导出的ocean脚本,然后做了点修改
最后跑出来的错误是: error eval:not a function-'("/home/project`````"  "tt")
反正是读不出模型文件。
ocean的脚本大致如下:
ocnWavefornTool('wavescan)
simulator('spectre)
design("/home/project/```/netlist")
resultDir("/home/project/`````/schematic")
tsm=list(
      (
        '("/home/project/```````/flash018.scs" "tt")
        '("/home/project/```````/flash018.scs" "tt_res")
        '("/home/project/```````/flash018.scs" "tt_3v")
      )
     (
        '("/home/project/```````/flash018.scs" "ss")
        '("/home/project/```````/flash018.scs" "ss_res")
        '("/home/project/```````/flash018.scs" "ss_3v")
      )
     (
        '("/home/project/```````/flash018.scs" "ff")
        '("/home/project/```````/flash018.scs" "ff_res")
        '("/home/project/```````/flash018.scs" "ff_3v")
      )
)
i=0
tmp=list(125 27 -40)
foreach(tsmc  tsm
foreach(temp tem
i=i+1
model_tsmc=list(tsmc " ")
modelFile(
     model_tsmc
    )
analysis('tran? stop "500n")
run()
selectResult('tran)
plot(`````````````````)
)
)

我看出来,你是想把每个不同的corner做成一个list
(
        '("/home/project/```````/flash018.scs" "tt")
        '("/home/project/```````/flash018.scs" "tt_res")
        '("/home/project/```````/flash018.scs" "tt_3v")
      )
但是这样modelFile看到的是一个list,其中只有一个元素,就是上面的值。
我的建议在下面的帖子中。

tsm=list("tt","ss","ff")
foreach(tsmc tsm
...
modelFile(
        list("/home/project/```````/flash018.scs" sprintf(nil,"%s",tsmc))
        list("/home/project/```````/flash018.scs" sprintf(nil,"%s_res",tsmc))
        list("/home/project/```````/flash018.scs" sprintf(nil,"%s_3v",tsmc))
        )
...
)

3# zhanglg
果然厉害啊! 终于有结果了啊!
非常感谢啊!
结果发现 图形很多很乱啊 每个参数它都跑了遍啊
如果我想把tt只跑27度,ss只跑125度,ff只跑-40度  这也怎样写循环啊?
好人做到底啊! O(∩_∩)O~
我也去查一些资料,如果知道的话,请告诉我啊!

4# taoying

CorTempList=list(
list("tt",27)
list("ss",125)
list("ff",-40)
)
foreach(CorTemp CorTempList
tsmc=nth(0,CorTemp)
Temp=nth(1,CorTemp)
;Set Corner
modelFile(
        list("/home/project/```````/flash018.scs" sprintf(nil,"%s",tsmc))
        list("/home/project/```````/flash018.scs" sprintf(nil,"%s_res",tsmc))
        list("/home/project/```````/flash018.scs" sprintf(nil,"%s_3v",tsmc))
        )
;Set Temp
temp(Temp);

)

核心思想就是为每一种仿真条件建立一个list。
上面使用了两个函数有点记不清楚了
nth()是从一个List中取数值,你自己确认一下参数的位置
temp()仿真温度的设定

6# zhanglg

恩 非常感谢啊!

哈,学习到了!

谢谢分享

确实学习了

 very good
thank you



    受教了,造福大家阿

感谢分享!

获益匪浅啊

谢谢 学习

学到好东西了

学习,碰到类似问题可以借鉴~

受益匪浅

非常不错。仔细看了帖后,对照自己写的ocean脚本,解决了相应的问题~

牛人,我要学习,哈哈

学到了。

学习了!

学海无涯

学习了。

学习到了,非常感谢。

nice
我是把整个的lib按照corner重新整理了一遍,直接一句 “blablabla.lib” “ss“ 就可以跑ss了,再用ADE的时候也比较方便~ 就是整合一堆libmdl费些时间

    怎么整合的啊?



   这个是可以的,但是怎么用这个文件在ADE直接run corner?比较久之前折腾过,现在忘记了,兄弟有什么高见吗?

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

网站地图

Top