SystemC требует, чтобы первый параметр конструктора модуля был sc_module_name
.Кроме этого, в этом нет ничего особенного.Макросы SystemC SC_MODULE
и SC_CTOR
просто экономят ваше время, но вы не обязаны их использовать.
SC_MODULE( dut ) {
SC_CTOR(dut) { }
};
Эквивалентно:
struct dut : sc_core::sc_module {
typedef dut SC_CURRENT_USER_MODULE;
dut(::sc_core::sc_module_name) {}
};
Обратите внимание, что struct
участников являются открытыми по умолчанию, а class
члены являются закрытыми по умолчанию.Если вы используете class
вместо struct
, вам нужно будет сделать их общедоступными, добавив public:
явно:
class dut : public sc_core::sc_module {
typedef dut SC_CURRENT_USER_MODULE;
public:
dut(::sc_core::sc_module_name) {}
};