Metal Plot

J

Johannes N Blouwer

Guest
Hi All

I need to generate a plot of all the metal that touch the pads on a
layout. How can I do that? We have Diva, Dracula and Caliber licenses
(in case that helps).

Thanks in advance
JNB
 
Hi Johannes,

I need to generate a plot of all the metal that touch the pads on a
layout. How can I do that? We have Diva, Dracula and Caliber licenses
(in case that helps).
Your idea intrigued me, so I put this together. It is a set of diva
extraction rules that will extract the metal layers that are connected
to a set of net names that you specify. It'll need modifying for your
process quite probably.

Can anybody who knows what they are doing (ie. not me!) suggest how I
might do this by specifying a single variable at the top of the rules
for the list of nets to extract, so it isn't necessary to modify the
code on five lines?

Cheers,

Roger


;; Extract only the metal that is connected to one of a list of
;; nets. This can be used to show the metal that is connected to
;; a pad for instance.

(drcExtractRules

;; Do a search for "pad_nets" and replace with
;; a list of the different pin names you wish to
;; be included. eg:
;; "In" "Out" "vdd*" "gnd*"

;; Get metal and via drawing layers
metal1_dg = geomGetPurpose( "MET1" "drawing")
via1_dg = geomGetPurpose( "VIA1" "drawing")
metal2_dg = geomGetPurpose( "MET2" "drawing")
via2_dg = geomGetPurpose( "VIA2" "drawing")
metal3_dg = geomGetPurpose( "MET3" "drawing")

;; Get metal pin layers
metal1_pn = geomOr( ("MET1" "pin"))
metal2_pn = geomOr( ("MET2" "pin"))
metal3_pn = geomOr( ("MET3" "pin"))

;; Create metal nets
metal1_nt = geomOr(metal1_dg metal1_pn)
metal2_nt = geomOr(metal2_dg metal2_pn)
metal3_nt = geomOr(metal3_dg metal3_pn)

;; Connect adjacent matal layers
geomConnect(
via( geomOr(metal1_pn) metal1_pn metal1_nt )
via( geomOr(metal2_pn) metal2_pn metal2_nt )
via( geomOr(metal3_pn) metal3_pn metal3_nt )
via( via2_dg metal3_nt metal2_nt )
via( via1_dg metal2_nt metal1_nt )
)

metal1_nt = geomGetNet(metal1_nt pad_nets)
metal2_nt = geomGetNet(metal2_nt pad_nets)
metal3_nt = geomGetNet(metal3_nt pad_nets)
via1_nt = geomGetNet(via1_dg pad_nets)
via2_nt = geomGetNet(via2_dg pad_nets)

saveInterconnect(
(metal1_nt "MET1")
(via1_nt "VIA1")
(metal2_nt "MET2")
(via2_nt "VIA2")
(metal3_nt "MET3")
)
)
 
Thank you very much. I will try it and post any improvements we come up
with.

On Tue, 30 Nov 2004 15:58:51 +0000, Roger Light
wrote:

Hi Johannes,

I need to generate a plot of all the metal that touch the pads on a
layout. How can I do that? We have Diva, Dracula and Caliber licenses
(in case that helps).

Your idea intrigued me, so I put this together. It is a set of diva
extraction rules that will extract the metal layers that are connected to
a set of net names that you specify. It'll need modifying for your process
quite probably.

Can anybody who knows what they are doing (ie. not me!) suggest how I
might do this by specifying a single variable at the top of the rules for
the list of nets to extract, so it isn't necessary to modify the code on
five lines?

Cheers,

Roger


;; Extract only the metal that is connected to one of a list of ;; nets.
This can be used to show the metal that is connected to ;; a pad for
instance.

(drcExtractRules

;; Do a search for "pad_nets" and replace with ;; a list of the
different pin names you wish to ;; be included. eg:
;; "In" "Out" "vdd*" "gnd*"

;; Get metal and via drawing layers
metal1_dg = geomGetPurpose( "MET1" "drawing") via1_dg =
geomGetPurpose( "VIA1" "drawing") metal2_dg = geomGetPurpose( "MET2"
"drawing") via2_dg = geomGetPurpose( "VIA2" "drawing") metal3_dg =
geomGetPurpose( "MET3" "drawing")

;; Get metal pin layers
metal1_pn = geomOr( ("MET1" "pin"))
metal2_pn = geomOr( ("MET2" "pin"))
metal3_pn = geomOr( ("MET3" "pin"))

;; Create metal nets
metal1_nt = geomOr(metal1_dg metal1_pn) metal2_nt = geomOr(metal2_dg
metal2_pn) metal3_nt = geomOr(metal3_dg metal3_pn)

;; Connect adjacent matal layers
geomConnect(
via( geomOr(metal1_pn) metal1_pn metal1_nt ) via( geomOr(metal2_pn)
metal2_pn metal2_nt ) via( geomOr(metal3_pn) metal3_pn metal3_nt )
via( via2_dg metal3_nt metal2_nt )
via( via1_dg metal2_nt metal1_nt )
)

metal1_nt = geomGetNet(metal1_nt pad_nets) metal2_nt =
geomGetNet(metal2_nt pad_nets) metal3_nt = geomGetNet(metal3_nt
pad_nets) via1_nt = geomGetNet(via1_dg pad_nets) via2_nt =
geomGetNet(via2_dg pad_nets)

saveInterconnect(
(metal1_nt "MET1")
(via1_nt "VIA1")
(metal2_nt "MET2")
(via2_nt "VIA2")
(metal3_nt "MET3")
)
)
 

Welcome to EDABoard.com

Sponsor

Back
Top