VanTeo Posted June 26, 2016 Report Share Posted June 26, 2016 Hi all, I have a problem with my assignment. I have "General_Register" class, this class has constructor which will receive arguments: General_Reg(sc_module_name reg_Name_, sc_uint<N> reg_DataDefault_, int reg_BitRangeNum_, string bit_Name_[], int bit_Start_[], int bit_Length_[], int bit_Status_[]): sc_module(reg_Name_), reg_Name(reg_Name_), reg_DataDefault(reg_DataDefault_), reg_BitRangeNum(reg_BitRangeNum_), bit_Name(bit_Name_), bit_Start(bit_Start_), bit_Length(bit_Length_), bit_Status(bit_Status_) I have "Generator_Register" class, too. This class has constructor which will receive arguments: Generator_Register(sc_module_name reg_Name_, string file_name_): sc_module(reg_Name_), reg_Name(reg_Name_), file_name(file_name_) and instance the object of "General_Register" class: General_Reg<N> reg_Name(reg_Name, reg_Default, bit_RangeNum, bit_Name, bit_Start, bit_Length, bit_Status); when I run it, it have error: Error: (E513) an sc_module_name parameter for your constructor is required In file: ..\..\src\sysc\kernel\sc_module.cpp:220 Help me, please! My codes were attach below general_register.txt generator_register.txt Quote Link to comment Share on other sites More sharing options...
apfitch Posted June 26, 2016 Report Share Posted June 26, 2016 Hi, I've got a couple of comments. Firstly, in template <int N> class Generator_Register: public sc_module { public: Generator_Register(sc_module_name reg_Name_, string file_name_): sc_module(reg_Name_), reg_Name(reg_Name_), file_name(file_name_) { //... General_Reg<N> reg_Name(reg_Name_, reg_Default, bit_RangeNum, bit_Name, bit_Start, bit_Length, bit_Status); } public: int reg_Num; int bit_RangeNum; sc_module_name reg_Name; string *bit_Name; int *bit_Start; int *bit_Length; int *bit_Status; sc_bv<N> reg_Default; string file_name; }; the declaration of the variable General_Reg<N> reg_Name is a local variable inside the constructor - so it will disappear when the constructor completes. You should make it a class member if you want it to persist. Secondly from section 5.3.3 of IEEE 1666-2011 Class sc_module_name shall only be used as the type of a parameter of a constructor of a class derived fromclass sc_module. In other words you're not allowed to declare a variable of type sc_module_name, which you've done in both your classes. That's because sc_module_name is "magic", it helps build the hierarchical names of all modules during elaboration. If you need to keep the name inside a class, store it in a string. kind regards Alan Quote Link to comment Share on other sites More sharing options...
VanTeo Posted June 27, 2016 Author Report Share Posted June 27, 2016 thank Alan Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.