• 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. Digital Implementation
  3. TCL command substitution seems to be broken in Innovus

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 92
  • Views 18194
  • 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

TCL command substitution seems to be broken in Innovus

ReganActual
ReganActual over 6 years ago

commands that return a collection in Innovus (e.g. get_pins, get_ports, etc.) when used in TCL command substitution return a random hex value (handle to the collection maybe?) instead of the actual command results.

example:

innovus 32> get_pins u_atc_osctest/en_sync/*/*/CP                                                       
u_atc_osctest/en_sync/delay_line[0]_ff_pos_u_sync_ff_pos/u_endura_SDFSYNCND2/CP u_atc_osctest/en_sync/delay_line[1]_ff_pos_u_sync_ff_pos/u_endura_SDFSYNCND2/CP
0xa6a

The get_pins command correctly returns the pin names I wanted from my design (good!) and also some garbage hex value (bad).  The hex # increments by 1 for every command I run that returns a collection.

If I try to use the results using the normal tcl sqare-brackets command substitution

innovus 34> create_ccopt_skew_group -name SG_test -sources [get_pins {u_atc_osctest/en_sync/*/*/CP}]
**ERROR: (IMPCCOPT-2057):    Source '0xa6b' for skew group 'SG_test' is not a pin.

It passes the garbage hex value to the command, instead of the actual results.  Note it does not matter what command I pass things to.

innovus 35> set test_list [get_pins  {u_atc_osctest/en_sync/*/*/CP}]                                                                                     
0xa6c
innovus 36> echo $test_list                                                                                                                              
0xa6c

innovus 37> set test_list [get_pins u_atc_osctest/en_sync/*/*/CP]   
0xa6d

innovus 38> echo $test_list

0xa6d

I always get the hex value instead of the actual command result.

This cannot possibly be a behavior that someone actually wanted. 

Does anyone know why this happens, and how to make it stop so I can do TCL scripting in a normal way for Innovus.  Thanks.

  • Cancel
  • StefanoTraferro
    StefanoTraferro over 6 years ago

    Hi,

    from my experience it depends on how the command is treating its options/arguments. I've seen commands which can handle your example well, but others cannot (as in your case).

    For your specific case, it appears that this option accepts only plain text which you can get using get_attribute, e.g. create_ccopt_skew_group -name SG_test -sources [get_attribute [get_pins {u_atc_osctest/en_sync/*/*/CP}] full_name]

    It's a little bit cumbersome, but it does the job.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ReganActual
    ReganActual over 6 years ago in reply to StefanoTraferro

    That did work, thank you.

    Using [get_property ... hierarchical_name] as a wrapper around the [get_pins ...] call also worked.

    • 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