Jump to content

Problems using SystemC Verification Library

Recommended Posts



I'm facing some porblems in using SystemC Verifcation Library, my codes just don't compile.


I'm using Ubuntu 14.04 (64 bits) and I followed the instructions on the INSTALL text file that comes with de SCV package.


I used: ../configure prefix=/usr/local/scv-2.0.0 with-systemc=/usr/local/systemc-2.3.1

(I've created the /usr/loca//scv-2.0.0 beforehand)


After the configuration: make & sudo make install


The installation finishes without errors.


The problems start when I try to use the library in codes. I add to my codes "#include<scv.h>" and add my makefiles looks like this:

CC = g++
INCDIR = -I. -I$(SYSTEMC)/include -I$(SCV)/include
LIBDIR = -L. -L$(SYSTEMC)/lib-linux64 -L$(SCV)/lib-linux64
LIBS   = -lsystemc -lscv -lm

TARGET = verification.x
SRCS   = top.cpp
OBJS   = $(SRCS:.cpp=.o)

all: $(TARGET)

    $(CC) -o $@ $(LIBDIR) $(LIBS) $(OBJS)

    $(CC) $(CFLAGS) $(INCDIR) -c $<

    @rm -f *.o $(TARGET)


Obs.: the environment variable SCV is previously set


Then when I run the make command I get the following (not the full output):

top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x210): undefined reference to `_scv_extension_util::get_dynamic_data()'
top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x218): undefined reference to `_scv_extension_rand_char::updated()'
top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x220): undefined reference to `_scv_extension_rand_char::uninitialize()'
top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x228): undefined reference to `_scv_extension_rand_char::initialize() const'
top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x230): undefined reference to `_scv_extension_rand_char::is_initialized() const'
top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x238): undefined reference to `_scv_extension_callbacks_char::remove_cb(int)'

top.o:(.rodata._ZTV14scv_extensionsIcE[_ZTV14scv_extensionsIcE]+0x260): undefined reference to `_scv_extension_rand_char::generate_value_()'
collect2: error: ld returned 1 exit status
make: *** [verification.x] Error 1

The error seems to come from a library linking problem, but to me it looks like the SCV libraries are linked correctly.


Does anyone knows what is going on?


Thanks in advance,




Share this post

Link to post
Share on other sites

The link order is incorrect.  The dependencies are resolved from right to left.  Your Makefile should say:

# list SCV before SystemC
LIBS   = -lscv -lsystemc  -lm

# local objects first, then the required libraries
    $(CC) -o $@ $(LIBDIR) $(OBJS) $(LIBS) 

As a side note: For C++ applications, you should prefer the variables CXX (for the C++ compiler) and CXXFLAGS (for the compiler flags). CC and CFLAGS are intended for C projects. Secondly, I would recommend not to define DEBUG_SYSTEMC in user code.



Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now