How to use dbCreateInstTerm ?

Discussion in 'Cadence' started by bu-bu, Aug 22, 2008.

  1. bu-bu

    bu-bu Guest

    Hello All,

    I have a pcell without any connectivity defined. I would like to use
    the dbCreateInstTerm function to defined some pins, to have
    css()~>instTerms != nil.
    My pcell is a resistor, i would like 2 pins: Plus and Minus.

    Function dbCreateInstTerm use the following parameters:
    dbCreateInstTerm(d_net d_inst d_term)

    First i create:
    d_net = dbCreateNet(pcCellview "PLUS")

    and
    d_term = dbCreateTerm(d_net "PLUS" "inputOutput")

    But i don't know how to create/define the missing parameter, i mean
    d_inst ??
    I think i must use dbCreateInst, to get d_inst, but it seems that i
    can use it only for existing cells. It's not my case.

    I use rodCreateRect in my pcell, to draw shape of poly.

    Or just to use dbCreatePin ?? I think it's not enough to perform what
    i need.

    Thanks a lot for your lights,

    Regards,

    b.
     
    bu-bu, Aug 22, 2008
    #1
  2. I'm not sure what you really want. I wonder if you understand correctly
    what instTerms are.

    You needs instTerms in a CV if your CV contains instances. Then instTerms
    will allow you to say for each instances to which nets are connected the
    terms of the master of these instances.

    If you select an instance of your pcell and want css()->instTerms to be non
    nil, you first needs to create terminals in your pcell and then use
    "Propagate nets" in the CV instantiating the pcell after having created the
    instance (in VLS-XL, the binder -- starting from 6.1 if I remember
    correctly -- and the extractor -- even in 5.1.41 -- will create the
    instTerms for you if the right conditions are met -- for the extractor
    there has to be a physical connection, ie shape in the top cell view
    overlapping a pin of the terminal; for the binder has to be able to find in
    the connectivity source which connection should be made).

    Yours,
     
    Jean-Marc Bourguet, Aug 22, 2008
    #2
  3. bu-bu

    S. Badel Guest

    It is. If I understand you correctly... instTerms are used to define the connections to an instance.
    You would create instTerms if you had instances in your pcell, which is not the case.

    To create pins, first create a net, then a terminal on that net, and finally a pin on that terminal/net.

    You'll just need a shape/instance to associate with the pin ; it defines the physical connection
    point. In a layout, it can be a piece of metal ; in a schematic an instance of
    basic/(ipin|opin|iopin) ; in a symbol, a simple rectangle....



    Stéphane
     
    S. Badel, Aug 22, 2008
    #3
  4. bu-bu

    bu-bu Guest

    Hello,

    thanks a lot for your answers.
    indeed, i misled the using of dbCreateInstTerm. thanks you for the
    lights.

    I used dbCreatePin to create pin in my pcell. I did:

    net_name = "PLUS"

    net_id = dbMakeNet(pcCellView net_name)

    term_id = dbCreateTerm(net_id net_name "inputOutput")

    PinPlus = dbCreateRect(
    pcCellView
    Layer
    list(0:0 ShapeWidth:ShapeLength)
    )
    dbCreatePin(net_id PinPlus net_name)

    dbAddFigToNet( PinPlus net_id )

    dbCreateLabel(
    pcCellView
    Layer
    ShapeWidth/2:ShapeLength/2
    "PLUS"
    "centerCenter"
    "R0"
    "roman"
    0.01
    )

    but i can not extract any pin information in icfb.

    Actually, i'm writing a skill that should be able to list all pins of
    level 0 and level -1. In this pin information list, i would like to
    display the name of instance, its location and real location of pin.

    but just creating a pin and finding information like real location
    (and not location in the master) is a little bit hard for me (;_;)

    i thought adding a label would be easier, but it's not the case.
    i thought adding a fig would be helpful, but it's not the case either.

    So i really don't know how to create my pin list information.

    could you help me please?

    Thanks ,

    b.
     
    bu-bu, Aug 25, 2008
    #4
  5. bu-bu

    Riad KACED Guest

    Dear bubu,

    In order to create a pin in your Pcell, you need to fellow these
    steps:

    1. Create the shape that will serve as the pin.
    --> ex: fig=dbCreateRect(...)

    2. Create the net to which the pin attaches.
    --> ex: net=dbCreateNet(...)

    3. Create a terminal on the same net.
    --> ex. term=dbCreateTerm(...)

    4. Create a pin:
    --> ex. pin = dbCreatePin(...)

    The figure of a pin represents physical implementation and graphical
    rendering for the pin. A
    pin cannot exist without being attached to a terminal. A terminal
    cannot exist without being
    attached to a net.

    You can then look for your pins using
    cvId~>nets~>pins or cvId~>terminals~>pins or any other ...

    I've previously posted an example that shows how to get pin figures
    from a schematic, it might be helpful for you ...
    http://groups.google.com/group/comp...36eebbfc5dc/48632edd0bc59964#48632edd0bc59964

    At the end, please bear in mind that Instance terminals provide an
    interface between instance and nets in the design.

    Hope this helps ...
    Riad.
     
    Riad KACED, Aug 25, 2008
    #5
  6. bu-bu

    bu-bu Guest

    Hello Riad,
    Thanks a lot for your answer.

    Regards,

    b.
     
    bu-bu, Aug 27, 2008
    #6
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.