cadenceskill语言简介

上传人:第*** 文档编号:31067891 上传时间:2018-02-04 格式:DOCX 页数:6 大小:23.95KB
返回 下载 相关 举报
cadenceskill语言简介_第1页
第1页 / 共6页
cadenceskill语言简介_第2页
第2页 / 共6页
cadenceskill语言简介_第3页
第3页 / 共6页
cadenceskill语言简介_第4页
第4页 / 共6页
cadenceskill语言简介_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《cadenceskill语言简介》由会员分享,可在线阅读,更多相关《cadenceskill语言简介(6页珍藏版)》请在金锄头文库上搜索。

1、 Cadence skill语言简介 Cadence提供二次开发的SKILL语言,它是一种基于通用人工智能语言Lisp的交互式高级编程语言(LISP即List Processing表处理,是最早和最重要的符号处理编程语言之一,它于1958年由美国的J. McCarthy提出,LISP在人工智能AI方面获得广泛应用)。SKILL语言支持一套类似 C语言的语法,大大降低了初学者学习的难度,同时高水平的编程者可以选择使用类似Lisp 语言的全部功能。所以SKILL语言既可以用作最简单的工具语言,也可以作为开发任何应用的、强大的编程语言。 SKILL可以与底层系统交互,也提供了访问Cadence各个工

