replace symbolic vias with layout vias in Virtuoso?

K

Karl Fritz

Guest
Hi,
One of our programmers is looking into this, but our problem is that we need
to replace our symbolic vias with instance (regular 'layout' type) vias.
When one performs a "properties" function on the symbolic via, Virtuoso only
gives you the option to change it to another via. Does anybody have a way
to get around this? I would like to do a simple search for symbolic vias
and replace them all with a layout instance. I cannot find a function in
Virtuoso to do this.

ideas?

thanks

--
------------------------------------------------------------------------
Karl Fritz
Design Engineer
fritz.karl@mayo.edu
Special Purpose Processor Development Group - Mayo Foundation
------------------------------------------------------------------------
 
Karl,
You can do it by hand in Virtuoso with Edit->Search, then search for
"inst" with a criterium "view name == symbolic". Apply, then push
"Add Select" and you'll end up with all symbolic cellviews selected.
Open the properties form, check the "common" checkbox then change the
view name to layout and "Ok".

here is a small script which does what you describe automatically,
It will search for all symbolic cellviews in the current design
and replace them with the layout view of the same instance if it exists.

procedure( SymbolicToLayout( @optional (cv geGetEditCellView()) )

; walk through instance headers with "symbolic" view name
foreach( header setof( x cv~>instHeaders x~>viewName=="symbolic" )
; look for an existing layout view
if( member( "layout" dbAllCellViews( ddGetObj(header~>libName)
header~>cellName )) then
; replace with layout view
dbSetInstHeaderMasterName( header header~>libName header~>cellName
"layout" )
printf("Changing to layout view for symbolic cellview %s %s.\n"
header~>libName header~>cellName )
else
printf("No layout view for symbolic cellview %s %s.\n"
header~>libName header~>cellName )
) ; when
) ; foreach
t
) ; procedure


would you want to do batch processing on a whole library, you could
do

