• 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 Design
  3. Symbol Editor: Moving Axes to Background Such That Graphical...

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 126
  • Views 9304
  • 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

Symbol Editor: Moving Axes to Background Such That Graphical Elements are not Covered

sgcad
sgcad over 3 years ago

Hi

In the symbol editor, I like to enable the axes display such that I can easily align the origin of the symbol to where I like. But the axes cover graphical elements, in particular the rectangular outline of the symbol:

Is there a way to change the order of the displayed layers such that the axes (and ideally the grid dots as well, but that's far less disturbing) are in the background, and on top I'd see the green outline of the symbol?

Thanks very much for your response.

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

    This is all to do with the layer purpose priorities in the tech file. You can adjust this by doing this (say):

    tf=techGetTechFile(geGetEditCellView())
    axis=techGetLP(tf list("axis" "drawing"))
    grid=techGetLP(tf list("grid" "drawing"))
    grid1=techGetLP(tf list("grid" "drawing1"))
    techSetLPPriorityInContext(tf axis 1)
    techSetLPPriorityInContext(tf grid 2)
    techSetLPPriorityInContext(tf grid1 3)

    You should make sure that the grid/drawing1 has a higher priority than grid/drawing as otherwise the major grid may get obscured by the minor grid.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 3 years ago

    This is all to do with the layer purpose priorities in the tech file. You can adjust this by doing this (say):

    tf=techGetTechFile(geGetEditCellView())
    axis=techGetLP(tf list("axis" "drawing"))
    grid=techGetLP(tf list("grid" "drawing"))
    grid1=techGetLP(tf list("grid" "drawing1"))
    techSetLPPriorityInContext(tf axis 1)
    techSetLPPriorityInContext(tf grid 2)
    techSetLPPriorityInContext(tf grid1 3)

    You should make sure that the grid/drawing1 has a higher priority than grid/drawing as otherwise the major grid may get obscured by the minor grid.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • sgcad
    sgcad over 3 years ago in reply to Andrew Beckett

    Hi Andrew
    Thank you very much for the response. As I'm not particularly familiar with customizing Virtuoso I think I need a bit more guidance to what to do with the code you posted. So far I put it at the end of my .cdsinit-file, and upon re-starting Virtuoso (version 6.1.8) I get the following output, with no change in symbol appearance:

    *WARNING* (TECH-2000010): techGetTechFile: nil is an invalid ID. The valid ID is dbCellViewId or ddId for a cell or library. Specify the valid ID and rerun the function.
    *Error* techGetLP: argument #1 should be a database object (type template = "dg") - nil
    *Error* techGetLP: argument #1 should be a database object (type template = "dg") - nil
    *Error* techGetLP: argument #1 should be a database object (type template = "dg") - nil
    *Error* eval: unbound variable - axis
    *Error* eval: unbound variable - grid
    *Error* eval: unbound variable - grid1

    Apparently already the first code line fails. So should the code be used in another way? Thanks.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago in reply to sgcad

    The code works if there's a window open - so it's not suitable for running from the .cdsinit as-is. Instead, you can change the first line to:

    tf=techGetTechFile(ddGetObj("yourLibName"))

    where yourLibName is the name of the library that you're designing in - or you could use the name of the technology library that your design library is attached to (usually the main library from the PDK; when you create your design library it's whatever you attach to). Note that it wouldn't normally matter if you use the design library or technology library name here (if you use attach) because the tech file being updated would be that from the technology library in either case.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sgcad
    sgcad over 3 years ago in reply to Andrew Beckett

    Perfect, thanks very much!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Karam Gh
    Karam Gh over 2 years ago in reply to Andrew Beckett

    Is it possible to read or modify the value for the major grid spacing from here?

    I tried grid~>?? but it did not return any meaningful numbers

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to Karam Gh
    Karam Gh said:
    Is it possible to read or modify the value for the major grid spacing from here?

    This should really be a new question (see the forum guidelines), but for an existing window it is:

    hiGetCurrentWindow()~>gridSpacing=0.125 ; that's the default for schematics and defines the minor grid
    hiGetCurrentWindow()~>gridMultiple=8 ; that's the default for schematics and defines the number of gridSpacings between major grid points

    There are also two cdsenv variables to control the defaults for new windows:

    schematic                          schGridSpacing                                                 float    0.125
    schematic                          schGridMultiple                                                int      8

    Andrew

    • 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