Cadence SKILL

From Seo Wiki - Search Engine Optimization and Programming Languages

Jump to: navigation, search
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.



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".


SKILL programmers have a choice of expression syntaxes. Traditional Lisp syntax such as
(car mylist)
can be mixed with C-like syntax such as
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)

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).


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
    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
> a
*Error* toplevel: undefined variable - a
> b
*Error* toplevel: undefined variable - b
> c

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 */


  1. Barnes, T. J.: “SKILL: a CAD system extension language”, 27th ACM/IEEE Design Automation Conference, 1990. Proceedings; pp. 266-271
  2. "Re: SKILL stands for ...?". 


  • 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 Quick Tour of SKILL Programming with command-line examples of SKILL codes versus Perl, Ruby, Python & TCL (go to the end of the blog)

    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:

    External links

  • Personal tools

    Served in 0.301 secs.