systemc - b 对象的成员不能在 SystemC 中写入
问题描述
我在 SystemC 上遇到了这个错误,我不明白为什么。错误是:
- 'write': 不是 'sc_core::sc_in' ConsoleApplication1 的成员
- “写”:不是“sc_core::sc_in”的成员
- “sc_core::sc_in”类没有成员“write”
- “sc_core::sc_in”类没有成员“write”
这里我把代码放在一起。
#include<systemc.h>
SC_MODULE(prin) {
sc_in<bool> a;
void print() {
cout << "Hello World\n";
}
SC_CTOR(prin) {
SC_METHOD(print);
sensitive << a;
}
};
SC_MODULE(input) {
prin b;
void in() {
b.a.write(false);
wait();
b.a.write(true);
wait();
}
SC_CTOR(input) : b("sds"){
SC_THREAD(in);
}
};
int sc_main(int argc, char* argv[]) {
input prin1("pint");
sc_start();
return 0;
}
解决方案
端口“a”是输入端口,因此无法写入。如果将其设为输出端口,则可以对其进行写入。此外,端口未绑定,因此您也会收到错误消息,因此我已将信号绑定到它,以便编译。
#include <systemc.h>
SC_MODULE(prin) {
sc_out<bool> a; //output port
sc_signal<bool> sig; //something to bind port a to
void print() {
cout << "Hello World\n";
}
SC_CTOR(prin) {
SC_METHOD(print);
sensitive << a;
a(sig); //bind port a to s signal
}
};
SC_MODULE(input) {
prin b;
void in() {
b.a.write(false);
wait();
b.a.write(true);
wait();
}
SC_CTOR(input) : b("sds"){
SC_THREAD(in);
}
};
int sc_main(int argc, char* argv[]) {
input prin1("pint");
sc_start();
return 0;
}
然后
g++ -file.cpp -lsystemc
./a.out
给我输出
SystemC 2.3.2-Accellera --- Apr 16 2018 00:15:03
Copyright (c) 1996-2017 by all Contributors,
ALL RIGHTS RESERVED
Hello World
推荐阅读
- azure-devops - 将 AzureDevOps 与 MS Teams 或 OneNote 集成,以便将文件发布到指定线程
- android - 用于在 Android 9 中后台运行应用程序的 Cordova 插件
- r - 将 r 中多列中的 Yes, No 替换为 1, 0
- javascript - Bounce Contact 按钮移到底部
- docker-volume - 来自守护程序的错误响应:无法在现有文件上安装卷,文件存在/合并/usr/local/etc/php/conf.d/local.ini
- linux - 通过命令行将本地文件拖放到浏览器窗口进行上传
- sql - 如何找到连续出现两次以上的号码?
- html - 输入类型号在滚动时不会改变值
- laravel - 如何从 laravel 5.8 中删除哈希 我想从登录和注册中删除 laravel 哈希表
- java - 在 Chronicle Map 中使用 String 和 CharSequence 有什么区别吗?