Systemc 常见错误

错误类型

编译错误

错误提示

systemc-2.3.1/include/sysc/datatypes/int/sc_uint_base.h:842: undefined reference to `sc_dt::sc_uint_base::to_string

systemc-2.3.1/include/sysc/communication/sc_signal_ports.h:1802: undefined reference to `sc_core::sc_in<bool>::add_trace_internal

….

collect2: error: ld returned 1 exit status

错误分析

出现此错误,很有可能是由于当前环境的默认gcc版本比较低,而安装systemc时使用的gcc版本较高。导致当前低版本的gcc无法识别高版本编译过的systemc库文件。

一般ubuntu16.04环境下,对应的是gcc 5.4.0版本。

修改当前默认gcc的版本号可以参考 https://blog.csdn.net/qq_31175231/article/details/77774971

 

错误类型

编译错误

错误提示

error: ‘std::gets’ has not been declared

错误分析

std::get() 被C++11 删除了,参考 https://stackoverflow.com/questions/38352801/systemc-error-with-the-libraryhttps://stackoverflow.com/questions/12893774/what-is-gets-equivalent-in-c11

可以加上编译选项-std=c++98

Ubuntu20.04 (gcc version 9.3.0) 默认使用的是c++11

 

错误类型

编译通过,执行时报错

错误提示

 Error: (E115) sc_signal<T> cannot have more than one driver: 

    signal `MyTest.test_sig' (sc_signal)

    first driver `MyTest.TestMethod'  (sc_method_process)

    second driver `MyTest.TestThread1' (sc_thread_process)

    In file: ../../../../src/sysc/communication/sc_signal.cpp:73

 

错误分析

参考 https://blog.csdn.net/zgcjaxj/article/details/106106426

systemc规则中,同一个sc_signal不允许有多个驱动,也就是说,同一个sc_signal,只能在一个SC_METHOD或SC_THREAD中被write赋值

 

 

错误类型

编译通过,执行时报错

错误提示

Error:  (E109) complete binding failed: port not bound (sc_in)

In file: external/sysc/sysc/communication/sc_port.cpp:235 或 231

错误分析

说明有port/sc_signal/sc_in/sc_out忘记绑定了 或者 是有port/sc_signal/sc_in/sc_out在还没有绑定的时候就被添加到静态敏感事件列表中了,在simulation过程中发现检索不到敏感事件,报错。关于后者,可参考 https://blog.csdn.net/zgcjaxj/article/details/105455330

一般在end_of_elaboration()函数中添加 SC_METHOD 函数和其敏感事件列表

 

错误类型

编译通过,执行时报错

错误提示

Error:  (E126) sc_export instance already bound: xxxxxxxx

In file: external/sysc/sysc/communication/sc_export.h:188

错误分析

说明有port 重复绑定,且有提示是哪个port/sc_signal

 

 

错误类型

编译通过,执行时报错

错误提示

Error: (E513) an sc_module_name parameter for your constructor is required

In file: external/sysc/sysc/kernel/sc_module.cpp:223

错误分析

一个继承了sc_module的类,必须在列表初始化时对sc_module进行赋值,一般如

MyModule::MyModule(sc_core::sc_module_name name)

    : sc_module(name), ….

 

错误类型

编译通过,执行时报错

错误提示

Error:  (E565) invalid use of sc_(and|or)_event_list: wait() on empty event list not allowed

In file: external/sysc/sysc/kernel/sc_wait.cpp:103

错误分析

还在摸索中

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123axj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值