From Seo Wiki - Search Engine Optimization and Programming Languages
|This article may require cleanup to meet Wikipedia's quality standards. Please improve this article if you can. (October 2008)|
|Paradigm||OOP or functional|
|Developer||Cadence Design Systems|
|Stable release||? (?)|
|Major implementations||Cadence Allegro, Cadence APD, Cadence Concept HDL and Cadence Virtuoso. Major LISP implementation — Cadence UniCAD.|
|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 in 1990.
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.
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".
SyntaxSKILL 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+2are all recognized. This was introduced to make it easier for programmers familiar with C and other procedural languages to understand and write SKILL code.
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.
Here are some examples of SKILL.
First, a basic “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
procedure( swap() let( (a b) a = 1 b = 2 c = a a = b b = c printf("%d %d %d\n" a b c) ) )
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
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 */
- ↑ 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.
- 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
- 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