replace symbolic vias with layout vias in Virtuoso?

Discussion in 'Cadence' started by Karl Fritz, Aug 16, 2004.

  1. Karl Fritz

    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

    Special Purpose Processor Development Group - Mayo Foundation
    ------------------------------------------------------------------------
     
    Karl Fritz, Aug 16, 2004
    #1
  2. Karl Fritz

    S. Badel Guest

    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
     
    S. Badel, Aug 17, 2004
    #2
  3. Karl Fritz

    S. Badel Guest

    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, Aug 17, 2004
    #3
  4. Karl Fritz

    Karl Fritz Guest

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

    thanks!
     
    Karl Fritz, Aug 17, 2004
    #4
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.