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

模拟技术

2414人已加入

描述

这里这次我们给大家介绍一个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的主要功能如下图所示:

电路仿真

简单来说,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啦。


电路仿真

3. Examples of some Ocean Scripts.


电路仿真

上图是一个简单的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就开始运行了。怎么样,赶快去试试吧!



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分