Jump to content

UVM-SystemC compile error: CXXLD libuvm-systemc.la


Recommended Posts

Hello,

I downloaded the latest systemC systemc-2.3.3, compiled and installed it locally.   I also ran some of the tests and an example, and it all works fine. 

This is on RHEL 6.0, using GCC 6.3. 

During the compile, I got warnings like this:

libtool: warning: library '/nis/asic/apps2/linux/sw/verilog/xcelium/XLM_20.09.011/tools.lnx86/cdsgcc/gcc/6.3/install/lib/../lib64/libstdc++.la' was moved.

Searching on that warning (or similar) didn't turn up much, and the compile/install all works fine, so I thought it was no big deal.

However, this same warning seems to be triggering an error for UVM-SystemC compile.   

I've downloaded: uvm-systemc-1.0-beta3, and I'm compiling it by pointing to the above newly compiled/installed systemC.  

../configure --prefix=/nis/asic/gls_dump/ricardga/uvm-systemc-1.0-beta3 --with-systemc=/nis/asic/gls_dump/ricardga/systemc-2.3.3 --enable-debug --enable-profiling=instrument
------------------------------------------------------------------------------
Configuration summary of UVM-SystemC 1.0-beta3 for x86_64-pc-linux-gnu
------------------------------------------------------------------------------

 Directory setup (based on SystemC layout):
   Installation prefix: /nis/asic/gls_dump/ricardga/uvm-systemc-1.0-beta3
   Header files:        /nis/asic/gls_dump/ricardga/uvm-systemc-1.0-beta3/include
   Libraries:           /nis/asic/gls_dump/ricardga/uvm-systemc-1.0-beta3/lib
   Documentation:       /nis/asic/gls_dump/ricardga/uvm-systemc-1.0-beta3/docs
   Examples:            /nis/asic/gls_dump/ricardga/uvm-systemc-1.0-beta3/examples

 Target architecture:   linux64

 Build settings:
   Compiler (flags):    g++

   Preprocessor flags:
   SystemC CFLAGS:      -I/nis/asic/gls_dump/ricardga/systemc-2.3.3/include
   SystemC LIBS:        -L/nis/asic/gls_dump/ricardga/systemc-2.3.3/lib-linux64 -lsystemc
   Additional LIBS:
   Enable compiler optimizations:   yes
   Include debug symbols:           yes
   Generate instrumentation calls:  instrument
   Regular expression library:      POSIX
------------------------------------------------------------------------------

 

But then when I call gmake, I'm getting an error that seems related to the warning:
 

 > gmake
Making all in docs
gmake[1]: Entering directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/docs'
gmake[1]: Nothing to be done for `all'.
gmake[1]: Leaving directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/docs'
Making all in src
gmake[1]: Entering directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src'
gmake  all-recursive
gmake[2]: Entering directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src'
Making all in uvmsc
gmake[3]: Entering directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src/uvmsc'
gmake[4]: Entering directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src/uvmsc'
  CXX    base/uvm_component.lo
  CXX    base/uvm_component_name.lo
  CXX    base/uvm_coreservice_t.lo
  CXX    base/uvm_default_coreservice_t.lo
  CXX    base/uvm_event_callback.lo
  CXX    base/uvm_event.lo
  CXX    base/uvm_globals.lo
  CXX    base/uvm_mutex.lo
  CXX    base/uvm_object.lo
  CXX    base/uvm_object_globals.lo
  CXX    base/uvm_root.lo
  CXX    base/uvm_transaction.lo
  CXX    base/uvm_version.lo
  CXX    cb/uvm_callback.lo
  CXX    cb/uvm_callbacks_base.lo
  CXX    cb/uvm_typeid.lo
  CXX    comps/uvm_agent.lo
  CXX    conf/uvm_config_db_options.lo
  CXX    conf/uvm_resource_base.lo
  CXX    conf/uvm_resource_db_options.lo
  CXX    conf/uvm_resource_options.lo
  CXX    conf/uvm_resource_pool.lo
  CXX    dpi/uvm_hdl.lo
  CXX    factory/uvm_default_factory.lo
  CXX    factory/uvm_factory_override.lo
  CXX    misc/uvm_misc.lo
  CXX    misc/uvm_scope_stack.lo
  CXX    misc/uvm_status_container.lo
  CXX    phasing/uvm_bottomup_phase.lo
  CXX    phasing/uvm_common_phases.lo
  CXX    phasing/uvm_domain.lo
  CXX    phasing/uvm_objection.lo
  CXX    phasing/uvm_phase.lo
  CXX    phasing/uvm_process_phase.lo 

  CXX    phasing/uvm_runtime_phases.lo                                                                                                    [134/1811]
  CXX    phasing/uvm_topdown_phase.lo
  CXX    policy/uvm_comparer.lo
  CXX    policy/uvm_packer.lo
  CXX    policy/uvm_recorder.lo
  CXX    print/uvm_printer.lo
  CXX    print/uvm_printer_globals.lo
  CXX    print/uvm_table_printer.lo
  CXX    print/uvm_tree_printer.lo
  CXX    reg/uvm_mem.lo
  CXX    reg/uvm_mem_mam.lo
  CXX    reg/uvm_mem_region.lo
  CXX    reg/uvm_reg.lo
  CXX    reg/uvm_reg_adapter.lo
  CXX    reg/uvm_reg_backdoor.lo
  CXX    reg/uvm_reg_block.lo
  CXX    reg/uvm_reg_field.lo
  CXX    reg/uvm_reg_fifo.lo
  CXX    reg/uvm_reg_file.lo
  CXX    reg/uvm_reg_indirect_data.lo
  CXX    reg/uvm_reg_indirect_ftdr_seq.lo
  CXX    reg/uvm_reg_item.lo
  CXX    reg/uvm_reg_map.lo
  CXX    reg/uvm_reg_model.lo
  CXX    reg/uvm_reg_read_only_cbs.lo
  CXX    reg/uvm_reg_tlm_adapter.lo
  CXX    reg/uvm_reg_write_only_cbs.lo
  CXX    reg/uvm_vreg.lo
  CXX    reg/uvm_vreg_field.lo
  CXX    reg/uvm_vreg_field_cbs.lo
  CXX    report/uvm_default_report_server.lo
  CXX    report/uvm_report_catcher.lo
  CXX    report/uvm_report_catcher_data.lo
  CXX    report/uvm_report_handler.lo
  CXX    report/uvm_report_message.lo
  CXX    report/uvm_report_object.lo
  CXX    report/uvm_report_server.lo
  CXX    seq/uvm_sequence_base.lo
  CXX    seq/uvm_sequence_item.lo
  CXX    seq/uvm_sequencer_base.lo
  CXXLD  libuvm-systemc.la
libtool: warning: library '/nis/asic/apps2/linux/sw/verilog/xcelium/XLM_20.09.011/tools.lnx86/cdsgcc/gcc/6.3/install/lib/../lib64/libstdc++.la' was moved.
gmake[4]: Leaving directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src/uvmsc'
gmake[3]: Leaving directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src/uvmsc'
Making all in .
gmake[3]: Entering directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src'
gmake[3]: Warning: File `uvmsc/libuvm-systemc.la' has modification time 0.031 s in the future

  CXXLD  libuvm-systemc.la
