• 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. *Error* eval: code size too big inside a construct (32767...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 125
  • Views 13881
  • 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

*Error* eval: code size too big inside a construct (32767 max; 32771 given)!

Jameel
Jameel over 14 years ago

Hi,

I have a simple skill script as below

load("co_ord_list.il")

foreach( crd_inst crd_list

       dbCreateInstByMasterName(cvid  src_lib  src_cell  "layout"  nil crd_inst "R0" 1)

 );end foreach
 

 

the co_ord_list.il is a simple file that creates a variable called crd_list  whis is a list of co-ordinates like code below.

crd_list = list(
  list( -60770.0 73220.0 )
  list( -56650.0 73220.0 )
  list( -54590.0 73220.0 )
  list( -52530.0 73220.0 )
  list( -50470.0 73220.0 )
  list( -48410.0 73220.0 )
  list( -46350.0 73220.0 )

.

.

.

.

 

)

 

The problem is I have a huge number of co-ordinates ~200,000 pairs and I get  *Error* eval: code size too big inside a construct (32767 max; 32771 given)!

 

 

I can work around the problem by splitting the  co_ord_list.il into smaller chunks but it was wondering if there is any simpler solution.

 

Thanks,

-Jameel

 

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Lawrence, Jameel

    That (the listVariables approach) is a horrible way to do it (sorry) - it relies on knowing the names of global variables. Very bad practice.

    Far better is to change the file contents and not use load to load it. If the file looked like this:


    (
    ( -60770.0 73220.0 )
    ( -56650.0 73220.0 )
    ( -54590.0 73220.0 )
    ( -52530.0 73220.0 )
    ( -50470.0 73220.0 )
    ( -48410.0 73220.0 )
    ( -46350.0 73220.0 )
    )

    Then you could do:

    prt=infile("co_ord_list.txt")
    crd_list=car(lineread(prt))
    close(prt)

    This will slurp in the entire list into the variable in one go, and it's not then code and so no code vector to worry about. It's just data. Also this should be faster, as you do not have to call list() many many times (that's probably a small benefit though).

    The advantage is that lineread is using the SKILL parser, so provided it follows SKILL syntax, it's easy to read. The reason for the car is because lineread returns a list of the things read - you could have multiple entries on the same line - and in this case we're only interested in the first thing on the first line (well, it covers multiple lines, but it starts on the first line).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 14 years ago

    Lawrence, Jameel

    That (the listVariables approach) is a horrible way to do it (sorry) - it relies on knowing the names of global variables. Very bad practice.

    Far better is to change the file contents and not use load to load it. If the file looked like this:


    (
    ( -60770.0 73220.0 )
    ( -56650.0 73220.0 )
    ( -54590.0 73220.0 )
    ( -52530.0 73220.0 )
    ( -50470.0 73220.0 )
    ( -48410.0 73220.0 )
    ( -46350.0 73220.0 )
    )

    Then you could do:

    prt=infile("co_ord_list.txt")
    crd_list=car(lineread(prt))
    close(prt)

    This will slurp in the entire list into the variable in one go, and it's not then code and so no code vector to worry about. It's just data. Also this should be faster, as you do not have to call list() many many times (that's probably a small benefit though).

    The advantage is that lineread is using the SKILL parser, so provided it follows SKILL syntax, it's easy to read. The reason for the car is because lineread returns a list of the things read - you could have multiple entries on the same line - and in this case we're only interested in the first thing on the first line (well, it covers multiple lines, but it starts on the first line).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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