这里这次我们给大家介绍一个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 ) ;不同电容值 仿真中的每一个变量,如model,temp,vdd等等,都可以采用上面所展示的方法进行赋值和循环。这样,我们很容易就可以进行一系列庞大的仿真。 当然,这些PVT的仿真其实用ADE-XL也可以做到。但是,Ocean还可以进行不同文件的仿真,示例代码如下: simulator('spectre) 基本上我常用的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就开始运行了。怎么样,赶快去试试吧! |