libName="MYLIB"
let( (cv)
foreach( cell setof( x ddGetObjChildren( ddGetObj(libName) )
x~>type=='ddCellType )
when( member( "layout" cell~>views~>name )
cv=dbOpenCellViewByType( libName cell~>name "layout" nil "a" nil )
printf("processing cell %s...\n" cell~>cellName)
SymbolicToLayout( cv )
dbSave(cv)
dbClose(cv)
) ; when
) ; foreach
) ; let


hope this solves your problem

stéphane


Karl Fritz wrote:
Hi,
One of our programmers is looking into this, but our problem is that we need
to replace our symbolic vias with instance (regular 'layout' type) vias.
When one performs a "properties" function on the symbolic via, Virtuoso only
gives you the option to change it to another via. Does anybody have a way
to get around this? I would like to do a simple search for symbolic vias
and replace them all with a layout instance. I cannot find a function in
Virtuoso to do this.

ideas?

thanks
 
Ahah, you're right the properties cannot be changed on some
types of vias. It worked for me because my vias are Opus vias
but it doesn't work with symContactDevices or cdsViaDevices.
the procedure should do the trick though...

cheers
stéphane

S. Badel wrote:

Karl,
You can do it by hand in Virtuoso with Edit->Search, then search for
"inst" with a criterium "view name == symbolic". Apply, then push
"Add Select" and you'll end up with all symbolic cellviews selected.
Open the properties form, check the "common" checkbox then change the
view name to layout and "Ok".

here is a small script which does what you describe automatically,
It will search for all symbolic cellviews in the current design
and replace them with the layout view of the same instance if it exists.

procedure( SymbolicToLayout( @optional (cv geGetEditCellView()) )

; walk through instance headers with "symbolic" view name
foreach( header setof( x cv~>instHeaders x~>viewName=="symbolic" )
; look for an existing layout view
if( member( "layout" dbAllCellViews( ddGetObj(header~>libName)
header~>cellName )) then
; replace with layout view
dbSetInstHeaderMasterName( header header~>libName header~>cellName
"layout" )
printf("Changing to layout view for symbolic cellview %s %s.\n"
header~>libName header~>cellName )
else
printf("No layout view for symbolic cellview %s %s.\n"
header~>libName header~>cellName )
) ; when
) ; foreach
t
) ; procedure


would you want to do batch processing on a whole library, you could
do

libName="MYLIB"
let( (cv)
foreach( cell setof( x ddGetObjChildren( ddGetObj(libName) )
x~>type=='ddCellType )
when( member( "layout" cell~>views~>name )
cv=dbOpenCellViewByType( libName cell~>name "layout" nil "a" nil )
printf("processing cell %s...\n" cell~>cellName)
SymbolicToLayout( cv )
dbSave(cv)
dbClose(cv)
) ; when
) ; foreach
) ; let


hope this solves your problem

stéphane


Karl Fritz wrote:

Hi,
One of our programmers is looking into this, but our problem is that
we need
to replace our symbolic vias with instance (regular 'layout' type) vias.
When one performs a "properties" function on the symbolic via,
Virtuoso only
gives you the option to change it to another via. Does anybody have a
way
to get around this? I would like to do a simple search for symbolic vias
and replace them all with a layout instance. I cannot find a function in
Virtuoso to do this.

ideas?

thanks
 
Stephane,
We will try this out. I wish Cadence was more user-friendly with this..

thanks!

"S. Badel" <stephane.badel@REMOVETHISepfl.ch> wrote in message
news:4121cb0f$1@epflnews.epfl.ch...
Ahah, you're right the properties cannot be changed on some
types of vias. It worked for me because my vias are Opus vias
but it doesn't work with symContactDevices or cdsViaDevices.
the procedure should do the trick though...

cheers
stéphane

S. Badel wrote:

Karl,
You can do it by hand in Virtuoso with Edit->Search, then search for
"inst" with a criterium "view name == symbolic". Apply, then push
"Add Select" and you'll end up with all symbolic cellviews selected.
Open the properties form, check the "common" checkbox then change the
view name to layout and "Ok".

here is a small script which does what you describe automatically,
It will search for all symbolic cellviews in the current design
and replace them with the layout view of the same instance if it exists.

procedure( SymbolicToLayout( @optional (cv geGetEditCellView()) )

; walk through instance headers with "symbolic" view name
foreach( header setof( x cv~>instHeaders x~>viewName=="symbolic" )
; look for an existing layout view
if( member( "layout" dbAllCellViews( ddGetObj(header~>libName)
header~>cellName )) then
; replace with layout view
dbSetInstHeaderMasterName( header header~>libName header~>cellName
"layout" )
printf("Changing to layout view for symbolic cellview %s %s.\n"
header~>libName header~>cellName )
else
printf("No layout view for symbolic cellview %s %s.\n"
header~>libName header~>cellName )
) ; when
) ; foreach
t
) ; procedure


would you want to do batch processing on a whole library, you could
do

libName="MYLIB"
let( (cv)
foreach( cell setof( x ddGetObjChildren( ddGetObj(libName) )
x~>type=='ddCellType )
when( member( "layout" cell~>views~>name )
cv=dbOpenCellViewByType( libName cell~>name "layout" nil "a" nil )
printf("processing cell %s...\n" cell~>cellName)
SymbolicToLayout( cv )
dbSave(cv)
dbClose(cv)
) ; when
) ; foreach
) ; let


hope this solves your problem

stéphane


Karl Fritz wrote:

Hi,
One of our programmers is looking into this, but our problem is that
we need
to replace our symbolic vias with instance (regular 'layout' type)
vias.
When one performs a "properties" function on the symbolic via,
Virtuoso only
gives you the option to change it to another via. Does anybody have a
way
to get around this? I would like to do a simple search for symbolic
vias
and replace them all with a layout instance. I cannot find a function
in
Virtuoso to do this.

ideas?

thanks
 

Welcome to EDABoard.com

Sponsor

Back
Top