• 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. sort List of Instances

Stats

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

sort List of Instances

Zdeno
Zdeno over 12 years ago

Hello,

 I would like to sort list of instances created by

instList = setof(inst cv->instances inst->cellName == "cnf_digi")

result is

"|column_digi(1)|cnf_digi"

"|column_digi(0)|cnf_digi"

"|column_digi(15)|cnf_digi"

"|column_digi(14)|cnf_digi"

"|column_digi(13)|cnf_digi"

"|column_digi(12)|cnf_digi"

"|column_digi(11)|cnf_digi"

"|column_digi(10)|cnf_digi"

"|column_digi(9)|cnf_digi"

"|column_digi(8)|cnf_digi"

"|column_digi(7)|cnf_digi"

"|column_digi(6)|cnf_digi"

"|column_digi(5)|cnf_digi"

"|column_digi(4)|cnf_digi"

"|column_digi(3)|cnf_digi"

"|column_digi(2)|cnf_digi"

 I tried used

(sort instList lambda (A B)(alphalessp (A->name)(B->name))))

But result is

"|column_digi(1)|cnf_digi"

"|column_digi(10)|cnf_digi"

"|column_digi(11)|cnf_digi"

"|column_digi(12)|cnf_digi"

"|column_digi(13)|cnf_digi"

"|column_digi(14)|cnf_digi"

"|column_digi(15)|cnf_digi"

"|column_digi(2)|cnf_digi"

"|column_digi(3)|cnf_digi"

"|column_digi(4)|cnf_digi"

"|column_digi(5)|cnf_digi"

"|column_digi(6)|cnf_digi"

"|column_digi(7)|cnf_digi"

"|column_digi(8)|cnf_digi"

"|column_digi(9)|cnf_digi"

alphalessp doesn't know sort integer in string as lessp. Is there any possibilities how to sort list of instances according to their names without complicated parsing string to integer and use lessp command?

 

Thank you very much for answer in advance.

 

Best regards,

 

Zdenko Janoska

 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    Hi Zdenko,

    (sort instList (lambda (A B) (minusp (alphaNumCmp A->name B->name t))))

    Should do what you want.

    Andrew.

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

     Dear Andrew,

    thank you very much for quick response.That works perfektly.

      Zdenko

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

     Hi Andrew,

    still there is a problem. I have list of terminals with names:

    "clk_cnt_column<17>"

    "clk_cnt_column<16>"

    "clk_cnt_column<15>"

    "clk_cnt_column<14>"

    "clk_cnt_column<13>"

    "clk_cnt_column<12>"

    "clk_cnt_column<11>"

    "clk_cnt_column<10>"

    "clk_cnt_column<9>"

    "clk_cnt_column<8>"

    "clk_cnt_column<7>"

    "clk_cnt_column<6>"

    "clk_cnt_column<5>"

    "clk_cnt_column<4>"

    "clk_cnt_column<3>"

    "clk_cnt_column<2>"

    "clk_cnt_column<1>"

    "clk_cnt_column<0>"

    "clk_cnt_column<255>"

    "clk_cnt_column<254>"

    =>

    "clk_cnt_column<19>"

    "clk_cnt_column<18>"

     

    and by using

    (sort termList (lambda (A B) (minusp (alphaNumCmp A->name B->name t))))

    in the result first 17 items are missing

    "clk_cnt_column<17>"

    "clk_cnt_column<18>"

    "clk_cnt_column<19>"

    "clk_cnt_column<20>"

     =>

    "clk_cnt_column<255>"

    if using plusp

     (sort termList (lambda (A B) (plusp (alphaNumCmp A->name B->name t))))

    just first 18 items are in the result

    "clk_cnt_column<17>"

    "clk_cnt_column<16>"

    "clk_cnt_column<15>"

    "clk_cnt_column<14>"

    "clk_cnt_column<13>"

    "clk_cnt_column<12>"

    "clk_cnt_column<11>"

    "clk_cnt_column<10>"

    "clk_cnt_column<9>"

    "clk_cnt_column<8>"

    "clk_cnt_column<7>"

    "clk_cnt_column<6>"

    "clk_cnt_column<5>"

    "clk_cnt_column<4>"

    "clk_cnt_column<3>"

    "clk_cnt_column<2>"

    "clk_cnt_column<1>"

    "clk_cnt_column<0>"

    Am I missing any concept with list sorting?

    Thank you for answer in advance.

    Best regards, Zdenko

     

     

     

     

     

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

    Hi Zdenko,

    My guess is that you're looking at the variable termList, rather than using the return value of sort. sort is a destructive list operator; it modifies the list in place and so you should never rely on the variable that you passed in (it will only be correct if the first entry in the original list ended up as the first entry after sorting). So you should always do:

    termList=sort(termList ...)

    Regards,

    Andrew.

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

    Thank you very much. That is true. Now it is working very vell.

    Regards, Zdenko

    • 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