• 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. Latest Ruler in a layout window

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 125
  • Views 16108
  • 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

Latest Ruler in a layout window

JackPro
JackPro over 9 years ago

Hi Andrew,

I have skill code requirement like this:

I will draw many rulers in the layout window. Is there any way to find the latest ruler which exist on the layout window?

If the ruler is a save-able object, we can undo them in a order they are drawn. But I am not able to get latest ruler in skill code.

Regards,

Venkatraman

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    If you have code that creates the rulers, then you could create a group (dbCreateGroup) which is ordered and add each new ruler to that group. Then you'd know.

    Other than that, you can empirically find that the last ruler seems to be:

    car(last(setof(marker cv~>markers marker~>objType=="ruler")))

    However, I don't think there's any guarantee that the rulers will be returned in a particular order. It seems to be that the last in the list is the latest added, but since this is not documented, it could well change due to implementation optimisation at some point. So proceed with care...

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • JackPro
    JackPro over 9 years ago
    Thanks very much. I hope on the basis of undo operation I can find latest rule.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Unknown said:
    Thanks very much. I hope on the basis of undo operation I can find latest rule.

    I have no idea what you mean by that.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • JackPro
    JackPro over 9 years ago

    This code select the latest ruler I guess. I do written it but not extensively tested. Please comment.

     leHiCreateRuler()

    RulerBeforeUndo=setof(x cv~>markers x~>objType=="ruler")

    hiUndo()

    RulerAfterUndo=setof(x cv~>markers x~>objType=="ruler")

    hiRedo()

    foreach(x RulerBeforeUndo

        xyz=member(x RulerAfterUndo)

            if(xyz then

                t

            else

                geSelectFig(x)

            )

        )

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Hmm, not sure I'd ever want to rely on using undo and then redo in any code - it strikes me as a recipe for something going wrong (especially as undo is not per-cellView).

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • JackPro
    JackPro over 9 years ago
    ok Thanks andrew. But do you see any other ideas. if I create ruler, am I able to get its dbid after creation?
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Why don't you check the rulers before calling leHiCreateRuler() and then again afterwards rather than using undo?

    Unfortunately even the leCreateRuler() API doesn't return the dbId of the ruler (this is for historical reasons - rulers weren't implemented using database objects in the past). That might be one solution - although presumably you'd want the interactive benefits of using leHiCreateRuler.

    Perhaps if I understood why it matters to you to find the last ruler, I might be able to suggest an option?

    If anything, if you really have to find the last one, I'd probably go for relying on the order in the database rather than using undo and redo. Perhaps it would just be best to contact customer support with sufficient details as to the problem you're trying to solve, so that an enhancement request to find the last ruler could be filed (you'd have to give some strong justification though for why you need this, I think).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • JackPro
    JackPro over 9 years ago

    Hi Andrew,  That does not work  as with repeat command because if we draw few rulers without canceling hiCreateRuler function, we are may not able to again latest. So it fails. If we need to do so, then we need to go for enter functions and  re-code entire ruler creation procedure. Can we get basic ruler drawing ruler code?

    Out requirement is we are doing some operations on layout depending on the latest ruler. If already exist old rulers the functions what I coded for operations misbehave.

    Also, when hiCreateRuler() is active, the edge gets highlighted(snapping the edges.) If we want to do such hiligiting/sanpping to edge by mouse pointer how can we code? Can you please help me.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    There is no public SKILL API to do the edge snapping - so implementing your own this way can't really be done.

    Relying on the last added ruler is a rather unusual use model - nothing else in Virtuoso works that way (that I can think of). Could your code not just get the user to select the ruler they want to use? That way it's not just dependent upon whatever was added last.

    Regards,

    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