• 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. Using db objects in replay file

Stats

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

Using db objects in replay file

egolowen
egolowen over 12 years ago

Hi,

I am trying to use SKILL code in order to generate a bunch of commands (which go into a replay file) to move instances in my layout (using the dbMoveFig function).
I am having issues with the db object inside of the command itself. For example, something like this:
          dbMoveFig(db:0x27db609b nil list(-2.020000:4.300000 "R0"))
generates an error.

Is there some way to include a specific db object in the commands in my replay file without generating errors?

Thanks,
Elizabeth

  • Cancel
  • Quek
    Quek over 12 years ago

    Hi Elizabeth

    Using the ID of a figure in dbMoveFig cmd is the correct approach but we should not use the ID directly. A variable containing the ID should be used. E.g.

    a. Select a layout object
    b. Execute the following:

    obj=car(geGetSelSet())
    dbMoveFig(obj nil list(...))

    Please let me know if I have misunderstood your question.

    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Quek
    Quek over 12 years ago

    Hi Elizabeth

    By the way, questions on SKILL programming can be posted to the SKILL forum.


    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • egolowen
    egolowen over 12 years ago

    Hi Quek,

    Unfortunately, I am not selecting any of the instances I am just looping through all of the instances in the cellview and moving them:

    foreach (inst cv_layout~>instances
         ...
         dbMoveFig(inst nil ...)
         ...
    )

    and using obj = car(inst) does not work in this case. Is there anything I could use without having to actually select the instance?

    Thanks,
    Elizabeth

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Quek
    Quek over 12 years ago

    Hi Elizabeth

    There is no need to use "car" cmd or to select the instance if you are already looping through the individual instance IDs. You can use this:

    foreach( inst cv_layout~>instances
       ...
       dbMoveFig(inst nil ...)
       ...
    )

    The above should work. Would you please let us know the specific error message if it still does not work?

    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • egolowen
    egolowen over 12 years ago

    Hi Quek,

    These are the commands and error I am getting:
    dbMoveFig(db:0x1ea7641d nil list(-2.020000:4.300000 "R0"))
    *Error* eval: unbound variable - db
    dbMoveFig(db:0x1ea7641c nil list(-1.140000:4.300000 "R0"))
    *Error* eval: unbound variable - db
    dbMoveFig(db:0x1ea7641a nil list(-0.255000:4.300000 "R0"))
    *Error* eval: unbound variable - db
    dbMoveFig(db:0x1ea7641f nil list(-2.820000:4.220000 "R0"))
    *Error* eval: unbound variable - db
    dbMoveFig(db:0x1ea7641e nil list(-1.140000:4.220000 "R0"))
    *Error* eval: unbound variable - db
    dbMoveFig(db:0x1ea7641b nil list(0.540000:4.220000 "R0"))
    *Error* eval: unbound variable - db

    Thanks,
    Elizabeth

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

    If you're getting that error, you can't be using the foreach as Quek suggested. You must be literally using db:xxxxxxxx as the input to the function. You can't do that, and it is never necessary to do that. 

    The dbIds are per-session and may not be the same (quite unlikely to be the same) between different invocations of virtuoso. Also, the dbId is the "print representation" of the dbId, and only output to allow you to see that it's a dbId and whether it is the same as another dbId in the same session (for example).

    So why are you trying to enter literal dbIds rather than using a loop (you said before you were using a loop)? Maybe you're generating this replay file programmatically? If so, put the loop code in the replay file rather than references to the objects. 

    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