Hi,
In the following header file many sub modules are connected to a top module of sc_vector ports.
The file builds fine, but on running a window message "...has stopped".
Debugging figured out:
A thrown exception "read access violation ";
The line precedes it in the call stack (the one commented beside it in the code ), includes binding a sub module port to one of the top-module's vectors' port.
Also note the exception is thrown after one complete iteration of the for loop (i.e. j =1)
Does this have anything to do with my initialization to the port vectors?
#pragma once
#include "systemc.h"
#include "ArrMult_Unit.h";
SC_MODULE(ArrMult_32)
{
//Ports
sc_vector < sc_in < sc_logic > > xi;
sc_vector < sc_in < sc_logic > > yi;
sc_vector < sc_in < sc_logic > > R;
//
sc_signal < sc_logic> x_sig[32];
sc_signal < sc_logic> y_sig[32];
sc_signal < sc_logic> s [16][16];
sc_signal < sc_logic> co [16][16];
sc_signal < sc_logic> GND;
sc_signal < sc_logic> Dummy;
//
ArrMult_Unit *unit[16][16];
SC_CTOR(ArrMult_32)
:xi("xi",32), yi("yi", 32),R("R", 32)
{
for (int i = 0;i < 16;i++)
{
for (int j = 0;i < 16;i++)
{
char Unit_Name[20];
sprintf(Unit_Name, "ArrMult_Unit_%d%d", i, j);
unit[i][j] = new ArrMult_Unit(Unit_Name);
xi[i].size();
}
}
GND = SC_LOGIC_0;
for (int j = 0;j < 16;j++)
{
unit[0][j]->w(xi[j]);// The line after which an exception was thrown
unit[0][j]->op2i(yi[j]);
unit[0][j]->op1(GND);
unit[0][j]->cin(GND);
unit[0][j]->sum(s[0][j]);
unit[0][j]->cout(co[0][j]);
}
...
};