CadenceSkill语言简介

合集下载

Cadence应用如何在allegro中使用skill

Cadence应用如何在allegro中使用skill

Cadence应⽤如何在allegro中使⽤skillCadence软件应⽤:如何在Allegro中执⾏SkillHow to Perform Skills in Allegro ToolsDoc Scope : Allegro SkillDoc Number : SFTEC11005Author : Daniel ZhongCreate Date : 2011-11-09Rev : 1.00⽬录1Skill简介 (3)2在Allegro命令⾏中加载和调⽤Skill (3)2.1命令⾏加载Skill (3)2.2命令⾏调⽤Skill (4)3在Allegro启动时加载Skill (5)3.1allegro.ilinit⽂件 (5)3.2编辑allegro.ilinit (7)4在Allegro菜单栏上调⽤Skill (8)4.1Allegro系列⼯具的菜单⽂件(.men) (8)4.2菜单⽂件搜索路径 (10)4.3定制菜单 (11)1Skill简介Skill是Allegro软件⼆次开发的接⼝,⽤此语⾔编译的⽂件可以在Allegro中载⼊和调⽤。

我们可以通过编写不同的Skill程序⽂件,在Allegro⼯具中实现各种原有命令不能实现或不⽅便实现的功能。

Skill语⾔的语法结构和C++语⾔类似,⼯程师如果有⼀定C语⾔编程基础,使⽤Skill语⾔时就会很⽅便了。

对于Skill程序的⽤户,不需要对Skill语⾔有过多的了解,只需要知道如何在Allegro中加载和调⽤Skill即可,本⽂就是介绍了如何加载和调⽤Skill,可以采⽤两种⽅式:■在Allegro命令⾏中加载和调⽤■在Allegro启动⾃动加载,在Allegro菜单上调⽤2在Allegro命令⾏中加载和调⽤Skill本章介绍如何在Allegro命令⾏中加载和调⽤Skill,分为以下两个⼩节:■命令⾏加载Skill■命令⾏调⽤Skill2.1命令⾏加载Skill以本站资源下载中的⼀个skill程序clinecut.il为例,将此⽂件移动或复制allegro设计⽂件(.brd)所在⽬录。

(完整word版)cadence软件介绍

(完整word版)cadence软件介绍

1.Allegro PCB Design CISAllegro PCB Design CISAllegro Designer Entry CIS集成强大的原理图设计功能,其特点主要是具有快捷的元件信息管理系统(CIS),并具有通用PCB设计入口。

扩展的CIS功能可以方便地访问本地元件优选数据库和元件信息。

通过减少重新搜索元件信息或重复建库,手动输入元件信息,维护元件数据的时间,从而可以提高生产率。

无论是设计全新的模拟,数字,或混合信号电路,还是修改现有电路板的电路原理图,或进行层次结构电路图设计,Allegro Designer Entry CIS提供电路设计从构思到生产所需的一切。

Allegro Designer Entry CIS是全球应用最多且经过生产验证的原理图输入工具和强大的元件信息管理系统。

优点1、提供快捷,直观的,具备完备功能的原理图编辑工具2、通过层次式和变体(基于同一原理图,不同机型导出)设计提高复杂原理图的设计效率3、具备强大功能的CIS,帮助加速设计进程,降低项目成本4、原理图提供的自动缩放/搜索/导航功能,结合Allegro PCB Editor之间的交互探测和交互摆放,和集成的AMS—Simulatuor帮助提供设计的可生产性5、减少重复搜寻元件信息的时间,接收来自MRP,ERP和PLM的数据和支持关系型数据库使智能选择元件成为可能6、通过直接访问ActiveParts和ActiveParts门户网站,提供给选择原理图设计所需要的元件和直接获取器件供应商元件数据更大的便利,ActiveParts提供了超过200万份的元器件数据7、通过FPGA输出/输入双向数据流程自动整合可编程门阵列(FPGA)和可编程逻辑器件(PLD),从而缩短设计时间功能特色全功能原理图编辑器Allegro Designer Entry CIS,带有拼接式和层次式的原理图页面编辑器,它具有快捷、直观的原理图编辑的特点。