2、具的丰富接口。用户可以通过Skill语言来访问,并且可以开发自己的基于 Cadence平台的工具。1. Skill语言和Lisp语言的关系Skill函数提供两种表示法,一种是代数表示法,现在大多数语言采取这种方式,即func( arg1 arg2 .),另一种是前缀表示法,类似于Lisp语言,即(func arg1 arg2 .)。这里举个例子作为对比: 1代数表示法procedure( fibonacci(n) if( (n = 1 | n = 2) then 1 else fibonacci(n-1) + fibonacci(n-2) ) )2前缀表示法(defun fibonacci (

3、n) (cond (or (equal n 1) (equal n 2) 1) (t (plus (fibonacci (difference n 1) (fibonacci (difference n 2) ) )这里可以看到类似Lisp语言的表示法后面有很多右括号,而且函数和参数容易混淆,所以一般推荐还是用常用的类C语言代数表示法Skill程序就像一个list表,类似Lisp语言,程序的操作就像操作数据(list) 一样,可以生成,修改,求值等 2. 关于 Skill函数SKILL语言支持一套类似 C语言的语法,初学者有了一定的 C语言基础,入门是很容易的。Cadence的工具可以通过CI

4、W,Bindkey,Form ,Menu等多种方式调用skill函数,送到skill语言的解释器来执行各种操作。其中CIW(Command Interpreter Window),即启动Icfb的第一个窗口,包含一些常用的menu,一个输入行,以及一个输出区域,这里是常用的debug skill程序的地方,当然cadence 也提供了Tools-Skill Development,有兴趣的话可以深入研究一下2.1 Skill函数的查阅方法Skill语言有n多函数,加上众多工具的接口函数,可以用成千上万来形容,初学者可能会感到晕头转向,无从下手。其实只要了解基本的变量,控制语句,输入输出以及一些

5、常用工具的基本函数就可以了,大多数函数都可以用到再查阅。开始学习skill时可以仔细看看SKILL Language User Guide,其他的可以用到时再查阅,这里列出几个经常会用到的文档:SKILL Language Reference Skill语言相关的函数,Cadence User Interface SKILL Functions Reference Cadence应用程序图形界面接口函数,Design Framework II SKILL Functions Reference,SKILL Custom Layout Reference,SKILL Schematic Comp

6、oser Reference分别是Cadence的Design Framework II,版图,电路的接口函数。当然还有其他众多工具的接口函数,因此Skill 需要方便的函数查阅方法,这里列出3种:1最简单的方法,看 /CDS.log文件或者CIW的输出区域,把Options- LogFilter都选上。这里一般可以查阅在图形界面下运行的函数,如图,我们可以看到画path线的函数以及输出结果等2在CIW里输入命令startFinder,或者在Terminal 上输入cdsFinder& . Finder适用于至少知道函数名的一部分,这里可以查到函数的用法简介。例如上图我们看到画path的函数是

7、leHiCreatePath(),但这是图形方式的函数,对应skill方式的函数呢用法呢,可以在Finder中输入 CreatePath,这样我们就可以看到包含有CreatePath的所有函数,如图,leCreatePath即是我们想找的函数,这里可以看到简单的用法介绍3上面我们查到的关于函数用法的介绍很简单,如何知道其详细介绍呢。当然如果你知道函数在那个文档里,直接打开就行了,如果不知道,就需要打开help的search功能,这里可以查到详细的功能用法。运行cdsdoc&, 点击Search打开Cadence help的搜索功能,工具会自动启动一个http服务,同时打开搜索网页,启动服务后,

8、你也可以在windows的IE里输入http:/hostname:9000/search.htm,同样可以打开搜索页面,需要注意的是,在C:WINNTsystem32driversetchosts文件中需要加入 hostname对应的ip,如: 127.0.0.1 localhost 10.0.10.2 host1 Cadence help的搜索功能默认是用 Netscape打开搜索网页,如果没有装Netscape,可能会打不开网页。可以先打开 firefox, mozila等浏览器,再启动cadence doc搜索http服务,这样就可以打开搜索网页了3. Skill语言简介Skill语言的

9、很多地方和C语言差不多,如变量,函数,控制结构,输入输出等,详细的介绍可以参考User Guide,这里只作简单介绍。3.1. Skill的变量不需要事先声明,Skill 第一次用到是会自动生成变量。变量可以由字符、数字、“_” 和 “?” 组成,注意第一个字符不能是数字和”?”。由于Cadence所开发的Skill中的变量、函数都是第一个字母小写,以_为开头的是Cadence 的专用函数,为了避免冲突,建议大家函数和变量命名都以大写字母开头。3.2. Skill的函数的调用方式有三种, strcat( Hello , everyone ! ) ;常见的类C格式 ( strcat Hello

10、, everyone ! ) ;类Lisp语言的格式 strcat Hello , everyone ! ;上面的括号可以省略 返回的结果都是= Hello, everyone! 推荐使用第一种方式,需要注意的是函数和第一个括号之间没有空格,否则会报错如: strcat ( Hello , everyone ! ) = *Error* eval: not a function - Hello 这是调用skill函数的一个常见问题,其它的问题还有: a. 软件没响应,比如在CIW中输入段代码,软件没有反映,什么结果也没有,一般是因为( )或者” “不成对造成的,一般可以通过键入 来解决,它表示补

11、充完不对称的括号(可以代替任意多个右括号),如果还没有响应,键入 “ 这时大部分情况下,系统会有响应b. 数据类型不匹配,如: strcat( Mary had a 5 ) =*Error* strcat: argument #2 should be either a string or a symbol (type template = S) 5 3.3. Skill List是Skill基于 Lisp(List Processing)语言的表现,它是skill数据对象的一个有序集合,skill数据甚至程序本身都可以看作是一个list,这是C语言中所没有的概念。下面是skill list的简

12、单例子List Explanation (1 2 3) A list containing the integer constants 1, 2, and 3 (1) A list containing the single element 1 ( ) An empty list (same as the special atom nil) (1 (2 3) 4) A list containing another list as its second element A). 创建list有以下几种基本的方法: Specify all the elements of the list lite

13、rally with the single quote ( ) operator. Specify all the elements as evaluated arguments to the list function. Add an element to an existing list with the cons function. Merge two lists with the append function. 1)用 和 list 定义一个list,注意两者的差别 a = 1 = 1 b = 2 = 2 ( a b 3 ) = ( a b 3 ) list( a b 3 ) = (

14、 1 2 3 ) 2)用cons命令添加一个元素到一个list的头部 result = ( 2 3 ) = ( 2 3 ) result = cons( 1 result ) = ( 1 2 3 ) 3)用append命令合并两个list Lista = ( 4 5 6 ) = ( 4 5 6 ) Listb = ( 1 2 3 ) = ( 1 2 3 ) Listc = append( Lista Listb) = ( 4 5 6 1 2 3 ) B). 访问list或者list中某些元素的方法: car访问list的第一个元素numbers = ( 1 2 3 ) = ( 1 2 3 )

15、car( numbers ) = 1 cdr访问list除了第一个元素外的其他元素,注意返回仍然是个list numbers = ( 1 2 3 ) = ( 1 2 3 ) cdr( numbers ) = ( 2 3 ) nth用索引访问list的某个元素,注意索引从0开始numbers = ( 1 2 3 ) = ( 1 2 3 ) nth( 1 numbers ) = 2 member检查指定的元素是否在指定的list中,它只检查顶层元素的元素,返回值是从搜到值开始到结尾的list numbers = ( 1 2 3 ) = ( 1 2 3 ) member( 4 numbers ) =

16、 nil member( 2 numbers ) = ( 2 3 ) length计算list所包含元素的个数numbers = ( 1 2 3 ) = ( 1 2 3 ) length( numbers ) = 3 C). 关于xy坐标或者bBox边界 list的访问在版图设计中,关于坐标的list是最长见的,它是一组2维的list ,常见的表示方法有:用 : 表示一个坐标的list,其结果和list命令一样,用xCoord和yCoord命令可以访问xy坐标 xValue = 300 yValue = 400 aCoordinate = xValue:yValue = ( 300 400 ) xCoord( aCoordinate ) = 300 yCoord( aC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号