Cadence SKILL
This article may require cleanup to meet Wikipedia's quality standards. Please improve this article if you can. (October 2008) |
Paradigm | OOP or functional |
---|---|
Appeared in | 1990 |
Developer | Cadence Design Systems |
Stable release | ? (?) |
Typing discipline | dynamic |
Major implementations | Cadence Allegro, Cadence APD, Cadence Concept HDL and Cadence Virtuoso. Major LISP implementation — Cadence UniCAD. |
Dialects | SKILL, SKILL++ |
Influenced by | Common Lisp |
SKILL is the Lisp-like scripting language and PCell (Parameterized Cells) description language used in many EDA software suites by Cadence Design Systems (e.g. Cadence Allegro and Cadence Virtuoso). It was originally put forth in an IEEE paper[1] in 1990.
History
SKILL was originally based on a flavor of Lisp called “Franz Lisp” created at UC Berkeley by the students of Professor Richard J. Fateman. SKILL is not an acronym, it is a name. For trademark reasons Cadence prefers it be capitalized[2].
Franz Lisp and all other flavors of LISP were eventually superseded by an ANSI standard for Lisp called "Common Lisp." Historically, SKILL was known as IL. SKILL was a library of IL functions. The name was originally an initialism for Silicon Compiler Interface Language (SCIL), pronounced "SKIL," which then morphed into "SKILL," a plain English word that was easier for everyone to remember.'
"IL" was just Interface Language. Whilst SKILL was used initially to describe the API rather than the language, the snappier name stuck. The name "IL" remains in the de-facto file extension used for SKILL code ".il".
Syntax
SKILL programmers have a choice of expression syntaxes. Traditional Lisp syntax such as
(car mylist)
can be mixed with C-like syntax such as
car(mylist)
However, unlike C, no white space is allowed between the function name and the opening parenthesis, as in
car (mylist) ; Error
Certain arithmetic operations can be also called using an infix notation. Thus
(plus 1 2) plus(1 2) 1+2
are all recognized. This was introduced to make it easier for programmers familiar with C and other procedural languages to understand and write SKILL code.
Note that all variables in SKILL are considered special.
Additional commands are added to the language for functions specific to a certain tool. For example, functions specific to the PCB Editor have the prefix “axl” (e.g. axlDBGetDesign
), and commands specific to the Design Entry tool have the prefix “cn” (e.g. cnGetDwgInfo
).
Examples
Here are some examples of SKILL.
First, a basic “Hello world”:
println("Hello, world!")
As SKILL relaxes the traditional Lisp requirement that everything is an S-expression, more elaborate examples look quite different to their Lisp equivalents. For example, the factorial function in SKILL looks like this:
procedure( factorial(n)
if( n<=1 then
1
else
n * factorial(n-1)
)
)
This example shows how variables are assigned and scoped, using =
and let
, respectively:
procedure( swap()
let( (a b)
a = 1
b = 2
c = a
a = b
b = c
printf("%d %d %d\n" a b c)
)
)
The variables a
and b
are scoped within the let
function, but variable c
is not. As a result, c
becomes a global variable that can be accessed without the scope of the swap
function. Here is what happens when swap is executed and a
, b
and c
are then printed:
> swap
2 1 1
t
> a
*Error* toplevel: undefined variable - a
> b
*Error* toplevel: undefined variable - b
> c
1
Comments are delimited by either the traditional Lisp semicolon
car(mylist) ; Comment from semicolon to end of the line
or C-style comments
/* Comment */ car(mylist) /* Another comment */
References
- ↑ Barnes, T. J.: “SKILL: a CAD system extension language”, 27th ACM/IEEE Design Automation Conference, 1990. Proceedings; pp. 266-271
- ↑ "Re: SKILL stands for ...?". http://www.cadence.com/Community/forums/p/12204/16701.aspx#16701.
Academic:
- G. Wood and H-F S. Law, "SKILL - An Interactive Procedural Design Environment," Proceedings of Custom Integrated Circuits Conference, 1986, pp.544–547
- Quan Nguyen, "CAD Scripting Languages", "A collection of Perl, Ruby, Python,Tcl and SKILL Scripts". Published by RAMACAD INC. ISBN 0977781224,9780977781225. A Sample from Google Books
http://www.cadence.com/community/forums/T/10274.aspx
User Groups
- A SKILL users' group is currently hosted on Yahoo! Groups under the name "skill_school" (link).
- Cadence also hosts two SKILL users' group forums on their Cadence Community website. One is dedicated to Allegro PCB SKILL (PCB SKILL), and one dedicated to IC SKILL (Custom IC SKILL).
- No known users' group currently exists for Cadence Concept SKILL scripting (as of Jan 2009).
Note: due to Wikipedia's copyright policy, direct links to all three SKILL users' groups cannot be given here. Visit Yahoo! Groups or the Cadence Community website and search by the exact users' group name.
More SKILL Programming Examples: http://www.cadence.com/community/forums/T/10274.aspx
External links
- Cadence Design Systems
- CopperCAD Design — a commercial site for Custom and Pre-Packaged SKILL programs
If you like SEOmastering Site, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...