Cadence_Skill_语法详解(中文)

Cadence_Skill_语法详解(中文)

常量、变量常量是它的值等于自身的表达式,如123,”abc”…变量是保存了其它值的表达式,如x=3, x即变量。

算术与逻辑操作符函数名语法对应操作符Data Accessarrayref a[index] [ ] setarray a[index] = exprbitfield1 x<bit> <> setqbitfield1 x<bit>=exprsetqbitfield x<msb:lsb>=exprquote 'expr 'getqq g.s .getq g->s -> putpropqq g.s=expr, g->s=expr putpropq d~>s, d~>s =expr ~>Unarypreincrement ++s ++ postincrement s++ ++ predecrement --s -- postdecrement s-- -- minus -n -not !expr !bnot ~x ~Binaryexpt n1 ** n2 ** times n1 * n2 * quotient n1 / n2 / plus n1 + n2 + difference n1 - n2 - leftshift x1 << x2 << rightshift x1 >> x2 >> lessp n1<n2 < greaterp n1>n2 > leqp n1<=n2 <= geqp n1>=n2 >= equal g1 == g2 == nequal g1 != g2 != band x1 & x2 & bnand x1 ~& x2 ~& bxor x1 ^ x2 ^ bxnor x1 ~^ x2 ~^ bor x1 | x2 | bnor x1 ~| x2 ~|and x1 && x2 &&or x1 || x2 ||range g1 : g2 :setq s = expr =对于既有函数名又有操作符函数,采用函数名调用和采用操作符调用的效果是一样的。

cadence简介

cadence简介
3
现在需要设置元件参数,有三种方法,①菜单栏-> Edit-> Properties-> Objects,再点击要修改参数的元件,②先选中器件,再键入快捷键q,③选中器件,再点击工具栏Propertiy。
参数可以是以下三种形式的各种数学组合表达式,①变量,②常量,③skill语言函数。变量作参数会在仿真时用到。常量和skill语言函数作参数,在下面就会用到。
同样的方法继续设置NMOS参数,只是模型名为n18,栅长为固定值0.18u,栅宽设为pPar(“wn”)。设置好参数后的电路图如图3.9所示。
注意:①设置参数时不要自己输入单位,系统会自动加上。比如0.18uM是错误的写法。如果非要自己写单位,也要和数值之间留一个空格,否则系统会把M识别为变量。
2.
现在,我们可以启动Cadence了。在终端中输入命令
icfb&
出现Cadence初始界面,如图2.1所示。
然后就会打开Cadence的主控窗口CIW(Command Interpreter Window)。如图2.2所示:
这就是Cadence的集成设计环境,Cadence的大部分工具都可以从这里打开。其中最上方是标题栏,第二行是菜单栏。中间部分是输出区域,许多命令的结果在这里显示。一些出错信息也在这里显示,要学会从输出区域中获取相应的信息。接下来一行是命令输入行。Cadence的许多操作可以通过鼠标执行,也可以通过输入命令来执行。
进入连线命令后,于起点单击左键,再于终点单击左键。画完一段导线后,此时并没有退出画线命令,可以继续画连接线,直到画完所所有的连接线后,按ESC退出画线命令。连好线的电路图如图3.7所示。其中左右两条水平导线是后面连连接端口用的。
还可以对画好的线进行命名,键入快捷键l,在弹出的对话框中输入线名,比如a,点击Hide,然后将字母a移动到要命名的线附近点击左键放下,如果名字离线较远,则要求再单击所要命名的线。

cadence简介

