• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. Automatic cutting of a layer in a layout @ virtuoso sof...

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 18003
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Automatic cutting of a layer in a layout @ virtuoso software

Sepsepoo
Sepsepoo over 4 years ago

Hi every body 

  I want to know if there is any remedy to automatically cut some location of for example a "SX_CUT" layer in virtuoso. 

As a matter of fact after drawing a "sx_cut" layer you should cut Deep Nwell layers (T3and S3 in 22nm tech). I know shift+C bind key and options but it was not enough for me.

tnx

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    I don't understand what you mean by "automatic cutting". Are you talking about having some kind of "dynamic voiding" (as is common in PCB tools)? That's available via the Virtuoso RF interface when editing module (package) or board layouts using a board technology but not (as far as I know) on IC fabrics.

    If you want to cut one layer with another, you could use Tools->Layer Generation and then use "AND NOT" to cut the first layer with the second (to produce a third layer). Maybe that's what you want?

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Sepsepoo
    Sepsepoo over 4 years ago in reply to Andrew Beckett

    Thanks dear Andrew 

    Exactly I mean if there is any more CHOP options in software(virtuoso) or not. Or is it possible to have customized CHOP function to remove chop shapes smarter and intelligently ? 

    For example I attached the pic and you can see pink rectangle(SX_CUT) and the green shapes (T3 layer) and I want to remove the SX_CUT only that area contained T3. All holes here are done by CHOP GUI feature and only user should exactly create rectangle around T3 .

    If we can tell to machine to only remove rectangle around the T3 layers with dedicated distance. That would be better and easier way to reach our goal. SX_CUT(pink) and T3(green)CHOP feature

    tnx

    Sepsepoo

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to Sepsepoo

    That sound exactly like a job for the "AND NOT" layer generation that I mentioned earlier. You'd start your original rectangle of SX_CUT as the first layer, have the T3 layer as the second layer, and output layer also as SX_CUT. Select all the shapes you want to be involved and OK the form. You'll have the original rectangle still remaining (so you'd want to delete that), but have the chopped SX_CUT output layer.

    The Chop command doesn't give any options to specify the chop regions based on shapes on another layer. That could be done with SKILL code, but I don't really see the point when the layer generation tool does this for you.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Sepsepoo
    Sepsepoo over 4 years ago in reply to Andrew Beckett

    Hi Andrew. 

    Thanks for your kindly replay. Unfortunately the "T3" layer as the second layer is not located in the same cellview of first layer(SX_CUT) and it is in another cellview and inside the RF transistor. How to access all layer in one cellviewThinking ?  Is it possible to have a flat "gds" file that there is no sub cell and hierarchy? And after that I can use "AND NOT" feature. 

    Regards

    Sepsepoo

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to Sepsepoo

    You can use this SKILL code. Put it in a file (e.g. CCFcutWithLayer.il) and then load it in the CIW or your .cdsinit using load("CCFcutWithLayer.il")

    Select your SX_CUT shapes, and then invoke CCFcutWithLayer()

    You can also call it with different layers - e.g. CCFcutWithLayer(?sourceLayer "Metal5" ?cutLayer "Metal4") 

    It also allows you to choose whether the resulting shapes are merged, whether it deletes the original (uncut) shapes after doing the cutting, and so on. It handles the cut layer being down in the hierarchy.

    Andrew

    procedure(CCFcutWithLayer(@key (objects geGetSelSet()) (cutLayer "T3") 
            (sourceLayer "SX_CUT") keepOriginal (merge t))
        let((shapesToCut layer1 layer2 resultLayer cvId newShapes)
            shapesToCut=setof(shape objects shape~>layerName==sourceLayer)
            when(shapesToCut
                cvId=car(shapesToCut)~>cellView
                abeInit(cvId)
                layer1=abeLayerFromShapes(shapesToCut)
                layer2=abeLayerFromCellView(cutLayer)
                resultLayer=abeNewLayer()
                abeLayerAndNot(layer1 layer2 resultLayer)
                newShapes=abeLayerToCellView(
                    resultLayer sourceLayer ?shapeIds t
                    ?tiles !merge
                    )
                unless(keepOriginal
                    foreach(shape shapesToCut dbDeleteObject(shape))
                )
                abeDone()
                newShapes
            )
        )
    )
    
    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Sepsepoo
    Sepsepoo over 4 years ago in reply to Andrew Beckett

    Hi Andrew

      Many thanks from you again. 

     I run the skill code but there was a problem:

    And also I made a mistake : 

    (sourceLayer "SX_CUT") ----> SXCUT is true and I should delete the _ in source code...

      * abeLayerToCellView:  unrecognized  keyword  -  ?shapeIds

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to Sepsepoo

    You must be using a version prior to IC6.1.8/ICADVM18.1 ISR2 (.500.2 at the end) which was when the ?shapeIds argument was added to abeLayerToCellView. You can just remove the ?shapeIds t part in the code - the function won't return the list of new shape objects, but I suspect that you wouldn't need that anyway. Instead the function would now return t to indicate that the resulting shapes were generated.

    Note that you don't necessarily have to change the code to fix the "SX_CUT" - that's just the default - instead you could have just called CCFcutWithLayer(?sourceLayer "SXCUT") . However, it's example code - you can edit it as you like!

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to Sepsepoo

    You must be using a version prior to IC6.1.8/ICADVM18.1 ISR2 (.500.2 at the end) which was when the ?shapeIds argument was added to abeLayerToCellView. You can just remove the ?shapeIds t part in the code - the function won't return the list of new shape objects, but I suspect that you wouldn't need that anyway. Instead the function would now return t to indicate that the resulting shapes were generated.

    Note that you don't necessarily have to change the code to fix the "SX_CUT" - that's just the default - instead you could have just called CCFcutWithLayer(?sourceLayer "SXCUT") . However, it's example code - you can edit it as you like!

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Children
  • Sepsepoo
    Sepsepoo over 4 years ago in reply to Andrew Beckett

    Amazing. God bless you. 

    WavePray

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information