Jump to content
ducbueno

Problems using SystemC Verification Library

Recommended Posts

Hello,

 

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
CFLAGS = -O2 -Wall -DDEBUG_SYSTEMC

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

all: $(TARGET)

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

.cpp.o:
    $(CC) $(CFLAGS) $(INCDIR) -c $<

clean:
    @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,

 

 

Eduardo.
 

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
$(TARGET): $(OBJS)
    $(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.

 

hth,
  Philipp

Share this post


Link to post
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...