介绍一个Analog design中的仿真利器

介绍一个Analog design中的仿真利器,第1张

这里这次我们给大家介绍一个Analog design中的仿真利器,Ocean Script

1. IntroducTIon.

OCEAN 的全名是 Open Command Environment for Analysis (OCEAN)。它其实是一种SKILL语言,或者说是子集。它可以自动配置Cadence中的仿真环境。

一般的Analog Designer都会用到ADE(Analog Design Environment)来对我们的电路进行仿真。然而在面对PVT各种变化组合大规模的仿真时,ADE进行设置往往会比较麻烦。这时,我们就可以使用Ocean Script来进行仿真的设置和控制。随着Cadence逐年进化,现在的ADE-XL功能越来越强大,也可以支持单个文件PVT等参数大规模的仿真设置。但作者君还是认为,应用熟练的Ocean Script要比ADE-XL的设置有效率许多。更更重要的是,Ocean允许从命令行执行仿真并从头到尾进行控制。这是一种No GUI的逼格和情怀!

具体说来,Ocean的主要功能如下图所示:

介绍一个Analog design中的仿真利器,poYBAGMAos-AIMKgAADq6psVTUY555.jpg,第2张

简单来说,Ocean主要有这两大功能:

参数分析:包括PVT的变化,此外还有其他一些仿真参数变量,比如设置的时钟频率,管子尺寸等等。

处理仿真数据:利用Ocean,我们可以只保存感兴趣的data,并将其直接存储在某个或批量文件里,即节省了储存空间,也便于仿真后的查阅。

2. GeneraTIng an Ocean Script Using ADE.

作为一种Script语言,当然你可以随便打开一个文本编辑器,然后从头开始编写。但我们一般并不这么做。作者君比较喜欢偷懒的方式,从ADE中导出Script。在ADE-L环境里,选择session-> Save Ocean Script;而在ADE-XL中,则是 File-> Save Script。保存下来的 .ocn文件,就是我们所要的Script啦。


介绍一个Analog design中的仿真利器,poYBAGMAouWAc3BlAACOSlWLFW8196.jpg,第3张

3. Examples of some Ocean Scripts.


介绍一个Analog design中的仿真利器,poYBAGMAovyARbR9AAC4t-JA7nw254.jpg,第4张

上图是一个简单的Ocean例子,请原谅我这拙劣的打码技巧。

我们可以看到,Ocean中的语句是和ADE GUI界面中的一一对应的。

1)simulator( 'spectre)是指该仿真所采用的仿真器

2)design( “your design netlist”) 是该仿真的netlist地址。

3)resultsDir( “results Dir”) 显示了储存结果的路径。

4)modelFile( “your model files”) 表明采用的model。

5)analysis( 'dc ? … ) 是仿真类型,从左图可见这个design里,我们进行dc和tran的仿真。

6)desVar( “vdd” 1.2) 是仿真中所设的变量。

7)temp(27) 是温度参数。

8)run() 是和GUI界面中那个绿色的run按钮一样。

9)plot() 是显示结果,这里只是简单的画出波形。还有许多查阅结果的command,可以参考用户手册。

这些其实大家了解一下就行了,介绍一个最最常用也是最最关键的一个语句:foreach

比如我们想仿真不同的负载电容Cload,代码如下:

Cload = list( 2p 4p 6p 8p ) ;不同电容值
foreach( val Cload
desVar( "Cload" val )
a=resultsDir( sprintf( nil "./Cload=%g" val ) ) ;每个Cload保存成单独文件
printf( "%L", a )
run( )
)
foreach( val Cload
openResults( sprintf( nil "./Cload=%g" val ) ) ;open simulaTIon results
selectResults( 'ac ) ; plot results.
plot( vdb( "vout" ) )
)

仿真中的每一个变量,如model,temp,vdd等等,都可以采用上面所展示的方法进行赋值和循环。这样,我们很容易就可以进行一系列庞大的仿真。

当然,这些PVT的仿真其实用ADE-XL也可以做到。但是,Ocean还可以进行不同文件的仿真,示例代码如下:

simulator('spectre)
design(...)
analysis('dc ...)
foreach(sTImFile '("file1.scs" "file2.scs" "file3.scs") ;不同的仿真文件netlist
stimulusFile(stimFile)
run()
printf(...) ;显示结果
)

基本上我常用的Ocean Script仿真方式就这些了,采用各种层层的for循环语句嵌套,可以产生庞大的仿真文件。于是乎,上吧,少年,用庞大的simulation去占领整个server的内存和硬盘吧!!

4. Executing an Ocean Script.

运行Ocean一般有两种方式,一种是在CIW的command line里输入:
 

load “yourscript.ocn”

 

另外一种是在Linux的terminal里输入ocean后,会进入Ocean的shell,然后再输入:

 

load “yourscript.ocn”

 

就这样,我们这些庞大的jobs就开始运行了。怎么样,赶快去试试吧!



审核编辑:刘清

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/3000480.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存