SKILL programming references

[ Back ] [ Useful SKILL routines ] [ SKILL code repo (protected) ] [ Custom IC SKILL forum ]


Incredibile ma vero… esiste un textbook !!!
The CAD Connection by Q. Nguyen (stesso autore di CAD scripting languages)

Official training (where? :-( )

  • Cadence SKILL Language Programming Lecture Manual
  • Cadence SKILL Language Programming Lab Manual
  • Cadence SKILL Quick Reference (SQR)

SKILL = Cadence extension scripting language for Cadence tools which allows to add new capabilities and features to Cadence tools (e.g. add custom menus to Cadence CIW).

basic syntax (LISP-derived) + large number of built-in routines and functions

CDB = Cadence Database

OA = Open Access

Appetizer… e che appetizer !!!
http://www.fhnw.ch/technik/ime/cdnlive2010_poster.pdf

Random:
https://vlsiwiki.soe.ucsc.edu/index.php/Useful_SKILL
http://atchoo.org/tools/cadence/
http://vlsi.ee.ccu.edu.tw/data/course/DIP/DIP_2004spring/Handouts/crcell.il
http://venividiwiki.ee.virginia.edu/mediawiki/images/f/ff/Ece432Schematic.il
http://www.eng.umd.edu/~dilli/research/layout/MITLL_3D_2006/3D_PDK2.3/ncsu_3d/skill/d3ic/d3Extract.il
https://svn.unity.ncsu.edu/osi/freepdk45/branches/ncsu/ncsu_basekit/skill

Nice code repo:
https://github.com/tofguerrier/cadence-skill
https://github.com/decrement/dotfiles/tree/master/cds/skill
http://www.sfu.ca/adm/skill/

Intro tu ROD layout objects:
http://ecad.tu-sofia.bg/edit/docs/hristov/Ex9.doc

Online resources and tutorials

http://en.wikipedia.org/wiki/Cadence_SKILL

Basic OA access functions:
http://www.engr.uky.edu/~elias/lectures/00_SKILL_Programming.pdf

Example of creating Schematic and Layout for an N-bit inverter chain using SKILL:
http://venividiwiki.ee.virginia.edu/mediawiki/index.php/ToolsCadenceTutorialsBasicSKILLFreePDK

http://www.ece.msstate.edu/~reese/EE8273/lectures/cadence_skil/

A short introduction to SKILL:
http://www.vtvt.ece.vt.edu/vlsidesign/tutorialCadence_skill.php
http://www.groupes.polymtl.ca/gbm8320/CADENCE_Manual.pdf (pp. 49-50)

Some SKILL examples by Iowa State University:

A Quick Tour of SKILL Programming from Cadence (10 pages):
http://www.cadence.com/Community/CSSharedFiles/forums/storage/28/10475/CadScriptingLanguages_skill.pdf

Another basic document (3 pages):
http://www.vtvt.ece.vt.edu/vlsidesign/skill.pdf

Two very good pdf documents from Heidelberg University (30 + 7 slides):
http://sus.ziti.uni-heidelberg.de/Lehre/VLSIVorlesung1213/VLSI_Fischer_07_Skill.pdf
http://sus.ziti.uni-heidelberg.de/Lehre/VLSIVorlesung1213/VLSI_Fischer_Exercise_06_Skill.pdf

http://www.skillcad.com/

Example SKILL functions for generating PAD frame or matrix of instances (by prof. R. Reese, Texas A&M University)
http://www.ece.msstate.edu/~reese/EE8273/lectures/cadence_skil/
http://www.ece.msstate.edu/~reese/EE8273/lectures/cadence_skil/cadence_skil.pdf
http://www.ece.msstate.edu/~reese/EE8273/lectures/cadence_skil/pads.il
http://www.ece.msstate.edu/~reese/EE8273/lectures/cadence_skil/parray.il

A very complete repository! (Esempi realistici! Ottimo!)
http://www.ece.umd.edu/~dilli/research/layout/MITLL_3D_2006/3D_PDK2.3/ncsu_3d/skill/

A nice set of SKILL tutorials for Allegro PCB editor:
http://www.referencedesigner.com/tutorials/allegro/allegro_skill_71.php

Reference documentation

All *sk*.pdf files contained in $IC_DIR/doc/*sk*/ directories are related to Cadence SKILL language!

cd ~/scratch/skill
mkdir doc && cd doc
find /usr/cadence/IC_6.1.5/doc/ -name '*sk*.pdf' -exec ln -s {} . \;
  • skartistref.pdf
  • skcompref.pdf
  • skdevref.pdf
  • skdfref.pdfVirtuoso Design Environment SKILL Reference
  • skhelp.pdf
  • skillide.pdfCadence SKILL IDE User Guide
  • skipcref.pdf
  • sklangref.pdfCadence SKILL Language Reference
  • sklanguser.pdf
  • sklayoutref.pdf
  • skoopref.pdf
  • skpcellref.pdf
  • sktechfile.pdf
  • skuirefCompat.pdf
  • skuiref.pdf

Furthermore, a lot of documentation dedicated to SKILL can be found at

Cadence Online SupportSKILL InformationProduct Manuals for SKILL

SKILL as a shell scripting language

SKILL scripts can be run just as any other ssh/csh, Python etc. shell script in batch or interactive mode.

To run SKILL in interactive mode from a Unix/Linux terminal just invoke the skill standalone executable,

$IC_DIR/tools/dfII/bin/skill


:!: Note
Be aware that a /usr/bin/skill executable related to UNIX/Linux processes exists too! (man skill…)

It is a good idea to create some alias to the Cadence skill executable, e,g,

alias skl '/path/to/tools/dfII/bin/skill'

SKILL interactive prompt:

[pacher@elt156xl skill]$ /usr/cadence/IC_6.1.5/tools/dfII/bin/skill
> 

To run SKILL in batch mode indeed, the first line of the SKILL script (.il file extension) must start with a

#! /usr/cadence/IC_6.1.5/tools/dfII/bin/skill

statement (similar to sh/csh, Python, TCL etc. script languages).

Comments and hello world program

hello.il

#! /usr/cadence/IC_6.1.5/tools/dfII/bin/skill

; SKILL comments begin with ;

/* but also C-style 
comments are allowed */

printf("Hello world! \n") 
chmod +x hello.il
./hello.il

Or run it with

/usr/cadence/IC_6.1.5/tools/dfII/bin/skill hello.il

Whetting the appetite

[pacher@elt156xl skill]$ /usr/cadence/IC_6.1.5/tools/dfII/bin/skill
>

SKILL as a calculator (similar to Python, ROOT etc.)

> 3 + 7
10
> 3/7
0
> 3/7.
0.4285714

SKILL built-in functions examples:

> getInstallDir()
("/export/elt59xl/disk0/cds/IC_6.1.5/tools.lnx86/dfII")
> getShellEnvVar("PWD")
"/export/elt156xl/disk0/users/pacher/scratch/skill"
> help( getShellEnvVar )
Loading skillDev.cxt 
Consulting cdsFinder database (may take a while) ...
 
getShellEnvVar( 
t_UnixShellVariableName 
) 
=> t_value | nil
 
Returns the value of a UNIX environment variable, if it has been
set.
t

Improving the SKILL shell performance

Unfotunately, neither skill and ocean support readline:
http://www.cadence.com/Community/forums/p/25399/1321055.aspx

http://compgroups.net/comp.cad.cadence/how-not-to-use-ciw-but-unix-command-line/1351264

Getting started point: the hofe C wrapper written for OCEAN, by Homer Reid

http://homerreid.dyndns.org/misc/hofe/

Download the hofe.tar.gz archive from homerreid.dyndns.org,

mkdir hofe
wget http://homerreid.dyndns.org/misc/hofe/hofe.tar.gz
tar -xzf hofe.tar.gz
mv hofe* hofe/
mv makefile hofe/


Archive contents:

  • makefile
  • hofe.h
  • hofe.c
  • hofesyn.c
  • hofetran.c

The wrapper is entirely based on the GNU Readline, a software library that provides line-editing and history capabilities for interactive programs with a command-line interface.

Make sure that readline, history and termcap libraries are installed, e.g.

/lib/libreadline.so.x
/usr/lib/libhistory.so.x
/lib/libtermcap.so.x

yum install compat-readline
yum install compat-readline.i686
sudo yum install compat-libtermcap
sudo yum install compat-libtermcap.i686

You also need the readline-deval package for /usr/include/readline/readline.h and /usr/include/readline/history.h

sudo yum install readline-devel

The source code must be compiled with a -lreadline compiler flag passed to gcc

LIBSS = -lreadline -lhistory -ltermcap

t/nil

  • t → true, ok, exit(1), etc.
  • nil → otherwise

IO



Last update: