• 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. Align column of a output text file

Stats

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

Align column of a output text file

Aritra
Aritra over 13 years ago

Is there any way to align the column of a output text file? 

For example, I want to store the instance name & location to a file. 

p=outfile("~/inst.txt")

foreach(a geGetEditCellView()~>instances

fprintf(p strcat("\n\t" a~>cellName "\t\t" artMakeString(a~>bBox)))

)

 close(p)

 

Now the cell name will varry in length, so the tab will also varry. As a result the bBox location will not be aligned to a column. Is there any way print cell name aligned to a column & bBox location to next column ?

 

I am using IC5.

  • Cancel
  • marcelpreda
    marcelpreda over 13 years ago

    Hi there,

     

    The idea is to find the longest cellName (as string) and to use it in fprintf.

    The code bellow should work 

    ;; find the length of longest cellName
    max_strlen =0
    foreach(a geGetEditCellView()~>instances
        if( max_strlen < strlen(a~>cellName) then
            max_strlen = strlen(a~>cellName)
        )
    )


    p=outfile("~/inst.txt")
    foreach(a geGetEditCellView()~>instances

        fprintf(p strcat( sprintf(nil "\n\t%%-%ds" max_strlen) "\t%s") a~>cellName artMakeString(a~>bBox))

    )

    close(p)

    Best Regards,

    Marcel

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

    In case you are new to programming, Marcel's answer may seem a little confusing. Essentially, you want to use the features of the format string for fprintf. Here is the simple solution to your question:

    fprintf(p "%-25s %s\n" a~>cellName artMakeString(a~>bBox))

    This says, print a 25 character string that is left justified (%25s would be right justified), followed by a string without a length specification. If any of your cell names happen to be longer than 25, then your columns won't line up in that case because the full string will still be printed rather than truncated. Marcel's solution determines the maximum string length and then dynamically creates the format string (the %-25s) to use the maximum string width. If a hard coded column width is good enough, then the line above should be sufficient.

    Derek

    • 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