cadence简介
.cdsinit文件:包含Cadence的一些初始化设置以及快捷键设置。
实际上,机房中我们已将各配置文件写好,只要在终端中执行
cds.setup
Cadence的相关配置文件就已经自动设置完毕。如果用户在启动Cadence后,发现无法使用快捷键,则需要把.cdsinit从Cadence的安装目录中拷贝到自己的工作目录下,在终端中输入:
此外还有一个What’new窗口,介绍Cadence新版本特性,不必理会,双击左上角将其关闭。
2.5
Cadence是以库来组织文件的。为了使我们的工作和系统自带库区别,我们需要建立自己的工作库。有两种方法来建立新库,一是通过菜单栏Tools->Library Maneger打开库管理器,另一种是通过File->New->Library来建立新库。这里我们用第一种方法建立新库。单击菜单栏Tools->Library Maneger,会打开LM(Library Maneger)窗口,如图2.3所示。
②点击工具栏的zoomin和zoomout按钮可以放大缩小电路图。键入快捷键f可以使电路图自动缩放到合适大小。
③编辑电路图过程中注意要及时保存,保存方法是菜单栏->Design->Save,也可以键入快捷键大写的S(Shift+s)来保存。
3
现在,我们要开始画一个标准的CMOS反相器。一个反相器包括PMOS,NMOS,VDD,GND。
同样的方法继续设置NMOS参数,只是模型名为n18,栅长为固定值0.18u,栅宽设为pPar(“wn”)。设置好参数后的电路图如图3.9所示。
注意:①设置参数时不要自己输入单位,系统会自动加上。比如0.18uM是错误的写法。如果非要自己写单位,也要和数值之间留一个空格,否则系统会把M识别为变量。

cadence软件介绍

cadence软件介绍

1.Allegro PCB Design CISAllegro PCB Design CISAllegro Designer Entry CIS集成强大的原理图设计功能,其特点主要是具有快捷的元件信息管理系统(CIS),并具有通用PCB设计入口。

扩展的CIS功能可以方便地访问本地元件优选数据库和元件信息。

通过减少重新搜索元件信息或重复建库,手动输入元件信息,维护元件数据的时间,从而可以提高生产率。

无论是设计全新的模拟,数字,或混合信号电路,还是修改现有电路板的电路原理图,或进行层次结构电路图设计,Allegro Designer Entry CIS 提供电路设计从构思到生产所需的一切.Allegro Designer Entry CIS是全球应用最多且经过生产验证的原理图输入工具和强大的元件信息管理系统。

优点1、提供快捷,直观的,具备完备功能的原理图编辑工具2、通过层次式和变体(基于同一原理图,不同机型导出)设计提高复杂原理图的设计效率3、具备强大功能的CIS,帮助加速设计进程,降低项目成本4、原理图提供的自动缩放/搜索/导航功能,结合Allegro PCB Editor之间的交互探测和交互摆放,和集成的AMS—Simulatuor帮助提供设计的可生产性5、减少重复搜寻元件信息的时间,接收来自MRP,ERP和PLM的数据和支持关系型数据库使智能选择元件成为可能6、通过直接访问ActiveParts和ActiveParts门户网站,提供给选择原理图设计所需要的元件和直接获取器件供应商元件数据更大的便利,ActiveParts提供了超过200万份的元器件数据7、通过FPGA输出/输入双向数据流程自动整合可编程门阵列(FPGA)和可编程逻辑器件(PLD),从而缩短设计时间功能特色全功能原理图编辑器Allegro Designer Entry CIS,带有拼接式和层次式的原理图页面编辑器,它具有快捷、直观的原理图编辑的特点。

Cadence skill语言简介

Cadence skill语言简介Cadence提供二次开发的SKILL语言,它是一种基于通用人工智能语言—Lisp 的交互式高级编程语言(LISP即List Processing-表处理,是最早和最重要的符号处理编程语言之一,它于1958年由美国的J. McCarthy提出,LISP在人工智能AI方面获得广泛应用)。

SKILL语言支持一套类似C语言的语法,大大降低了初学者学习的难度,同时高水平的编程者可以选择使用类似Lisp语言的全部功能。

所以SKILL语言既可以用作最简单的工具语言,也可以作为开发任何应用的、强大的编程语言。

SKILL可以与底层系统交互,也提供了访问Cadence各个工具的丰富接口。

用户可以通过Skill语言来访问,并且可以开发自己的基于Cadence平台的工具。

1. Skill语言和Lisp语言的关系Skill函数提供两种表示法,一种是代数表示法,现在大多数语言采取这种方式,即func( arg1 arg2 ...),另一种是前缀表示法,类似于Lisp语言,即(func arg1 arg2 ...)。

