I have written the following code for creating a shielded path. The
below mentioned code is having a fix set of coordinates: i.e. "pts".
How to add the functionality that a user can draw shield where ever he
feels like:
;; Create a shielded path
procedure( shield()
errset(
(let (cv layer purpose list_draw_layer tech width1 tfId)
cv= geGetEditCellView()
layer = car(leGetEntryLayer()) ;displays layer on LSW is taken
purpose = cadr(leGetEntryLayer()); displays drawing or pin on the
selected lsw
list_draw_layer =list(layer purpose)
tech = techGetTechFile(geGetWindowCellView()); rule deck file id is
stored in tech
width1 = techGetSpacingRule(tech "minWidth" layer) ; the minimum width
is stored in width1
rodCreatePath(
?name "shield"
?layer list( layer purpose )
?pts list(2:-15 2:-5 15:-5 15:-15) If this is not fixed, the user
can draw shield anywhere. What changes are needed?
?width .8
?justification "center"
?cvId cv
?offsetSubPath
list(
list(
?layer list( layer purpose )
?justification "left"
?sep 1
?width .4
) ;end of offset sublist1
list(
?layer list( layer purpose )
?justification "right"
?sep 1
?width .4
) ;end of offset sublist2
) ;end of offset list of lists
) ;end of rodCreatePath
) ; end of let
t
) ; end of errset
) ; end of procedure
Thats neat but there are several already build in ways to create a shielded
path. You could:
a) define a Multi Part Path with two offset paths as shields
b) use the Wire Editor and script a "do-File" (VCAR Syntax) to
define a shielding ( 5.1.41 )
c) create a shielding constraint for the net ( IC6.1)
Kind regards,
Marc
/*
enterPoints(
?prompts list("Enter 1st point:" "Enter next point:")
?doneProc "Shield"
)
*/
enterPath(
?prompts list("Enter 1st point:" "Enter next point:")
?doneProc "Shield"
)
;; Create a shielded path
procedure( Shield(win done pts)
errset(
(let (cv layer purpose list_draw_layer tech width1 tfId)
unless( done printf("Finished!") )
cv = geGetEditCellView()
layer = car(leGetEntryLayer()) ;displays layer on LSW is taken
purpose = cadr(leGetEntryLayer()); displays drawing or pin on
the selected lsw
list_draw_layer =list(layer purpose)
tech = techGetTechFile(geGetWindowCellView())
; rule deck file id is stored in tech
width1 = techGetSpacingRule(tech "minWidth" layer)
; the minimum width is stored in width1
rodCreatePath(
;;;;;; ?name "shield" ;;;;;;CHANGE HERE ?
?layer list( layer purpose )
?pts foreach( mapcar point pts
geWindowToEditPoint(hiGetCurrentWindow() point) )
;;;;;; ?pts list(2:-15 2:-5 15:-5 15:-15) ;;;;;;CHANGE HERE
;if this is not fixed, the user can draw shield anywhere.
;What changes are needed?
?width .8
?justification "center"
?cvId cv
?offsetSubPath
list(
list(
?layer list( layer purpose )
?justification "left"
?sep 1
?width .4
) ;end of offset sublist1
list(
?layer list( layer purpose )
?justification "right"
?sep 1
?width .4
) ;end of offset sublist2
) ;end of offset list of lists
) ;end of rodCreatePath
) ; end of let
t
) ; end of errset
) ; end of procedure
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Best Regards,
I-FAB
You can specify an options form to be associated with the enterPath() function,
so that the width/spacing info can be entered on the associated form
(toggle-able with F3).
See the ?form argument for enterPath in the documentation.
Regards,
Andrew.
Hi Andrew,
I am newbie in SKILL coding. I have tried to draw a multipart with
SKILL, and I have basically come out with an OptionsForm as you've
suggested, the thing is I couldn't find a way to retrieve and
manipulate the user entry data (the width and spacing) to my
rodCreatePath. It would be nice if you could give some idea to me.
Thanks.
-Kevin.
Is this some question in a university course? There have been questions galore
on this in both this forum and on the Community Forums on www.cadence.com
I'm trying to work out why so many people seem to be posting related questions
(often using very similar SKILL code) on creating shielded paths and busses and
so on.
I recently answered a question on passing the width and spacing information on
the Cadence web site forum: http://www.cadence.com/community/forums/T/12168.aspx
Regards,
Andrew.