• 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. Add lists to a master list

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 143
  • Views 23402
  • 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

Add lists to a master list

RVERP
RVERP over 13 years ago

Hi, i want to add a list to a 'master' list.  I want to use to cons function for this.

masterList = cons(list_3 masterList)

 This works, no problem, only the number of the list to be added is determened by the i in a for loop.

 for( i 1 20
masterList = cons( "list_i" masterList))

  I don't know what function to use that gives the correct return for "list_i"

  • Cancel
  • ebecheto
    ebecheto over 13 years ago

     I am not sur about what you want.

    is it someting like that :

     

    list_1='("a" "a" "a")
    list_2='("b" "b" "b")
    list_3='("c" "c" "c")
    
    masterList=foreach(mapcar i linRg(1 3 1) eval(concat("list_" i)))
    ;=> (("a" "a" "a") ("b" "b" "b") ("c" "c" "c"))
    

    ___

    hope it helps

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Pawandeep
    Pawandeep over 13 years ago
    Hi,

    cons function adds a “element” to beginning of a list. If you want to merge two lists, try using append/append1

    Also take out “list_i” from your code as this is considered as a string and hence it will not work and will not put a new incremented value of “i” inside your for loop. Assign the value to the new item immediately after the for loop and then use your function to combine list/items.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    In general it suggests to me that whatever you're doing here, you're taking the wrong approach. You're effectively using the variables list_N as an array, and that is not good practice (why not use an array or hash table, or cons them onto your masterList as you build them?).

    I wouldn't suggest using linRg() as ebecheto suggested, because that's not a core SKILL function (it's a convenience function provided for OCEAN use, so you couldn't use it unless OCEAN is available - i..e not in pcells). Also, I'd use symeval rather than eval (it's not as expensive):

    for(i 1 20
      masterList=cons(symeval(concat('list_i i)) masterList)
    )

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ebecheto
    ebecheto over 13 years ago

     I like when you correct my mistakes, so let me correct you (for once :which is very rare)

     for(i 1 20   masterList=cons(symeval(concat('list_ i)) masterList))

     You putted an extra i, but I suppose everyone had notice

    ++

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

    Silly me! Thanks for the correction ;-)

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • RVERP
    RVERP over 13 years ago

     Thanks Andrew, symeval works perfectly for what I want I to do.

     

    How do you mean that I'm taking the wrong approach.  Is it not common practice to build a list containing other lists?

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

    Building lists of lists is perfectly reasonable and common place.

    Storing lists in variables where part of the variable name is something that needs to be evaluated later with symeval is the bit I was questioning. You're effectively creating a pseudo-array list_N where N changes to reflect which list you're talking about. Since symbols are not garbage collected, you'd be better off using an array or an association table (hash table) to do that part, even if you then build a list of lists at the end. Or build up the list of lists as you go along, and avoid the intermediate "array" storage.

    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