libtool:   error: cannot find the library '/glad/common/pkgsData/gcc-v6.3.0p3/Linux/RHEL6.0-2013-x86_64/lib/../lib64/libstdc++.la' or unhandled argument '/glad/common/pkgsData/gcc-v6.3.0p3/Linux/RHEL6.0-2013-x86_64/lib/../lib64/libstdc++.la'
gmake[3]: *** [libuvm-systemc.la] Error 1
gmake[3]: Leaving directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src'
gmake[1]: *** [all] Error 2
gmake[1]: Leaving directory `/users/ricardga/Downloads/uvm-systemc-1.0-beta3/objdir/src'
gmake: *** [all-recursive] Error 1

 

Sure enough that library/path in the error doesn't exist.   But I don't know how to resolve the issue.  

Anyone have any ideas?

 

Thank you,

 

 

Link to comment
Share on other sites

I was able to work-around the issue.  I'm thinking the problem has to do with the ".la" file:

libstdc++.la

And the associated libtool warning:

libtool: warning: library '/nis/asic/apps2/linux/sw/verilog/xcelium/XLM_20.09.011/tools.lnx86/cdsgcc/gcc/6.3/install/lib/../lib64/libstdc++.la' was moved.

If I look in the file warned about, libstdc++.la, I find this config at the end:

# Directory that this library needs to be installed in:
libdir='/glad/common/pkgsData/gcc-v6.3.0p3/Linux/RHEL6.0-2013-x86_64/lib/../lib64'

And the error complains about the 'libdir'  path (i.e. /glad/...), which indeed does not exist.  

Unfortunately I'm not familiar with libtool and ".la" files, but it seems to be a way for libtool to find and resolve linking dependencies.  My knowledge of linking begins and ends with compiler directives (i.e. -l<LIB> ), and LD_LIBRARY_PATH variable 😞

And I could see that all the libraries (.so and .a files) were in fact in the path where the libstdc++.la file was found, so I don't quite understand the purpose of the ".la" file redirecting somewhere else.  

In any case, I simply created a sym link at the top of the "libdir" path (i.e. /glad/), and linked back to the path of the warning (where all the .so and .a files exist).

My thought was that this would allow libtool to find the libraries, or at least have a valid path, and get passed the error. 

E.g.:

 ln -fsn /nis/asic/apps2/linux/sw/verilog/xcelium/XLM_20.09.011/tools.lnx86/cdsgcc/gcc/6.3/install/lib64 /glad/common/pkgsData/gcc-v6.3.0p3/Linux/RHEL6.0-2013-x86_64/lib64

This did allow the compile to progress passed the error and complete.   I also ran gmake check and that ran and completed with error.

Would still love someone more knowledgeable to explain if they know what was/is wrong with my setup.  My guess is there was a lingering "libstdc++.la" file from the original gcc/libstdc++ install that either needed to be removed, or needs a correct 'libdir' value, instead of the non-existant path '/glad/....'

 

 

Link to comment
Share on other sites

Hi Ricardo!

I think your assumption is correct: The GCC install in the Xcelium is probably pointing to the original compilation path of Cadence and therefore is not valid on your system. I can see this path in our installations too, which confirms it is not an issue of you using it wrong. As a permanent solution, you probably need to reach out to your IT to fix those path references to the actual locations.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...