SC_METHOD 在自定义构造函数中
SC_METHOD in custom constructor
在我的自定义构造函数中,我想使用 SC_METHOD
:
class host_command : public sc_module, public bus_if {
public:
// sc_out<packet_type> out_packet;
sc_buffer<packet_type> out_packet;
host_command(char *name, unsigned int limit) : sc_module(name) {
SC_METHOD(write);
sensitive << out_packet;
}
private:
void write(packet_type data) override {
}
}
但是如果我编译它,我会得到以下错误:
error: ‘SC_CURRENT_USER_MODULE’ has not been declared
SC_METHOD(write);
^
我如何声明 SC_CURRENT_USER_MODULE
或者我根本不能在自定义构造函数中使用 SC_METHOD
?
如果是这样,我怎样才能实现相同的功能?
不使用SC_MODULE宏声明模块时,必须使用SC_HAS_PROCESS宏指示SC_THREADs和SC_METHODs的当前模块:
SC_HAS_PROCESS(host_command);
host_command(char *name, unsigned int limit) : sc_module(name) {
SC_METHOD(write);
sensitive << out_packet;
}
在我的自定义构造函数中,我想使用 SC_METHOD
:
class host_command : public sc_module, public bus_if {
public:
// sc_out<packet_type> out_packet;
sc_buffer<packet_type> out_packet;
host_command(char *name, unsigned int limit) : sc_module(name) {
SC_METHOD(write);
sensitive << out_packet;
}
private:
void write(packet_type data) override {
}
}
但是如果我编译它,我会得到以下错误:
error: ‘SC_CURRENT_USER_MODULE’ has not been declared
SC_METHOD(write);
^
我如何声明 SC_CURRENT_USER_MODULE
或者我根本不能在自定义构造函数中使用 SC_METHOD
?
如果是这样,我怎样才能实现相同的功能?
不使用SC_MODULE宏声明模块时,必须使用SC_HAS_PROCESS宏指示SC_THREADs和SC_METHODs的当前模块:
SC_HAS_PROCESS(host_command);
host_command(char *name, unsigned int limit) : sc_module(name) {
SC_METHOD(write);
sensitive << out_packet;
}