Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Creating schematic by SKILL

6,090 views
Skip to first unread message

RolfK

unread,
Aug 3, 2008, 5:44:12 PM8/3/08
to
Dear Experts,

I'm quite new to SKILL (schematic) and have somed questions about
creation of schematics by skill. I had a look in various mails but I
could not figure out how I get the coordinates of a terminal.
Afterr I have created some instancies I would like to draw a
line(wire) between the terminals (pins).
So, my first idea was is to get the id of the instance and ask for a
specific terminal. Next to get the coords of it. But this first idea
seems to be quite wrong.

Does somebody having an example how to get the cordinates of the
terminal bbox ?

Any hint is welcome.
Rolf

Jean-Marc Bourguet

unread,
Aug 4, 2008, 2:56:15 AM8/4/08
to
RolfK <Rolf....@eu.necel.com> writes:

Look for the pins (which are shapes), not the terminal (which is purely
logical). And notes that there may be several pins for one terminal.

On the layout side (I don't remember any equivalent issue with schematic),
and with OA (CDB has another way to represent the same things but I don't
remember the details), there is differences between terminals tagged must
connect (this mean that the user MUST connect all the instterm to the same
net), having several pins on the same terminal (weak connection, the user
can't use the fact that the pins are connected to complete a net, the
internal connection is too resistive for that) and having several shapes
for the same pin (strong connection).

Yours,

--
Jean-Marc

Riad KACED

unread,
Aug 4, 2008, 7:37:26 PM8/4/08
to
Rolf,

I'm far away from being the expert you are looking for but here is my
attempt.
For more information about the skill functions I've used in there,
please give it a glance at the following CDS documentation:

1. The SKILL Language Reference Manual
UNIX> $CDSHOME/doc/sklangref/sklangref.pdf

2. The SKILL Language User Guide
UNIX> $CDSHOME/doc/sklanguser/sklanguser.pdf

3. The Cadence® Design Framework II SKILL Functions Reference
UNIX> $CDSHOME/doc/skdfref/skdfref.pdf

4. Virtuoso® Schematic Editor SKILL Functions Reference
UNIX> $CDSHOME/doc/skcompref/skcompref.pdf

/* Skill Starts here rkSchConnectivityExample.il
1. Load The file into the CIW
2. launch something like:
rkSchConnectivityExample("rkWorkLib" "rkSchConnectivityExample")
*/

procedure( rkSchConnectivityExample(libName cellName "tt")
let( (masterId x y cvId instTermBbox instTermBboxInCv
instTermLLX instTermLLY instTermURX instTermURY
wireOriginX wireOriginY wireSpace wireWidth wireLength
deltaX deltaY wireLabel wireOrientation wireJustification
wireEndX wireEndY termWire
)
x=1
y=1
wireSpace=0.0625
wireWidth=0
wireLength=0.6
; Open the CV to create
cvId=dbOpenCellViewByType(libName cellName "schematic"
"schematic" "w")
; Open the master cell to instatiate
masterId = dbOpenCellViewByType("analogLib" "nmos4"
"symbol" "schematicSymbol" "r")
; Create an instance of analogLib/nmos4 at point 1:1
schCreateInst(cvId masterId nil x:y "R0")
; Search all the instances in the CV
foreach( inst cvId~>instances
printf( "Instance : %s\n" inst~>name )
; Print all the Instance terminals for each instance found
; in the CV.
foreach( instTerm inst~>instTerms
; For each instance terminal, i.e D-S-B-G, get the bbox
; of the terminal's little square then use dbTransformBBox
; to transform the pin bbox to the cellview
instTermBbox=car(instTerm~>term~>pins~>fig~>bBox)
instTermBboxInCv=dbTransformBBox(instTermBbox
inst~>transform)
printf( " Instance Terminal= %s : absBbox=%L :
relBbox=%L\n" instTerm~>name
instTermBbox instTermBboxInCv)
; get the X/Y coordinates from the BBOX
instTermLLX=xCoord(lowerLeft(instTermBboxInCv))
instTermLLY=yCoord(lowerLeft(instTermBboxInCv))
instTermURX=xCoord(upperRight(instTermBboxInCv))
instTermURY=yCoord(upperRight(instTermBboxInCv))
wireOriginX=(instTermLLX+instTermURX)/2
wireOriginY=(instTermLLY+instTermURY)/2
; A little bit of code to make a KOF nice schematic
case(lowerCase(instTerm~>name)
("d"
deltaX=0
deltaY=wireLength
wireLabel="Drain"
wireOrientation="R90"
wireJustification="lowerRight"
)
("s"
deltaX=0
deltaY=-wireLength
wireLabel="Source"
wireOrientation="R90"
wireJustification="lowerLeft"
)
("b"
deltaX=wireLength
deltaY=0
wireLabel="Bulk"
wireOrientation="R0"
wireJustification="lowerRight"
)
("g"
deltaX=-wireLength
deltaY=0
wireLabel="Gate"
wireOrientation="R0"
wireJustification="lowerLeft"
)
(t
printf("Unknow terminal !!! \n")
)
)
wireEndX=wireOriginX+deltaX
wireEndY=wireOriginY+deltaY
; Create the wire
termWire=schCreateWire(cvId "draw" "full"
list(wireOriginX:wireOriginY wireEndX:wireEndY)
wireSpace wireSpace wireWidth)
; createLabel
schCreateWireLabel(cvId car(termWire)
wireEndX:wireEndY wireLabel
wireJustification wireOrientation
"fixed" wireSpace nil)

) ; foreach
) ; foreach

; Check and save, close the DB and then open the
; schematic in Read.
schCheck(cvId)
getWarn()
dbSave(cvId)
dbClose(cvId)
geOpen(?lib libName ?cell cellName ?view "schematic"
?viewType "schematic" ?mode "r")
)
)
; Skill Ends here

Hope this little help you.
Cheers,
Riad.

RolfK

unread,
Aug 5, 2008, 3:10:20 AM8/5/08
to

Riad, thanks a lot for the exhaustive examples. I got some snipets
from Cadence too and the approach seems to be similar. Hence I'm
confident to manage it now.
May be I will put back my solution as I could not find any example in
the comminity before.

Cheers
Rolf

varun0...@gmail.com

unread,
Oct 22, 2013, 1:49:21 AM10/22/13
to
Hi Guys!

I am new to Skill and wanted to fetch some technical information from schematic and dump in some file. Can someone guide me about the procedure or how to start?

Basically I want to dump in XML file format.

Regards
Varun

Andrew Beckett

unread,
Dec 27, 2013, 5:35:46 PM12/27/13
to
I guess this is the same as the questions on the Cadence forums at
http://www.cadence.com/Community/forums/p/27634/1328219.aspx#1328219

Andrew.


0 new messages