【发布时间】:2016-02-16 06:11:17
【问题描述】:
我想初始化一个端口名称。端口是一个数组,我的代码不起作用。
SC_MODULE(example) {
sc_clock clk;
sc_signal<bool> mysignals[2];
public:
SC_CTOR(example)
:clk("clk"),
mysignals[0]("mysignals[0]"), // won't work
mysignals[1]("mysignals[1]") // won't work
{}
~example() {
}
};
下面的代码可以通过给clk 命名为“clk”来工作。但是clk 端口不是数组:
SC_MODULE(example) {
sc_clock clk;
public:
SC_CTOR(example)
:clk("clk")
{}
~example() {
}
};
如何命名一个端口数组?
更新:
尝试了建议的评论。还是不行:
#include "systemc.h"
SC_MODULE(example) {
sc_clock clk;
sc_signal<bool> mysignals[2];
public:
SC_CTOR(example)
:clk("clk"),
mysignals{"mysig1", "mysig2"}
{}
~example() {
}
};
int sc_main(int argc, char* argv[]) {
example hello("HELLO");
return(0);
}
编译:
g++ -I. -I<SYSTEMC LIB>/include -L. -L<SYSTEMC LIB>/lib-linux64 -o sim example.cpp -lsystemc -lm -std=c++0x
错误:
example.cpp:在构造函数“example::example(sc_core::sc_module_name)”中: example.cpp:11: 错误:错误的数组初始化器
【问题讨论】:
-
“命名数组”是什么意思?不是“初始化数组”吗?
-
如果你想初始化一个数组你可以写
SC_CTOR(example) :clk("clk"), mysignals{some_value1, some_value2} {}。 -
感谢您的建议。我试过了,但还是不行。我已经更新了我的问题。这里是a short intro to systemc
-
据我所知,在 SystemC 中没有很好的解决方案。您可以潜在地重组并在具有适当名称的项目中一次一个地添加指针和新数组。