这里举个例子作为对比:1.代数表示法procedure( fibonacci(n)if( (n == 1 || n == 2) then1else fibonacci(n-1) + fibonacci(n-2)))2.前缀表示法(defun fibonacci (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_skil

cadence_skilBR 6/001SKILL –Cadence Extension LanguageSKILL is powerful extension language that can be used to add new capabilities to Cadence toolsSKILL is based upon LISP, will look very strange if you are not already familiar with LISP –LISP is a interpreted language that is popular among the AI community–LISP has a built-in eval function that can be used to execute LISP code that is dynamically generated–The basic data structure in LISP is the list, with many built-in functions for manipulaing list data structures–SKILL also supports a syntax form that is more ‘Pascal’-likeThe key to SKILL’s power is a large set of library functions that allow you to manipulate data structures such as cells, nets, mask information, etc.BR 6/002To Get Help On SkillTo get help on SKILL, click on the Help menu from within the Cadence layout editor, then on “Openbook Main Menu ”. Choose the ‘SKILL and SKILL PI to open the Skill documentation.Herefirst,ThenhereA Sample SKILL FunctionThis SKILL function will create a padframe with X numberof pads per side:procedure(placePadFrame(@optional no_pads)(if(null no_pads)then(setq no_pads(enterNumber?prompts'("Please enter the number of pads on a side"))))(setq xpointh291)(setq ypointh201)(setq xpointv201)(setq ypointv291)(for i1no_pads(dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial" "PADNC""layout")nil(list xpointh ypointh)"R180") (dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial" "PADNC""layout")nil(list xpointh-90ypointh+no_pads*90)"R0") (setq xpointh xpointh+90))BR 6/003SKILL function (cont)(for i1no_pads(dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial" "PADNC""layout")nil(list xpointv ypointv-90)"R90") (dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial" "PADNC""layout")nil(list xpointv+no_pads*90ypointv)"R270") (setq ypointv ypointv+90))(dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial""PADFC" "layout")nil(list xpointv-300ypointv-90)"R0") (dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial""PADFC" "layout")nil(list xpointh-90ypointv+210)"R270") (dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial""PADFC" "layout")nil(list xpointh+210201)"R180") (dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial""PADFC" "layout")nil(list201-99)"R90"))BR 6/004BR 6/005Comments on SKILL functionContained in file called ‘pads.il’–To load function, in icfb command line type “load pads.il”–To execute function, have a layout view open and type “placePadFrame 10” if you want 10 pads per sideUses the dbCreateInst function for instance creation–Documented in DFII SKILL Functions ReferenceFunction parameters are:–d_cellview -cellview where instance is placed–d_master –master cell view of the instance to be created–t_name –instance name. If ‘nil’ is used, then generate an instance name –l_point –origin of new instance as 2-element list –orientation of new instance as a string, some possible strings are “R0”, “R90”, “R180”, “R270”BR 6/006dbCreateInstThe function getEditRep was used to return the currently open cell viewThe function dbOpenCellViewByType was used to specify the master view of the instance to be placed.–The minimum set of parameters to dbOpenCellViewByType arelibrary_name, cell_name, view_name–See docs for other optional parametersThe list function used to create a list required to pass instance origin–(list first_elem second_elem .. N_elem)returns a N-element listCreating an Rows x Cols Array of Instances procedure(placeArray(@optional cols rows cellname x_width y_height) (setq ypnt0)(for i1rows(setq xpnt0)(for j1cols(dbCreateInst(getEditRep)(dbOpenCellViewByType"tutorial" cellname"layout")nil(list xpnt ypnt)"R0") (setq xpnt xpnt+x_width))(setq ypnt ypnt+y_height)))Tested with standard cell instance via:placeArray 20 4 “INVX1” 4.8 21.6BR 6/007 placeArray20 4 “INVX1” 4.8 21.6BR 6/008。

1 cadence简介

国家集成电路人才培养基地
培训资料(1)
Cadence入门教程
2006-7-19
一、
作为流行的EDA工具之一,Cadence一直以来以其强大的功能受到广大EDA工程师的青睐。Cadence可以完成整个IC设计流程的各个方面,如电路图输入(Schematic Input)、电路仿真(Analog Simulation)、版图设计(Layout Design)、版图验证(Layout Verification)、寄生参数提取(Layout Parasitic Extraction)以及后仿真(Post Simulation)。如图1.1所示,我们给出了一个简单的模拟集成电路设计流程,以及对应的Cadence工具。
Composer主界面包括:标题栏,菜单栏,工具栏,状态栏(第二行),提示区(就是最底下那行)以及最大的那个工作区。标题栏和菜单栏没什么好说的,状态栏会提示当前的命令以及所选择的物体个数,提示区会告诉你当前应该做什么事。作为初学者,在设计电路过程中应该要仔细阅读提示区中的信息。此外,
注意:①Composer中的多数命令会一直保持,直到你调用其它命令替代它或者按Esc取消,尤其是在执行delete命令时,忽视这一点很可能会误删除,一定要多加小心!Composer的Undo操作默认只能进行一次(可以在CIW窗口的Option->User Preferences中修改,最多可以是10)。所以每完成一个命令,记着按ESC取消当前命令。
.cdsinit文件:包含Cadence的一些初始化设置以及快捷键设置。
实际上,机房中我们已将各配置文件写好,只要在终端中执行
cds.setup
Cadence的相关配置文件就已经自动设置完毕。如果用户在启动Cadence后,发现无法使用快捷键,则需要把.cdsinit从Cadence的安装目录中拷贝到自己的工作目录下,在终端中输入:

第1章 Cadence系统简介

第1章Cadence系统简介1.1 Cadence系统概述1.1.1博大精深的Cadence系统Cadence系统是一个大型的EDA软件,它几乎可以完成电子设计的方方面面,包括ASIC设计、FPGA设计和PCB板设计。

与另一EDA软件Synopsys相比,Cadence的综合工具略为逊色。

然而,Cadence在仿真、电路图设计、自动布局布线、版图设计及验证等方面却有着绝对的优势。

Cadence与Synopsys的结合可以说是EDA设计领域的黄金搭档。

此外,Cadence公司还开发了自己的编程语言skill,并为其编写了编译器。

由于skill语言提供编程接口甚至与C语言的接口,故而可以Cadence为平台进行扩展,用户还可以开发自己的基于Cadence 的工具。

实际上,整个Cadence软件可以理解为一个搭建在skill语言平台上的可执行文件集。

所有的Cadence工具都是用Skill语言编写的,但同时由于Cadence 的工具太多而显得有点凌乱。

这给初学者带来了更多的麻烦。

Cadence包含的工具较多,包括了EDA设计的各个方面。

本讲义旨在介绍Cadence的入门知识,所以不可能面面具到,只能根据ASIC设计流程,介绍ASIC 设计者常用的一些工具,例如仿真工具Verilog-XL,布局布线工具Preview和Silicon Ensemble,电路图设计工具Composer,电路模拟工具Analog Artist,版图设计工具Virtuoso Layout Editor,版图验证工具Diva与Dracula,最后简单介绍一下Skill语言的编程。

Cadence特点:1.全球最大的EDA公司2.提供系统级至版图级的全线解决方案3.系统庞杂,工具众多,不易入手4.除综合外,在系统设计,在前端设计输入和仿真,自动布局布线,版图设计和验证等领域居行业领先地位5.具有广泛的应用支持6.电子设计工程师必须掌握的工具之一Cadence功能:1.系统级设计:System-Level Design2.功能验证:Function Verification3.仿真:Simulation4.综合:Synthesis5.布局布线:Place-and-Route6.模拟、射频、混合信号设计:Analog,RF,and Mixed-Signal Design7.物理验证与分析:Physical Verification and Analysis8.打包:IC Packaging9.PCB设计:PCB DesignIC设计工具排行榜:1.VHDL仿真:Cadence→IKOS→Vantage→Synopsys2.行为综合:Synopsys→Alta3.逻辑综合:Synopsys→Compass→Mentor Graphics4.可测性设计:Synopsys→Sunrise→Compass5.低功耗设计:Synopsys→Epic6.布局布线:Cadence→Avant!→Mentor Graphics7.后仿真:Synopsys→Cadence→Compass→IKOS→Vantage1.1.2ASIC设计流程图1.1 ASIC典型设计流程设计流程是规范设计活动的准则,好的设计流程对于产品的成功至关重要。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Cadence skill语言简介Cadence提供二次开发的SKILL语言,它是一种基于通用人工智能语言—Lisp 的交互式高级编程语言(LISP即List Processing-表处理,是最早和最重要的符号处理编程语言之一,它于1958年由美国的J. McCarthy提出,LISP在人工智能AI方面获得广泛应用)。

SKILL语言支持一套类似C语言的语法,大大降低了初学者学习的难度,同时高水平的编程者可以选择使用类似Lisp语言的全部功能。

所以SKILL语言既可以用作最简单的工具语言,也可以作为开发任何应用的、强大的编程语言。

SKILL可以与底层系统交互,也提供了访问Cadence各个工具的丰富接口。

用户可以通过Skill语言来访问,并且可以开发自己的基于Cadence平台的工具。

1. Skill语言和Lisp语言的关系Skill函数提供两种表示法,一种是代数表示法,现在大多数语言采取这种方式,即func( arg1 arg2 ...),另一种是前缀表示法,类似于Lisp语言,即(func arg1 arg2 ...)。

这里举个例子作为对比:1.代数表示法procedure( fibonacci(n)if( (n == 1 || n == 2) then1else fibonacci(n-1) + fibonacci(n-2)))2.前缀表示法(defun fibonacci (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的工具可以通过CIW,Bindkey,Form,Menu等多种方式调用skill函数,送到skill语言的解释器来执行各种操作。

其中CIW(Command Interpreter Window),即启动Icfb的第一个窗口,包含一些常用的menu,一个输入行,以及一个输出区域,这里是常用的debug skill程序的地方,当然cadence也提供了Tools->Skill Development,有兴趣的话可以深入研究一下2.1 Skill函数的查阅方法Skill语言有n多函数,加上众多工具的接口函数,可以用成千上万来形容,初学者可能会感到晕头转向,无从下手。

其实只要了解基本的变量,控制语句,输入输出以及一些常用工具的基本函数就可以了,大多数函数都可以用到再查阅。

开始学习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 Composer Reference分别是Cadence的Design Framework II,版图,电路的接口函数。

当然还有其他众多工具的接口函数,因此Skill需要方便的函数查阅方法,这里列出3种:1.最简单的方法,看~/CDS.log文件或者CIW的输出区域,把Options-> LogFilter都选上。

这里一般可以查阅在图形界面下运行的函数,如图,我们可以看到画path线的函数以及输出结果等2.在CIW里输入命令startFinder,或者在Terminal上输入cdsFinder& . Finder 适用于至少知道函数名的一部分,这里可以查到函数的用法简介。

例如上图我们看到画path的函数是leHiCreatePath(),但这是图形方式的函数,对应skill方式的函数呢用法呢,可以在Finder中输入CreatePath,这样我们就可以看到包含有CreatePath 的所有函数,如图,leCreatePath即是我们想找的函数,这里可以看到简单的用法介绍3.上面我们查到的关于函数用法的介绍很简单,如何知道其详细介绍呢。

当然如果你知道函数在那个文档里,直接打开就行了,如果不知道,就需要打开help的search功能,这里可以查到详细的功能用法。

运行cdsdoc&, 点击Search打开Cadence help的搜索功能,工具会自动启动一个http服务,同时打开搜索网页,启动服务后,你也可以在windows的IE里输入http://hostname:9000/search.htm,同样可以打开搜索页面,需要注意的是,在C:\WINNT\system32\drivers\etc\hosts文件中需要加入hostname对应的ip,如:127.0.0.1 localhost10.0.10.2 host1Cadence help的搜索功能默认是用Netscape打开搜索网页,如果没有装Netscape,可能会打不开网页。

可以先打开firefox,mozila等浏览器,再启动cadence doc搜索http服务,这样就可以打开搜索网页了3. Skill语言简介Skill语言的很多地方和C语言差不多,如变量,函数,控制结构,输入输出等,详细的介绍可以参考User Guide,这里只作简单介绍。

3.1. Skill的变量不需要事先声明,Skill第一次用到是会自动生成变量。

变量可以由字符、数字、“_” 和“?” 组成,注意第一个字符不能是数字和”?”。

由于Cadence所开发的Skill中的变量、函数都是第一个字母小写,以_为开头的是Cadence的专用函数,为了避免冲突,建议大家函数和变量命名都以大写字母开头。

3.2. Skill的函数的调用方式有三种,strcat( "Hello" "," " everyone" "!" ) ;常见的类C格式( strcat "Hello" "," " everyone" "!" ) ;类Lisp语言的格式strcat "Hello" "," " everyone" "!" ;上面的括号可以省略返回的结果都是=> "Hello, everyone!"推荐使用第一种方式,需要注意的是函数和第一个括号之间没有空格,否则会报错如:strcat ( "Hello" "," " everyone" "!" )=> *Error* eval: not a function - "Hello"这是调用skill函数的一个常见问题,其它的问题还有:a. 软件没响应,比如在CIW中输入段代码,软件没有反映,什么结果也没有,一般是因为( )或者” “不成对造成的,一般可以通过键入] 来解决,它表示补充完不对称的括号(可以代替任意多个右括号),如果还没有响应,键入“] 这时大部分情况下,系统会有响应b. 数据类型不匹配,如:strcat( "Mary had a" 5 )=>*Error* strcat: argument #2 should be either a stringor a symbol (type template = "S") – 53.3. Skill List是Skill基于Lisp(List Processing)语言的表现,它是skill数据对象的一个有序集合,skill数据甚至程序本身都可以看作是一个list,这是C语言中所没有的概念。

下面是skill list的简单例子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 elementA). 创建list有以下几种基本的方法:Specify all the elements of the list literally 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 => 1b = 2 => 2'( a b 3 ) => ( a b 3 )list( a b 3 ) => ( 1 2 3 )2).用cons命令添加一个元素到一个list的头部result = '( 2 3 ) => ( 2 3 )result = cons( 1 result ) => ( 1 2 3 )3).用append命令合并两个listLista = '( 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 )car( numbers ) => 1cdr访问list除了第一个元素外的其他元素,注意返回仍然是个listnumbers = '( 1 2 3 ) => ( 1 2 3 )cdr( numbers ) => ( 2 3 )nth用索引访问list的某个元素,注意索引从0开始numbers = '( 1 2 3 ) => ( 1 2 3 )nth( 1 numbers ) => 2member检查指定的元素是否在指定的list中,它只检查顶层元素的元素,返回值是从搜到值开始到结尾的listnumbers = '( 1 2 3 ) => ( 1 2 3 )member( 4 numbers ) => nilmember( 2 numbers ) => ( 2 3 )length计算list所包含元素的个数numbers = '( 1 2 3 ) => ( 1 2 3 )length( numbers ) => 3C). 关于xy坐标或者bBox边界list的访问在版图设计中,关于坐标的list是最长见的,它是一组2维的list,常见的表示方法有:用: 表示一个坐标的list,其结果和list命令一样,用xCoord和yCoord命令可以访问xy坐标xValue = 300yValue = 400aCoordinate = xValue:yValue => ( 300 400 )xCoord( aCoordinate ) => 300yCoord( aCoordinate ) => 400用list命令和' 来表示一个bBox,list命令先计算变量或者表达式,然后赋给list,' 表示的list和字面的一样,不会计算变量或者表达式的值bBox = list( 300:400 500:450 ) ;含有: 的bBox含有变量用listlowerLeft = 300:400upperRight = 500:450bBox = list( lowerLeft upperRight )' 表示的list严格按字面意思bBox = '(( 300 400 ) ( 500 450 ))。

相关文档
最新文档