Checking for overlapping cells

Discussion in 'Cadence' started by shuteng, Jul 2, 2009.

  1. shuteng

    shuteng Guest

    Hi,

    I am creating a layout in which I am placing over 1000 instances of
    different test circuits. There is no boundary created for each
    subcell.
    Is there any convenient method that I can check that there are no
    overlap of the bbox for the 1000 instances?

    I would love to have a marker created over the overlapping cells.

    Thanks!
     
    shuteng, Jul 2, 2009
    #1
  2. shuteng

    I-F AB Guest

    Hi,

    How about creating a boundary for each cell (any layer which you can
    remove later), then using xor to check for overlaps?


    Best regards,
    I-F AB
     
    I-F AB, Jul 3, 2009
    #2
  3. shuteng

    I-F AB Guest

    Sorry, didn't make myself clear enough.
    Use a layer (not utilised) on the bounding box & create a thin path.
    Then check with dbLayerXor() or leLayerXor() for overlaps.
    Try unused layers for an easier check.

    I'm more used to using Assura for layer processing.

    Best regards,
    I-F AB
     
    I-F AB, Jul 3, 2009
    #3
  4. shuteng

    I-F AB Guest

    Hi,
    If you have Assura, this might help:
    Use SKILL code below to create the bounding box.
    --------------------------------------------------------
    cv = geGetEditCellView()
    CELLS = cv~>instances
    BOXES = cv~>instances~>bBox
    foreach(Box BOXES
    rodCreateRect(
    ?cvId cv
    ?layer '("border" "drawing")
    ?bBox Box
    )
    )
    --------------------------------------------------------

    Next, create an assura rule file as below & run in DRC:
    -------------------------------------------------------------------------
    drcExtractRules(
    layerDefs( "df2"
    BORDER = layer( "border" type( "drawing" ) )
    );end of layerDefs

    OVERLAPS = geomAnd(BORDER)
    errorLayer(OVERLAPS "INFO: Overlapping here." )
    ) ;drcExtractRules
     
    I-F AB, Jul 3, 2009
    #4
  5. shuteng

    I-F AB Guest

    For full SKILL codes (I'm not sure if it is more efficient), Cadence
    Solution Number 11097614 has this code:

    procedure(CCSfindOverLapInstance()
    let((cv objList)
    cv=geGetWindowCellView()
    foreach(inst cv~>instances
    objList=dbGetOverlaps(cv inst~>bBox nil)
    foreach(obj objList
    if(obj~>name != inst~>name
    printf("Instance %s overlaps Instance %s\n"
    obj~>name inst~>name)
    ); end if
    );end foreach
    );end foreach
    );end let
    );end procedure

    I would've gone through Sourcelink sooner but the line is loading
    quite slow.

    Best regards,
    I-F AB
     
    I-F AB, Jul 3, 2009
    #5
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.