• 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. Functional Verification
  3. SystemC linking issues (Ubuntu >= 16.04)

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 65
  • Views 3431
  • 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

SystemC linking issues (Ubuntu >= 16.04)

Leandro Heck
Leandro Heck over 8 years ago

I have an issue with ld during the linking process in SystemC environment.

I would like to know if someone knows any workaround or idea to solve this issue!? Thank you.

For example, how can I change/force irun to use a custom binutils since version 2.20 is very old.

OS: Ubuntu 16.04 and 16.10

The ncsc_env_check output is (only relevant information):

ncsc_env_check: 15.10-p001: (c) Copyright 1995-2008 Cadence Design Systems, Inc.
There is no native option on linux, switching to gnu.
64-bit environment variable detected, switching to 64-bit mode
INFO: You are using an older make version

[SOME LINES WERE REMOVED]

------------------------------------------------------------
- Performing compiler version check
------------------------------------------------------------
INFO: Your gnu C++ 4.4 compiler is supported

------------------------------------------------------------
- Performing linker/assembler version check
------------------------------------------------------------
INFO: GNU LD version: GNU ld (GNU Binutils) 2.20
INFO: Assembler: <NOT GNU ASSEMBLER>
WARNING: [AS] Assembler version not supported, looking for version (2.16.1|2.17.50|2.18)

[SOME LINES WERE REMOVED]

------------------------------------------------------------
- Performing OS version check
------------------------------------------------------------
ERROR: Your linux OS version is NOT supported: 4.4.0-59-generic

------------------------------------------------------------
- Showing environment data
------------------------------------------------------------
The sanity of your environment is being tested with the following
environment setup
CXX = /soft64/cadence/ferramentas/INCISIVE151/tools/cdsgcc/gcc/4.4/bin/g++
CXX Version = 4.4
CC = gcc
CC Version = 4.4.5
LD = /soft64/cadence/ferramentas/INCISIVE151/tools.lnx86/cdsgcc/gcc/4.4/bin/ld
Perl Directory = /usr/bin
Perl = perl version 5,
Make Directory = /usr/bin
Make = GNU make v4.1
Assembler Directory = /soft64/cadence/ferramentas/INCISIVE151/tools.lnx86/cdsgcc/gcc/4.4/install/bin/as
Assembler = <NOT GNU ASSEMBLER>

CDSROOT = /soft64/cadence/ferramentas/INCISIVE151
NCSC Version = 15.10-p001
NC-Verilog Version = 15.10-p001
NC-VHDL Version = 15.10-p001

[SOME LINES WERE REMOVED]

ncsc_env_check found a total of 14 errors.

---------------------------------------------------------------------

For example, the log from the hello_world_sc is:

» cat ncsc_run.log
TOOL: ncsc_run(64) 15.10-p001: (c) Copyright 1995-2013 Cadence Design Systems, Inc.

ncsc_run \
-64BIT \
test.cpp \
-dynamic \
-top sc_main \
-gnu \
-64BIT

$CDSROOT = /soft64/cadence/ferramentas/INCISIVE151
$TESTDIR = /home/leco/Dropbox/ultrawideband-luis-moreira/uwb-tx-ctrl/ams_sim/envtest/hello_world_sc

TOOL: ncsc(64) 15.10-p001
ncsc C++ parameters:
ncsc -COMPILER $CDSROOT/tools/cdsgcc/gcc/4.4/bin/g++
-f INCA_libs/ncsc_obj/ncsc.args
-MANUAL
-CFLAGS "-DNCSC
-I$CDSROOT/tools/systemc/include_pch
-I$CDSROOT/tools/tbsc/include
-I$CDSROOT/tools/vic/include
-I$CDSROOT/tools/methodology/OVM/CDNS-2.1.2/sc/src
-I$CDSROOT/tools/methodology/UVM/CDNS-1.1d/sc/sc
-I$CDSROOT/tools/methodology/UVM/CDNS-1.1d/ml/sc
-I$CDSROOT/tools/systemc/include/cci
-I$CDSROOT/tools/systemc/include/factory
-I$CDSROOT/tools/systemc/include/tlm2
-fPIC
-c
-x c++ -Wall"

ncsc: compiling $TESTDIR/test.cpp

building library ncsc_model.so
ld: BFD (GNU Binutils) 2.20 internal error, aborting at ../../binutils-2.20/bfd/reloc.c line 446 in bfd_get_reloc_size

ld: Please report this bug.

collect2: ld returned 1 exit status
INCA_libs/Makefile.ncsc:411: recipe for target 'libncsc_model.so' failed
make: *** [libncsc_model.so] Error 1
ncsc_run: *E,TBBLDF: Failed to build test library
./libncsc_model.so

  • Cancel
  • StephenH
    StephenH over 8 years ago

    Ubuntu is not a supported platform for simulation, and I have seen lots of weirdness with linker issues on Ubuntu and other Debian based platforms.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Leandro Heck
    Leandro Heck over 8 years ago

    Yeah, I know, thanks for the answer. However, what you said does not answer my question.

    I have 2 servers (Centos 5.10 and 6.8) at the university and the CAD works nicely there. However, we have Ubuntu hosts in our labs. I would like to reduce the overload on the servers. So, I am trying to overcome this limitation by myself and maybe others have the same issues and possibly a good workaround.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Leandro Heck
    Leandro Heck over 8 years ago

    Actually, I just figured out how to fix this right now, but I am looking for a non-invasive way, for example using environment variables or compiler flags.
    For example, it is possible to change the ld used by the Cadence SC compiler changing the ld path in this file: ${CDSROOT}/tools.lnx86/cdsgcc/gcc/bin/cdsgcc

    Just replacing ld from the new ld path (in my case, the ld installed in the system):


    *ld) EXEC="ld";; 

    To:

    *ld) EXEC="/usr/bin/ld";;

    For example the ncsc_env_check shows:

    ------------------------------------------------------------
    - Cadence tool tests Summary
    ------------------------------------------------------------
    - 7 out of 7 tests passed (100%)

    • 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