• 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

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 92
  • Views 14506
  • 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

Brian Harrison
Brian Harrison over 15 years ago

Hello,

Is there a proper way to load a dynamically loadable TCL extension in encounter?

example:  www.swig.org/tutorial.html

When I complile the above example and try to load it within encounter I get:

couldn't load file "./example.so": ./example.so: cannot open shared object file: No such file or directory

This works fine within a normal tcl shell.

On a previous project I wrote crude placement algorithm in TCL using encounter commands.  This was done to overcome limitations with encounter clock tree synthesis with IBM ASIC methodology.   The algorithm worked great, but was slow since being in TCL.   I could speed this up in C/C++ using SWIG to create the TCL wrapper.  

Any help?

Best Regards,

Brian

 

  • Cancel
  • jgentry
    jgentry over 15 years ago

     The "No such file or directory" seems suspect but it's weird that it works in stock Tcl.  I usually load all of my tcl packages (albeit, all have been straight Tcl) using packages.  Perhaps there's something wrong with your auto_path?  Are you loading these directly (using 'load') or via 'package require'?

    JG

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Brian Harrison
    Brian Harrison over 15 years ago

    Thanks JG,

    I'm using the 'load' to load the binary extension.

    The tcl interpreter can be compiled to not to allow dynamic loading,  'load', so maybe that's the problem.

    I tried adding a directory:   set auto_path [linsert $auto_path 0 /home/bharris/dev/swig]

    but no luck. 

    info library gives me:

    /apps/SOC81/08.10.002/share/tcltools/icd8.4.11/lib/tcl8.4

    Is there a way to add a path to it?

     

     

     

    Best Regrads,

    Brian

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jgentry
    jgentry over 15 years ago

    Sorry, I'm out of ideas.  We'll probably need Cadence to track this one down.  Let me know what you find out.

    JG

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • BobD
    BobD over 15 years ago
    I don't have experience in this area either.  Checking around Cadence for help. Stand by...
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • BobD
    BobD over 15 years ago

    I summoned help from our TCL blackbelts internally and I *think* I stumbled onto the same problem as you.  I built example.so on 32-bit and then ran on 64-bit Encounter and got this error message:

    UNIX> encounter
    encounter 1> load example.so
    couldn't load file "example.so": example.so: cannot open shared object file: No such file or directory

    In my case, I have Encounter automatically run in 64-bit mode when I'm on a 64-bit machine with this env var (consequently I don't think about whether I'm running 32-bit or 64-bit):

    setenv CDS_AUTO_64BIT ALL

    If I force 32-bit:

    UNIX> encounter -32
    encounter 1> getBuildArch
    32bit
    encounter 2> load example.so
    ->Works no problem

    Looks like the key is to make sure you're running Encounter on the same platform and architecture as you compiled.

    When you chance to have a look, please let us know whether this resolved your issue.  If it does not, we have the right people lined up to help out.

    Thanks!
    Bob

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Brian Harrison
    Brian Harrison over 15 years ago

    Excellent!  Thanks Bob and your TCL blackbelts. When using the example on how to create a TCL extension from:  http://www.swig.org/tutorial.html

    add -m64 to the gcc command so it will load in encounter 64bit:

     

    unix % gcc -fpic -c -m64 example.c example_wrap.c -I/usr/local/include 
    unix % gcc -shared -m64 example.o example_wrap.o -o example.so
     
     
    Best Regards,
    Brian 

     
     
     
    • 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