Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by iherrera

  1. Hi there, I have created a SC_MODULE that has a member consisting on an array of pointers to another SC_MODULE: SC_MODULE(CLAYER_MEM) { FRAME *pframe[10]; SC_CTOR(CLAYER_MEM); } }; In the SC_CTOR declaration I have tried two different syntax for dynamic allocation, both compiling successfully: 1) Allocation with loop for(uint i=0;i++;i<9) { pframe = new FRAME("frame_"); } (Note: I do not care too much at this point about the name assigned to each instance, as long as it is predictable) 2) Allocation without loop pframe[0] = new FRAME("frame_0"); pframe[1] = new FRAME("frame_1"); pframe[2] = new FRAME("frame_2"); pframe[3] = new FRAME("frame_3"); pframe[4] = new FRAME("frame_4"); pframe[5] = new FRAME("frame_5"); pframe[6] = new FRAME("frame_6"); pframe[7] = new FRAME("frame_7"); pframe[8] = new FRAME("frame_8"); pframe[9] = new FRAME("frame_9"); Obviously I prefer the first one because it is more compact, but I have notice that in RUTIME: 1) with loop, I do not see on screen the result of FRAME constructor calls 2) without loop, I clearly see on screen that FRAME constructor is called for every instance Therefore I assume that the loop construction is wrong, but could you please explain to me why? Thankyou in advance.
  2. Thankyou for catching it, the for loop syntax was the bug...(suprisingly compiles correctly!) I have followed your suggestion, and with sc_vector the code is nice and compact: sc_vector< FRAME > frames; Then in the parent module constructor, simply: ... : sc_module(nm) , frame("frame") ... frame.init(10); However I have a new issue now, as I need a higher number of instances. I have searched for the limit, and above 8000 instances the simulation breaks: E549 uncaught exception: std::bad_alloc I guess it depends on the size of the child module and on the host memory capacity, but I just wonder if there is any hard-coded limit in the number of child modules one can instantiate with sc_vector. Could you please let me know? Thanks.