====== SKILL programming references ======
[ __[[vlsi:workbook2|Back]]__ ]
[ __[[vlsi:workbook2:skill:useful|Useful SKILL routines]]__ ]
[ __[[vlsi:private:workbook2:skill|SKILL code repo (protected)]]__ ]
[ __[[http://community.cadence.com/cadence_technology_forums/f/48|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.pdf'' -> //Virtuoso Design Environment SKILL Reference//
* ''skhelp.pdf''
* ''skillide.pdf'' -> //Cadence SKILL IDE User Guide//
* ''skipcref.pdf''
* ''sklangref.pdf'' -> //Cadence 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 Support// => //SKILL Information// => //Product 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 [[http://homerreid.dyndns.org/index.shtml|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
[[http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html|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 ======
[[http://www.circuitdesign.info/blog/2011/12/skill-file-io/]]
====== ======
\\
----
Last update:
~~NOTOC~~