put Cadence Virtuoso schematic into symbol

Discussion in 'Cadence' started by ming, May 23, 2008.

  1. ming

    ming Guest

    Once I saw that designer can use Cadence schematic to generate symbol,
    which is a miniature of schematic with pin locations. This is very
    useful since you don't have to go all the way to the bottom of
    hierarchy to see all the details. Does anyone here know how to do the
    trick for this?
     
    ming, May 23, 2008
    #1
  2. ming

    Riad KACED Guest

    Dear Ming,

    I wondering wether your request is to create symbol from a
    schematic ...
    In this case, just open your schematic and go to menu :
    Design -> Create CellView -> From CellView (or other options)
    Follow the instructions and that's it !

    Hope It was what y're looking for ...

    Cheers,

    Riad.
     
    Riad KACED, May 23, 2008
    #2
  3. ming

    ming Guest

    Dear Riad,

    What you said is not what I want. The symbol I want is not common one,
    but it has its schematic embedded in the symbol. So when you see the
    symbol, you know what's inside.
     
    ming, May 24, 2008
    #3
  4. ming

    S. Badel Guest

    What you said is not what I want. The symbol I want is not common one,
    You could instantiate a schematic instead of a symbol.

    (But there's no real point in doing this)

    I guess the best symbol you can have is the simplest one that is meaningful and that cannot be
    automatically generated.



    Stéphane
     
    S. Badel, May 24, 2008
    #4
  5. ming

    Riad KACED Guest

    Hi Ming,

    I don't really know what you're talking about, I'm sorry for not
    helping. I wanted to add one more comment though.
    When you create a symbol with cadence, it comes with a default
    rectangular shape but you can redraw it if you want. Many designers
    are customizing the symbol view by drawing the 'Functional' blocks
    that are represented by the symbol. This helps reading from the Top.
    Is what you're talking about ?

    Anyway, since you've seen that designer doing it, It's may be worth
    asking him ;-) isn't it ?

    I agree with Stéphane , I don't see any interest in instantiation a
    schematic view.

    Riad.
     
    Riad KACED, May 26, 2008
    #5
  6. What the OP wants is a symbol which is actually filled with the
    schematics of the lower level as graphical elements. I have seen this
    done, too, and later never wanted to do that myself anymore. If the
    schematic contains more than just a few transistors and wires, the
    symbol will be large, and you will have to recreate the graphics in
    the symbol as you do changes to the schematic otherwise there will be
    differences between the circuit you see in the symbol and the circuit
    that is actually in the schematic. I would rather take the time to
    make a simplified system level representation in the symbol. Remember
    you can import already existing library symbols when editing a symbol
    by the menu making it easier to draw resistors :)

    Creating a symbol that looks like a schematic is only going to confuse
    your teammates :)
     
    Svenn Are Bjerkem, May 31, 2008
    #6
  7. Svenn Are Bjerkem wrote, on 05/31/08 22:09:
    I tend to agree with everything others have said here, about this making it hard
    to read. However, I did write this SKILL code a few years back (11!) which aimed
    to do just this. Read the comments in the code to see how to use it.

    /* abImportSchemGraphics.il

    Author A.D.Beckett
    Group Structured Custom, Cadence Design Systems Ltd.
    Machine SUN
    Date Aug 13, 1997
    Modified
    By

    Import the schematic graphics into a symbol cellView

    ***************************************************

    SCCS Info: @(#) abImportSchemGraphics.il 08/07/01.15:30:49 1.1

    */

    /***************************************************************
    * *
    * (abBoxWidth (box)) *
    * *
    * Calculate the width of a Bounding Box *
    * *
    ***************************************************************/

    (defmacro abBoxWidth (box)
    `(difference (xCoord (upperRight ,box))
    (xCoord (lowerLeft ,box))))

    /***************************************************************
    * *
    * (abBoxHeight (box)) *
    * *
    * Calculate the height of a Bounding Box *
    * *
    ***************************************************************/

    (defmacro abBoxHeight (box)
    `(difference (yCoord (upperRight ,box))
    (yCoord (lowerLeft ,box))))

    /***************************************************************************
    * *
    * abImportSchemGraphics(fromCV toCV bBox @optional (scale 0.9) (levels 2)) *
    * *
    * Import the graphics from one cellView (typically a schematic) into *
    * another cellView, at the position specified by the bBox. An additional *
    * scale factor may be specified *
    * *
    ***************************************************************************/

    (defun abImportSchemGraphics (fromCV toCV bBox @optional (scale 0.9))
    (let (inst masterBBox existingLabels mag origin)
    /* store the existing labels in an association table,
    so we know not the delete them later! */
    (setq existingLabels (makeTable "existingLabels" nil))
    (foreach shape (dbGetq toCV shapes)
    (when (equal (dbGetq shape objType) "label")
    (setarray existingLabels shape t)))
    /* calculate the scaling factor to fit nicely in the bounding box */
    (setq mag (times
    scale
    (min (quotient (abBoxWidth bBox)
    (abBoxWidth (dbGetq fromCV bBox)))
    (quotient (abBoxHeight bBox)
    (abBoxHeight (dbGetq fromCV bBox))))))
    /* create the instance, at the origin initially */
    (setq inst (dbCreateInst toCV fromCV "" '(0 0) "R0"))
    /* alter the magnification */
    (dbSetq inst mag mag)
    /* shift the origin */
    (dbSetq inst (list
    (difference (xCoord (centerBox bBox))
    (xCoord (centerBox (dbGetq inst bBox))))
    (difference (yCoord (centerBox bBox))
    (yCoord (centerBox (dbGetq inst bBox))))
    ) xy)
    /* flatten the instance through two levels of hierarchy */
    /* this will produce some warnings, but can't be helped */
    (dbFlattenInst inst 2)
    /* delete the labels which aren't normal labels, and weren't
    there originally */
    (foreach shape (dbGetq toCV shapes)
    (when (and
    (equal (dbGetq shape objType) "label")
    (null (arrayref existingLabels shape))
    (nequal (dbGetq shape labelType) "normalLabel"))
    (dbDeleteObject shape)))
    t
    ))


    /*************************************************************************
    * *
    * abImportSchemToSymbol(libName cellName symbolViewName schemViewName *
    * @optional (scale 0.9)) *
    * *
    * Import the schematic in the schemViewName view into the symbolViewName *
    * view of a cell, using either the selection box or the overall *
    * bounding box to determine the size for import. *
    * *
    *************************************************************************/

    (defun abImportSchemToSymbol (libName cellName symbolViewName schemViewName
    @optional (scale 0.9))
    (let (bBox fromCV toCV)
    (setq toCV (dbOpenCellView libName cellName symbolViewName "" "a"))
    (foreach lpp (dbGetq toCV lpps)
    (when (and (equal (dbGetq lpp layerName) "instance")
    (equal (dbGetq lpp purpose) "drawing"))
    (foreach shape (dbGetq lpp shapes)
    (setq bBox (abExtendBBox bBox
    (dbGetq shape bBox))))
    ))
    (unless bBox
    (setq bBox (dbGetq toCV bBox)))
    (when (or (null bBox)
    (leqp (abBoxWidth bBox) 0)
    (leqp (abBoxHeight bBox) 0))
    (error "No Area in which to place schematic graphics")
    )
    (setq fromCV (dbOpenCellView libName cellName schemViewName))
    (abImportSchemGraphics fromCV toCV bBox scale)
    (dbSave toCV)
    (dbClose toCV)
    (dbClose fromCV)
    ))
     
    Andrew Beckett, Jun 2, 2008
    #7
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.