Layout Generator

Discussion in 'Cadence' started by New User ^_^, Apr 19, 2004.

  1. New User ^_^

    New User ^_^ Guest

    Hi All,

    (1) At the moment, I am scripting a layout generator in SKILL.
    Actually, I am porting it from GDT GENIE code to Cadance SKILL code so
    I am some kind of translator. Of course, there is no free lunch! What
    I am goint to do now is to make a floorplan first and then copy and
    paste different components to different positions by SKILL code. Does
    anyone try this before? Could anyone point me to a right direction in
    this regard??

    (2) For creating instance, we could use function dbOpenCellViewByType
    and dbCreateInst but it is only for one instance. How about if I would
    like to create an array of instances? e.g. inst1(0,2), inst2(1,2),
    inst3(2,2), inst4(0,1), inst5(1,1), inst6(2,1), inst7(0,0),
    inst8(1,0), inst9(2,0).

    I would appreciate very much if anyone of you could answer me these
    two questions ^^ .

    New User
     
    New User ^_^, Apr 19, 2004
    #1
  2. You can use dbCreateInst or dbCreateInstByMasterNameto create
    instances for your layout. Then calculating the origin for the instance
    location in the layout. You must have some kind of placement algorithm
    from your old program how to do that?!
    In Cadence there are something which is called iterated instance
    e.g I<0:n>, which is I<0>, I<1> to I<n> I did some similar for
    that whith a simple for loop.

    ;; detect if desired view name of the instance for layout creation exists
    ;; else use lxUseCell property, than create the layout instance
    cond(
    ;; the schematic instance has a corresponding layout view
    ( ddGetObj( d_instance~>libName d_instance~>cellName t_viewName )

    for( i x_from x_to

    ;; if the instance is a iterate instance in the schematic
    ;; build a new instance name for the layout
    if( rexMatchp( ">$" d_instance~>name ) then
    t_instanceName = car( parseString( car(
    parseString( d_instance~>name ":" )
    ) "<" ) )
    t_instanceName =
    strcat( t_instanceName "<" sprintf( nil "%n" i ) ">" )
    else
    t_instanceName = d_instance~>name
    ) ;; close if

    d_layInstance =
    dbCreateInstByMasterName(
    d_layCellViewId
    d_instance~>libName
    d_instance~>cellName
    t_viewName
    t_instanceName
    l_origin
    "R0"
    )
    etc.

    Also the are the functions dbCreateSimpleMosaic dbCreateSimpleMosaicByMasterName.

    The 'SKILL Functions Reference' is a good documentation
    to start with.

    Hope this helps Bernd
     
    Bernd Fischer, Apr 19, 2004
    #2
  3. New User ^_^

    S. Badel Guest

    for (2), what you're looking for is so-called mosaic.
    so try dbCreateSimpleMosaicByMasterName, this
    should answer your question.
     
    S. Badel, Apr 19, 2004
    #3
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.