郁闷了一周的问题
时间:10-02
整理:3721RD
点击:
最近一周一直在忙活,算法理解、数据结构抽取、接口同步机制的定义,一直以为把纯SystemC设计导入Questasim10.2c没有什么问题。没想到上手一试,才发现好像没有我想的那么简单,两个编译运行环境都通了(GNU g++/makefile和Eclipse),就差这个了,郁闷中......
问题描述如下:
拿项目中的一个模块SystemC代码试验,所有的class都分为两个文件(.h和.cpp),除了sc_main.cpp之外。因为这个模块的仿真环境和模型都是单纯的SystemC文件,所以直接用questasim进行编译链接
sccom -g -I ../opengl/include sc_main.cpp
sccom -link
前两步执行都顺利通过,当执行vsim -c sc_main时就郁闷了。
#
QuestaSim>vsim -c sc_main
# vsim -c sc_main
# ** Note: (vsim-3812) Design is being optimized...
# ** Error: (vopt-3197) Load of "/home/wxcheng/workspace/esl/system4.0/temp/work/_sc/linux_x86_64_gcc-4.5.0/systemc.so" failed: /home/wxcheng/workspace/esl/system4.0/temp/work/_sc/linux_x86_64_gcc-4.5.0/systemc.so: undefined symbol: _ZN4Host5helloEv (demangled name: Host::hello()).
# ** Error: (vopt-3676) Could not load shared library /home/wxcheng/workspace/esl/system4.0/temp/work/_sc/linux_x86_64_gcc-4.5.0/systemc.so for SystemC module 'sc_main'.
# ** Error: Failed to find design unit work.sc_main.
# Optimization failed
# Error loading design
问题解决不了,项目后期就无法将RTL代码嵌入到TLM模型中进行验证~
questasim10.2c的example都看了,把mentor的帮助文档也查了一下,文档说对于纯systemc设计,可以将顶层直接制定成sc_main,不用再包裹顶层。文档说这种错误可能是使用了其他版本的systemc库,可我真没有指定到systemc-2.3.1/lib-linux64下呀~
本人又写了一个简单的例子,只有一个.h和sc_main.cpp,倒是可以编译通过~
是不是questasim对sc文件的组织结构有什么没要求?
哪位大婶可以帮看看~
今天将所有*.cpp的内容转移到.h里面,删除所有的cpp,除了sc_main.cpp之外,然后用questasim吃进去,sccom -g sc_main.cppsccom -linkvsim sc_main,之前的问题就消失了,难道questa在吃sc设计时,只吃*.h,不认cpp?我真不想把类的实现放在.h中,谁还有更好的办法?