- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Skill语言及IPC初探
Skill语言及IPC初探
引言
Skill是一种解释性的脚本语言,运行于cadence设计环境,是cadence设计工具的API, skill程序可以对cadence设计工具进行功能的扩充,实现功能的定制,提高设计效率和水平。基于公司目前的pcb设计工具多为cadence产品,因此提高对skill的运用,可以充分发挥cadence设计工具的功能,其作用不言而喻。笔者经过了一定时间的熟悉,总结了一下,抛砖引玉,希望能和大家共同学习和讨论,促进和提高skill的应用水平。
Skill语法概要
Skill是”嵌入式”的高级开发语言,运行于cadence的设计工具上,且是一种交互式的设计语言。作为一种程序语言,它具备了高级语言的常用特征。Cadence公司认为是类C语言风格,在笔者看来,更加类似vbscript、javascript甚至pl/sql。在处理内存管理上不用过多的留意,因为skill的内置解释器已经做了处理。需要做的只是利用提供的系统函数实现自己的业务需求。
变量
像一些松散的高级程序语言一样,变量不需要定义,为隐含定义,第一次出现就可以赋值。变量命名第一个字符不允许是数字。如:vTmp = 3 ,表示vTmp已经定义了为一数字类型值等于3。像所有程序语言一样,skill变量也要分为全局变量和局部变量。
全局变量
全局变量一般用在程序中作为一个存储变量、标志等变量共享,或者为了传递的方便。其生存周期和进程一样。在skill中,如果不出现在prog()和let()函数的参数定义中出现的变量都为全局变量。Prog和let函数是主要目的用来定义局部变量。其中prog函数允许多点的返回。从程序设计角度来讲,尽量避免使用全局变量,因为全局变量总是难以清楚的跟踪控制,容易导致变量被修改,使得存储值发生变化。
局部变量
局部变量作用于函数体内,在其他语言中也可以作用于代码块中,如在c/c++中,函数体内大括号{}之间的变量,在出了”}”外,该变量随即实效,可以以这个名字重新定义变量了。这里介绍两个函数:prog()和let()
prog(
l_localVariables
[
[ s_label ]
g_expr1
] ...
)
g_result / nil
prog函数用来定义局部变量,并且支持跳转和返回。
函数的用法举例(函数的调用在稍后会介绍)
prog( (x y)????????????????; Declares local variables x and y.???? x = 5??????????????????; Initialize x to 5.???? y = 10?????????????????; Initialize y to 10.??? ?return( x + y ) ) 说明:
1 “;”表示注释,和c/c++中不同。每一行结束一回车换行判断。
2 在上述函数中,两个变量x y 为局部变量,作用域为prog函数体,函数返回一个值。
3 返回值用函数return,如在c/c++中用 return x+y
4 对于返回值的类型不需要声明
let(
l_bindings
g_expr1 ...
)
= g_result
函数举例:
例1
x = 5let( ((x (a b c)) y)????println( y )???????????????; Prints nil.????x)= (a b c)?????????????????????; Returns the value of x.
例2
procedure( test( x y )????let( ((x 6) (z return string))????????if( (equal x y)????????????then z ????????????else nil))) test( 8 6 )????????????????????; Call function test. = return string?????????????; z is returned because 6 == 6.
说明:
例1中,函数let对局部变量x赋值为列表(a b c),因此在函数let内返回x值时不会受外部全局变量x的影响,返回了(a b c)
例2中,传入的x值是8,在let函数中x为局部变量并且被赋值6,因此比较相同返回return string
变量类型
Skill中也提供对整型、浮点数字、字符等常用变量类型的支持。也提供了专有的变量类型如dbobject、symbol等。
数据结构
Disembodied Property Lists
是一个
您可能关注的文档
最近下载
- 地长蝽科成虫臭腺表皮及腹部毛点毛细微结构研究(半翅目).pdf VIP
- 2021-2025年高考数学试题分类汇编:空间向量与立体几何(上海专用)解析版.pdf VIP
- 干细胞疗法对关节纤维化性骨化的治疗潜力.pptx VIP
- 干细胞移植治疗关节创伤疼痛.pptx VIP
- 食材配送售后客户投诉处理.docx VIP
- HGE系列电梯安装调试手册(ELS05系统SW00004269,A.4 ).docx VIP
- 电子版一儿一女离婚协议书(3篇).docx VIP
- GB51043-2014 电子会议系统工程施工与质量验收规范.pdf VIP
- 机房防雷接地工程方案.docx VIP
- MIDAS-单梁式钢钢混桥建模助手(钢桥)操作例题.pdf VIP
原创力文档


文档评论(0)