学会skill语言(1)——学习前的准备
在介绍「ocean脚本仿真」内容的时候已经对skill语言有了初步的了解,后台也有同学询问关于skill 语言的内容,接下来的一段时间小目同学就和大家一起学习关于skill语言的基础内容,希望通过学习,大家可以逐渐掌握skill语言并在工作和学习中灵活使用。
skill语言介绍
skill语言是Cadence软件平台使用的一种语言,由Lisp﴾List Processing language﴿发展而来,对于有编程基础的同学来说很容易掌握。
最容易上手的编程语言在Cadence软件平台中无论用户在图形界面做的任何操作,在底层都是通过调用相应的skill函数或者程序实现功能的,可以认为Cadence软件平台上凡是可以通过图形界面实现的功能都可以使用相应的skill代码实现,对于图形界面不方便完成的操作也可以通过编写skill脚本完成。
使用CIW窗口
CIW﴾Command Interpreter Window﴿是启动Virtuoso图形界面之后首先出现的窗口,在CIW中可以通过图形界面进行很多操作,也可以直接在CIW中输入指令操作Virtuoso,还可以通过CIW观察指令运行信息。
CIW窗口是skill语言学习过程中最有力的工具,任何skill语法都可以在CIW内得到验证。通过设置可以让skill语言显示图形界面操作对应的skill代码,合理利用这一功能可以大大提高编写skill脚本的效率,特别对于不熟悉skill脚本的同学来讲,这一功能十分有用。
在CIW内输入相应的命令,回车之后运行结果会在输出窗口显示,包括命令运行结果以及返回值等。
在CIW内的菜单栏,通过选择:Options‐>Log Filter,打开Log文件设置窗口,通过勾选相应的选项,设置Log文件的输出内容,方便用户回顾软件运行情况,所有在CIW输出窗口显示的内容都会保存在该
CIW相应的CDS.log文件内。
至于Log文件设置窗口中每个符号代表的意义可以通过符号后面的解释知晓,CDS.log文件中的每一行信息也都通过相应的符号进行注释。
在CIW的菜单栏内还包含其它设置,包括更改输入栏高度、设置tab键宽度等,花里胡哨的操作暂且不管,请大家记住一件事:脑子里所有的skill语句都应该在CIW里面运行一遍,加以验证,这是最推荐也是最高效的skill语言学习方法,现在就可以开始尝试啦!
skill语言的算术逻辑运算
skill语言中的算术运算符:skill语言中的算术运算符基本和其他编程语言一样,包括赋值运算符、加、减、乘、除等,具体运算符号和用法可以从下面表格中看到。
算术运算符
skill语言中的关系和逻辑运算符:skill语言中的关系运算符和其它编程语言一样,包括大于、小于等,具体运算符号和用法可以从下面表格中看到,但是逻辑运算符的返回值会和平时接触的语言有
不同,可以从示例中看到。
关系和逻辑运算符
算术逻辑运算的结果可以在CIW中观察到,并且算术逻辑运算有优先级,用户可以通过设置在CIW 中显示出运算的处理过程。
在CIW中输入:tracef﴾t﴿语句并回车,之后CIW会显示出算术逻辑运算的进行过程,在对计算结果有疑
问的时候可以打开该选项对程序加以验证,使用:untrace﴾﴿语句关闭该功能,使用小括号「﴾﴿」运算符可以很好地控制算术逻辑运算的顺序。
skill语言的变量
skill语言和其它所有编程类语言一样,有各种数据类型,但是又不像c语言那样需要在变量使用前做变量声明,skill语言的变量使用跟python语言很像,变量基本上是即拿即用,无需声明,可以在
CIW界面验证:
skill语言中,分号「;」是行注释标志,一行中分号后面的内容在程序执行时忽略,使用「/.../」符号实现多行注释,编程时要养成使用注释语句的良好习惯。
虽然skill语言中变量类型使用起来更加灵活,但是一定要注意不同变量类型的区别,由于skill语言运用在Cadence环境中,所以变量类型很多,且不易掌握,可以使用type﴾﴿函数查询变量类型。
skill语言的函数
Cadence平台的所有功能都依赖于各种各样功能的函数实现,可以说函数是skill语言很重要的一个组成部分,也是模块化编程中很重要的一个概念。
skill语言有不同的函数定义方法,下面分别展示了常用的函数定义方法与Lisp语言风格的skill函数定义方法,推荐使用第一种方法,与大家熟悉的函数定义方法类似。
1;; in algebraic notation style of programming
2
3procedure( fibonacci(n)
4 if( (n == 1 || n == 2) then
5 1
6 else
7 fibonacci(n‐1) + fibonacci(n‐2)
8 )
9)
10
11;; in Lisp style of programming
12
13(defun fibonacci (n)
14 (cond
15 ((or (equal n 1) (equal n 2)) 1)
16 (t (plus (fibonacci (difference n 1))
17 (fibonacci (difference n 2))))
18 )
19)
上面介绍的内容只是skill语言最基本的内容,目的是让大家对skill语言有一个初步的认识,建立学习信心,希望后面可以和大家一起慢慢掌握skill语言的编写、使用技巧等,更多关于skill语言的内容也可以参考Cadence官方手册:Cadence SKILL Language User Guide,Cadence SKILL Language Reference等。
另外,关于skill语言的编辑器使用和设置,小目同学在「ocean脚本实现corner仿真(2)」与「ocean脚本实现corner仿真(3)」中都有介绍,大家可以按照文章中介绍的工具进行设置。
以上是本次准备的所有内容,各位同学如果有问题可以在文章评论处【随时提问】,也欢迎各位同学通过首页菜单栏【更多功能‐领优惠券】领取优惠券并加入知识星球,下载相关资料。
因为小目同学个人水平有限,文中如有任何不当之处,还请【指正】,谢谢!
简介
作者:小目(号:student_xiaomu)
:IC技能搬运工(ID:ICSkillSharing)是一个共同学习的平台,分享最新IT类资讯、原创内容、IC中脚本语言的教程与使用心得、模拟IC新手在学习过程中遇到的问题等,与大家一起成长进步!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论