• 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 variable declaration in SKILL

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 144
  • Views 15276
  • 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 variable declaration in SKILL

tashah
tashah over 13 years ago

 Is it possible to avoid automatic vairable declartion in SKILL? Something similar to perl's "strict".

If not, is this possible in "Scheme"?

 

Thanks.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    I'm not sure there's really an analagous concept (strict in perl is more related to package variables, I think). You don't declare variables in SKILL anyway. If you try to access a variable which is not bound (i.e. has never been assigned), you'll get an error.

    If you're trying to spot a SKILL variable that should have been in a let() or a prog() to make it local, then you can use SKILL Lint to detect those.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • tashah
    tashah over 13 years ago
    Thanks Andrew for replying. Lint helps to spot globals, but say I have following situation: myDpl = (list nil 'aProp 1 'bProp 2 'cProp 3) If I pass this DPL to my function and check for: (if (equal 2 myDpl->bPorp) ... ...) DPL will return nil, because there is no "bPorp". Is there any solution to overcome those typo bugs?
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Austin CAD Guy
    Austin CAD Guy over 13 years ago

     DPL's are free form, you can add or access data in the DPL without restriction. This makes them prone to this type of error. Use a defstruct or a class to limit the slots available to the variable and it will catch the error when you try to access the non existant slots.

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

    Actually defstruct won't help here because you can still do:

    defstruct(myThing aProp bProp cProp)
    obj=make_myThing()
    obj->bProp => nil

    You could use an association table:

    b=makeTable('pseudoDpl)
    b->aProp=5
    b->aPorp => unbound (so it doesn't flag an error)

    But that wouldn't help you on assignment. So classes are the best way to do it, as Ted mentioned:

    defclass(myThing2 () ((aProp) (bProp) (cProp)))
    c=makeInstance('myThing2)
    c->aProp=2
    c->aPorp => *Error* slotValue: no such slot - aPorp

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • tashah
    tashah over 13 years ago
    Thanks for solutions.
    • 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