欢迎来到天天文库
浏览记录
ID:49769668
大小:203.01 KB
页数:10页
时间:2020-03-04
《Skill语言及IPC初探.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Skill语言及IPC初探引言Skill是一种解释性的脚本语言,运行于cadence设计环境,是cadence设计工具的API,skill程序可以对cadence设计工具进行功能的扩充,实现功能的定制,提高设计效率和水平。基于公司目前的pcb设计工具多为cadence产品,因此提高对skill的运用,可以充分发挥cadence设计工具的功能,其作用不言而喻。笔者经过了一定时间的熟悉,总结了一下,抛砖引玉,希望能和大家共同学习和讨论,促进和提高skill的应用水平。Skill语法概要Skill是”嵌入式”的
2、高级开发语言,运行于cadence的设计工具上,且是一种交互式的设计语言。作为一种程序语言,它具备了高级语言的常用特征。Cadence公司认为是类C语言风格,在笔者看来,更加类似vbscript、javascript甚至pl/sql。在处理内存管理上不用过多的留意,因为skill的内置解释器已经做了处理。需要做的只是利用提供的系统函数实现自己的业务需求。变量像一些松散的高级程序语言一样,变量不需要定义,为隐含定义,第一次出现就可以赋值。变量命名第一个字符不允许是数字。如:vTmp=3,表示vTmp已经定义
3、了为一数字类型值等于3。像所有程序语言一样,skill变量也要分为全局变量和局部变量。l全局变量全局变量一般用在程序中作为一个存储变量、标志等变量共享,或者为了传递的方便。其生存周期和进程一样。在skill中,如果不出现在prog()和let()函数的参数定义中出现的变量都为全局变量。Prog和let函数是主要目的用来定义局部变量。其中prog函数允许多点的返回。从程序设计角度来讲,尽量避免使用全局变量,因为全局变量总是难以清楚的跟踪控制,容易导致变量被修改,使得存储值发生变化。l局部变量局部变量作用于函
4、数体内,在其他语言中也可以作用于代码块中,如在c/c++中,函数体内大括号{}之间的变量,在出了”}”外,该变量随即实效,可以以这个名字重新定义变量了。这里介绍两个函数:prog()和let()prog(l_localVariables[[s_label]g_expr1]...)-------------------------------------------------------------------------------------------------------------------
5、----------------------ðg_result/nilprog函数用来定义局部变量,并且支持跳转和返回。函数的用法举例(函数的调用在稍后会介绍)prog((xy) ;Declareslocalvariablesxandy. x=5 ;Initializexto5. y=10 ;Initializeyto10. return(x+y))说明:1“;”表示注释,和c/c++中不同。
6、每一行结束一回车换行判断。2在上述函数中,两个变量xy为局部变量,作用域为prog函数体,函数返回一个值。3返回值用函数return,如在c/c++中用returnx+y4对于返回值的类型不需要声明let(l_bindingsg_expr1...)=>g_result函数举例:例1x=5let(((x'(abc))y) println(y) ;Printsnil. x)=>(abc) ;Returnsthevalueofx.例
7、2procedure(test(xy) let(((x6)(z"returnstring")) if((equalxy) thenz elsenil)))test(86) ;Callfunctiontest.=>"returnstring" ;zisreturnedbecause6==6.说明:例1中,函数let对局部变量x赋值为列表(ab---------------------
8、--------------------------------------------------------------------------------------------------------------------c),因此在函数let内返回x值时不会受外部全局变量x的影响,返回了(abc)例2中,传入的x值是8,在let函数中x为局部变量并且被赋值6,因此比较相同返回returnstring变量类型Skil
此文档下载收益归作者所有