Skill语言及IPC初探.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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 = 5 let( ((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 是一个

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档