提交 00be60b7 编写于 作者: 饶先宏's avatar 饶先宏

202108131152

上级 bb7d033b
......@@ -74,17 +74,17 @@ IDLIST
VID(bDataWriteData),
VID(index),
VID(reset),
END_IDLIST
MODULE_DECLARE(cnncell_concat)
int input_w[4], input_h[4], input_c[4];
int c0, c1, c2, c3;
int output_w, output_h, output_c;
int reset;
END_MODULE_DECLARE(cnncell_concat)
DEFINE_FUNC(cncell_concat_gen_read_write,
"index, wDataWriteEnable, "
"reset, index, wDataWriteEnable, "
"wDataReadValid_0, bDataReadData_0, "
"wDataReadValid_1, bDataReadData_1, "
"wDataReadValid_2, bDataReadData_2, "
......@@ -95,7 +95,7 @@ DEFINE_FUNC(cncell_concat_gen_read_write,
int read2 = 0;
int read3 = 0;
int write = 0;
if (pobj->reset && vget(wDataWriteEnable)) {
if (vget(reset) && vget(wDataWriteEnable)) {
if (((index >= 0) && (index < pobj->c0) && vget(wDataReadValid_0))) {
read0 = 1;
write = 1;
......@@ -125,14 +125,14 @@ DEFINE_FUNC(cncell_concat_gen_read_write,
} END_DEFINE_FUNC
DEFINE_FUNC(cncell_concat_gen_write_data,
"index, wDataWriteEnable, "
"reset, index, wDataWriteEnable, "
"wDataReadValid_0, bDataReadData_0, "
"wDataReadValid_1, bDataReadData_1, "
"wDataReadValid_2, bDataReadData_2, "
"wDataReadValid_3, bDataReadData_3") {
int index = vget(index);
vput(bDataWriteData, 0xcdcdcdcd);
if (pobj->reset && vget(wDataWriteEnable)) {
if (vget(reset) && vget(wDataWriteEnable)) {
if (((index >= 0) && (index < pobj->c0) && vget(wDataReadValid_0))) {
VAssign(bDataWriteData, bDataReadData_0);
}
......@@ -150,14 +150,14 @@ DEFINE_FUNC(cncell_concat_gen_write_data,
DEFINE_FUNC(cncell_concat_gen_write,
"index, wDataWriteEnable, "
"reset, index, wDataWriteEnable, "
"wDataReadValid_0, "
"wDataReadValid_1, "
"wDataReadValid_2, "
"wDataReadValid_3 ") {
int index = vget(index);
vput(wDataWrite, 0);
if (pobj->reset && vget(wDataWriteEnable)) {
if (vget(reset) && vget(wDataWriteEnable)) {
if ( ((index >= 0) && (index < pobj->c0) && vget(wDataReadValid_0))
|| ((index >= pobj->c0) && (index < pobj->c1) && vget(wDataReadValid_1))
|| ((index >= pobj->c1) && (index < pobj->c2) && vget(wDataReadValid_2))
......@@ -169,40 +169,40 @@ DEFINE_FUNC(cncell_concat_gen_write,
} END_DEFINE_FUNC
DEFINE_FUNC(cncell_concat_gen_read_0, "index, wDataWriteEnable, wDataReadValid_0") {
DEFINE_FUNC(cncell_concat_gen_read_0, "reset, index, wDataWriteEnable, wDataReadValid_0") {
int index = vget(index);
vput(wDataRead_0, 0);
if (pobj->reset && vget(wDataWriteEnable)) {
if (vget(reset) && vget(wDataWriteEnable)) {
if (((index >= 0) && (index < pobj->c0) && vget(wDataReadValid_0))) {
vput(wDataRead_0, 1);
}
}
} END_DEFINE_FUNC
DEFINE_FUNC(cncell_concat_gen_read_1, "index, wDataWriteEnable, wDataReadValid_1") {
DEFINE_FUNC(cncell_concat_gen_read_1, "reset, index, wDataWriteEnable, wDataReadValid_1") {
int index = vget(index);
vput(wDataRead_1, 0);
if (pobj->reset && vget(wDataWriteEnable)) {
if (vget(reset) && vget(wDataWriteEnable)) {
if (((index >= pobj->c0) && (index < pobj->c1) && vget(wDataReadValid_1))) {
vput(wDataRead_1, 1);
}
}
} END_DEFINE_FUNC
DEFINE_FUNC(cncell_concat_gen_read_2, "index, wDataWriteEnable, wDataReadValid_2") {
DEFINE_FUNC(cncell_concat_gen_read_2, "reset, index, wDataWriteEnable, wDataReadValid_2") {
int index = vget(index);
vput(wDataRead_2, 0);
if (pobj->reset && vget(wDataWriteEnable)) {
if (vget(reset) && vget(wDataWriteEnable)) {
if (((index >= pobj->c1) && (index < pobj->c2) && vget(wDataReadValid_2))) {
vput(wDataRead_2, 1);
}
}
} END_DEFINE_FUNC
DEFINE_FUNC(cncell_concat_gen_read_3, "index, wDataWriteEnable, wDataReadValid_3") {
DEFINE_FUNC(cncell_concat_gen_read_3, "reset, index, wDataWriteEnable, wDataReadValid_3") {
int index = vget(index);
vput(wDataRead_3, 0);
if (pobj->reset && vget(wDataWriteEnable)) {
if (vget(reset) && vget(wDataWriteEnable)) {
if (((index >= pobj->c2) && (index < pobj->c3) && vget(wDataReadValid_3))) {
vput(wDataRead_3, 1);
}
......@@ -211,13 +211,14 @@ DEFINE_FUNC(cncell_concat_gen_read_3, "index, wDataWriteEnable, wDataReadValid_3
DEFINE_FUNC(cncell_concat_gen_clktick, "") {
int index;
if (pobj->reset == 0) {
if (vget(reset) == 0) {
if (vget(nwReset) == 0) {
index = 0;
vput(index, index);
vput(reset, 0);
}
else {
pobj->reset = 1;
vput(reset, 1);
}
}
else if (vget(wDataWriteEnable)) {
......@@ -251,7 +252,6 @@ MODULE_INIT(cnncell_concat)
pobj->output_w = (int)MODULE_PARAM(i * 3 + 0);
pobj->output_h = (int)MODULE_PARAM(i * 3 + 1);
pobj->output_c = (int)MODULE_PARAM(i * 3 + 2);
pobj->reset = 0;
PORT_IN(wClk, 1);
PORT_IN(nwReset, 1);
......@@ -277,7 +277,7 @@ MODULE_INIT(cnncell_concat)
GPORT_OUT(bDataWriteData, 32, cncell_concat_gen_write_data);
REG(index, 32);
REG(reset, 1);
CLKTICK_FUNC(cncell_concat_gen_clktick);
END_MODULE_INIT(cnncell_concat)
......
......@@ -83,6 +83,7 @@ IDLIST
VID(writeline),
VID(readline),
VID(lineindex),
VID(reset),
END_IDLIST
MODULE_DECLARE(cnncell_convolution)
......@@ -98,7 +99,6 @@ MODULE_DECLARE(cnncell_convolution)
float* line_out;
short *coeff;
short *bias;
int reset;
#if CNNCELLDEBUG
FILE* pDumpFile;
#endif
......@@ -113,8 +113,8 @@ enum convstate {
CONV_STRIPLINE,
};
DEFINE_FUNC(cnncell_convolution_gen_output_coeff, "state, index, wCoeffReadValid, bCoeffOffset, bCoeffBiasOffset") {
if (pobj->reset == 0) {
DEFINE_FUNC(cnncell_convolution_gen_output_coeff, "reset, state, index, wCoeffReadValid, bCoeffOffset, bCoeffBiasOffset") {
if (vget(reset) == 0) {
vput(wCoeffRead, 0);
vput(bCoeffReadAddr, 0);
}
......@@ -153,9 +153,9 @@ DEFINE_FUNC(cnncell_convolution_gen_output_coeff, "state, index, wCoeffReadValid
}
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_convolution_gen_output_read, "state, wDataReadValid, readline, index") {
DEFINE_FUNC(cnncell_convolution_gen_output_read, "reset, state, wDataReadValid, readline, index") {
vput(wDataRead,0);
if (pobj->reset != 0) {
if (vget(reset) != 0) {
int state = vget(state);
if (state == CONV_START) {
if (vget(wDataReadValid)) {
......@@ -230,20 +230,21 @@ END_DEFINE_FUNC
DEFINE_FUNC(cnncell_convolution_clktick, "") {
//wDataRead = 0;
if (pobj->reset == 0) {
int reset = vget(reset);
if (reset == 0) {
if (vget(nwReset) == 0) {
vput(state, READ_COEFF);
vput(index, 0);
vput(readline, 0);
vput(writeline, 0);
vput(reset, 0);
}
else {
pobj->reset = 1;
vput(reset, 1);
}
}
if (pobj->reset) {
if (reset) {
int state = vget(state);
pobj->reset = 1;
if (state == READ_COEFF) {
int coeffvalid;
coeffvalid = vget(wCoeffReadValid);
......@@ -397,7 +398,6 @@ MODULE_INIT(cnncell_convolution)
pobj->pw = (int)MODULE_PARAM(10);
pobj->ph = (int)MODULE_PARAM(11);
pobj->actfunc= (int)MODULE_PARAM(12);
pobj->reset = 0;
pobj->coeffcount = pobj->output_c * pobj->kw * pobj->kh * pobj->input_c;
pobj->coeff = (short *)malloc(pobj->coeffcount * sizeof(short));
pobj->bias = (short *)malloc(pobj->output_c * sizeof(short));
......@@ -445,6 +445,7 @@ MODULE_INIT(cnncell_convolution)
REG(writeline, 32);
REG(readline, 32);
REG(lineindex, 32);
REG(reset, 1);
CLKTICK_FUNC(cnncell_convolution_clktick);
DEINIT_FUNC(cnncell_convolution_deinit);
END_MODULE_INIT(cnncell_convolution)
......
......@@ -86,6 +86,7 @@ IDLIST
VID(state),
VID(index),
VID(reset),
END_IDLIST
enum outputstate {
......@@ -96,7 +97,6 @@ enum outputstate {
MODULE_DECLARE(cnncell_dataoutput)
int w, h, c;
float* buf;
int reset;
END_MODULE_DECLARE(cnncell_dataoutput)
DEFINE_FUNC(cnncell_dataoutput_output, "") {
......@@ -112,14 +112,15 @@ DEFINE_FUNC(cnncell_dataoutput_output, "") {
return 0;
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_dataoutput_clktick, "") {
if (pobj->reset == 0) {
DEFINE_FUNC(cnncell_dataoutput_clktick, "reset, nwReset") {
if (vget(reset) == 0) {
if (vget(nwReset) == 0) {
vput(state, READ_DATA);
vput(index, 0);
vput(reset, 0);
}
else {
pobj->reset = 1;
vput(reset, 1);
}
}
else {
......@@ -146,9 +147,9 @@ DEFINE_FUNC(cnncell_dataoutput_clktick, "") {
}
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_dataoutput_gen_output_read, "state, wDataReadValid") {
DEFINE_FUNC(cnncell_dataoutput_gen_output_read, "reset, state, wDataReadValid") {
vput(wDataRead, 0);
if (pobj->reset != 0) {
if (vget(reset) != 0) {
int state = vget(state);
if (state == READ_DATA) {
if (vget(wDataReadValid)) {
......@@ -170,7 +171,6 @@ MODULE_INIT(cnncell_dataoutput)
pobj->buf = (float*)malloc(pobj->c * pobj->w * pobj->h * sizeof(float));
PORT_IN(wClk, 1);
PORT_IN(nwReset, 1);
pobj->reset = 0;
GPORT_OUT(wDataRead, 1, cnncell_dataoutput_gen_output_read);
PORT_IN(wDataReadValid, 1);
......@@ -178,6 +178,7 @@ MODULE_INIT(cnncell_dataoutput)
REG(state, 3);
REG(index, 32);
REG(reset, 1);
CLKTICK_FUNC(cnncell_dataoutput_clktick);
DEINIT_FUNC(cnncell_dataoutput_deinit);
......
......@@ -68,23 +68,23 @@ IDLIST
VID(cur_c),
VID(index),
VID(complete),
VID(reset),
END_IDLIST
MODULE_DECLARE(cnncell_datasource)
int w, h, c;
int reset;
END_MODULE_DECLARE(cnncell_datasource)
DEFINE_FUNC(cnncell_datasource_gen_wDataWrite, "complete, wDataWriteEnable") {
vput(wDataWrite, (vget(complete) == 0) && (pobj->reset != 0) && vget(wDataWriteEnable));
DEFINE_FUNC(cnncell_datasource_gen_wDataWrite, "reset, complete, wDataWriteEnable") {
vput(wDataWrite, (vget(complete) == 0) && (vget(reset) != 0) && vget(wDataWriteEnable));
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_datasource_gen_bDataWriteData, "cur_c, cur_h, cur_w") {
vput(bDataWriteData, *((unsigned int *)&keyboard[vget(cur_c)][vget(cur_h)][vget(cur_w)]));
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_datasource_gen_cur_whc, "complete, wDataWriteEnable, index, cur_c, cur_w, cur_h") {
if (pobj->reset == 0) {/* 低电平有效 */
DEFINE_FUNC(cnncell_datasource_gen_cur_whc, "reset, complete, wDataWriteEnable, index, cur_c, cur_w, cur_h") {
if (vget(reset) == 0) {/* 低电平有效 */
vput(index, 0);
vput(complete, 0);
vput(cur_w, 0);
......@@ -121,10 +121,10 @@ DEFINE_FUNC(cnncell_datasource_gen_cur_whc, "complete, wDataWriteEnable, index,
}
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_datasource_clktick, "") {
if (pobj->reset == 0) {
DEFINE_FUNC(cnncell_datasource_clktick, "nwReset") {
if (vget(reset) == 0) {
if (vget(nwReset))
pobj->reset = 1;
vput(reset, 1);
}
} END_DEFINE_FUNC
......@@ -132,7 +132,6 @@ MODULE_INIT(cnncell_datasource)
pobj->w = (int)MODULE_PARAM(0);
pobj->h = (int)MODULE_PARAM(1);
pobj->c = (int)MODULE_PARAM(2);
pobj->reset = 0;
PORT_IN(wClk, 1);
PORT_IN(nwReset, 1);
......@@ -144,5 +143,6 @@ MODULE_INIT(cnncell_datasource)
GREG(cur_c, 32, cnncell_datasource_gen_cur_whc);
GREG(index, 32, cnncell_datasource_gen_cur_whc);
GREG(complete, 1, cnncell_datasource_gen_cur_whc);
REG(reset, 1);
CLKTICK_FUNC(cnncell_datasource_clktick);
END_MODULE_INIT(cnncell_datasource)
......@@ -79,6 +79,7 @@ IDLIST
VID(bDataWriteData),
VID(state),
VID(index),
VID(reset),
END_IDLIST
MODULE_DECLARE(cnncell_innerproduct)
......@@ -90,7 +91,6 @@ MODULE_DECLARE(cnncell_innerproduct)
short* bias;
float* inbuf;
float* outbuf;
int reset;
#if CNNCELLDEBUG
FILE* pDumpFile;
#endif
......@@ -104,8 +104,8 @@ enum innerproductstate {
DO_WRITE,
};
DEFINE_FUNC(cnncell_innerproduct_gen_output_coeff, "state, index, wCoeffReadValid, bCoeffOffset, bCoeffBiasOffset") {
if (pobj->reset == 0) {
DEFINE_FUNC(cnncell_innerproduct_gen_output_coeff, "reset, state, index, wCoeffReadValid, bCoeffOffset, bCoeffBiasOffset") {
if (vget(reset) == 0) {
vput(wCoeffRead, 0);
vput(bCoeffReadAddr, 0);
}
......@@ -179,13 +179,14 @@ DEFINE_FUNC(cnncell_innerproduct_calc, "") {
DEFINE_FUNC(cnncell_innerproduct_clktick, "") {
if (pobj->reset == 0) {
if (vget(reset) == 0) {
if (vget(nwReset) == 0) {
vput(state, READ_COEFF);
vput(index, 0);
vput(reset, 0);
}
else {
pobj->reset = 1;
vput(reset, 1);
}
}
else {
......@@ -267,9 +268,9 @@ DEFINE_FUNC(cnncell_innerproduct_clktick, "") {
}
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_innerproduct_gen_output_read, "state, wDataReadValid") {
DEFINE_FUNC(cnncell_innerproduct_gen_output_read, "reset, state, wDataReadValid") {
vput(wDataRead, 0);
if (pobj->reset != 0) {
if (vget(reset) != 0) {
int state = vget(state);
if (state == READ_DATA) {
if (vget(wDataReadValid)) {
......@@ -279,7 +280,7 @@ DEFINE_FUNC(cnncell_innerproduct_gen_output_read, "state, wDataReadValid") {
}
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_innerproduct_gen_output_write, "index, wDataWriteEanble") {
DEFINE_FUNC(cnncell_innerproduct_gen_output_write, "index, state, wDataWriteEanble") {
int index;
index = vget(index);
vput(wDataWrite, 0);
......@@ -307,7 +308,6 @@ MODULE_INIT(cnncell_innerproduct)
pobj->output_w = (int)MODULE_PARAM(3);
pobj->output_h = (int)MODULE_PARAM(4);
pobj->output_c = (int)MODULE_PARAM(5);
pobj->reset = 0;
pobj->coeffcount = pobj->output_c * pobj->input_h * pobj->input_w * pobj->input_c;
pobj->coeff = (short*)malloc(pobj->coeffcount * sizeof(short));
pobj->bias = (short*)malloc(pobj->output_c * pobj->output_h * pobj->output_w * sizeof(short));
......@@ -350,7 +350,7 @@ MODULE_INIT(cnncell_innerproduct)
REG(state, 3);
REG(index, 32);
REG(reset, 1);
CLKTICK_FUNC(cnncell_innerproduct_clktick);
DEINIT_FUNC (cnncell_innerproduct_deinit);
......
......@@ -63,6 +63,7 @@ IDLIST
VID(bDataWriteData),
VID(index),
VID(state),
VID(reset),
END_IDLIST
MODULE_DECLARE(cnncell_lrn)
......@@ -72,7 +73,6 @@ MODULE_DECLARE(cnncell_lrn)
float k, alpha, beta;
float* buf;
float* square;
int reset;
#if CNNCELLDEBUG
FILE* pDumpFile;
#endif
......@@ -84,9 +84,9 @@ enum cnncell_lrn_state {
LRN_WRITE,
};
DEFINE_FUNC(cnncell_lrn_gen_read, "state, wDataReadValid") {
DEFINE_FUNC(cnncell_lrn_gen_read, "reset, state, wDataReadValid") {
vput(wDataRead, 0);
if (pobj->reset != 0) {
if (vget(reset) != 0) {
if (vget(state) == LRN_READ) {
if (vget(wDataReadValid)) {
vput(wDataRead, 1);
......@@ -159,13 +159,13 @@ DEFINE_FUNC(cnncell_lrn_gen_line, "") {
DEFINE_FUNC(cnncell_lrn_clktick, "") {
int state = vget(state);
int index = vget(index);
if (pobj->reset == 0) {
if (vget(reset) == 0) {
if (vget(nwReset) == 0) {
vput(state, LRN_READ);
index = 0;
}
else {
pobj->reset = 1;
vput(reset, 1);
}
}
else if (state == LRN_READ) {
......@@ -215,7 +215,6 @@ MODULE_INIT(cnncell_lrn)
pobj->alpha = (float)MODULE_PARAM_REAL(5);
pobj->beta = (float)MODULE_PARAM_REAL(6);
pobj->region = (int)MODULE_PARAM(7);
pobj->reset = 0;
#if CNNCELLDEBUG
{
char filename[80];
......@@ -242,7 +241,7 @@ MODULE_INIT(cnncell_lrn)
REG(index, 32);
REG(state, 3);
REG(reset, 1);
CLKTICK_FUNC(cnncell_lrn_clktick);
DEINIT_FUNC(cnncell_lrn_deinit);
......
......@@ -67,6 +67,7 @@ IDLIST
VID(writeline),
VID(readline),
VID(lineindex),
VID(reset),
END_IDLIST
MODULE_DECLARE(cnncell_pooling)
......@@ -78,7 +79,6 @@ MODULE_DECLARE(cnncell_pooling)
int linesize;
float* line_in;
float* line_out;
int reset;
#if CNNCELLDEBUG
FILE* pDumpFile;
#endif
......@@ -93,9 +93,9 @@ enum poolingstate {
};
DEFINE_FUNC(cnncell_pooling_gen_read, "state, wDataReadValid, readline, index, ") {
DEFINE_FUNC(cnncell_pooling_gen_read, "reset, state, wDataReadValid, readline, index, ") {
vput(wDataRead, 0);
if (pobj->reset != 0) {
if (vget(reset) != 0) {
int state = vget(state);
if (state == POOLING_START) {
if (vget(wDataReadValid)) {
......@@ -202,7 +202,7 @@ END_DEFINE_FUNC
DEFINE_FUNC(cnncell_pooling_clktick, "") {
//wDataRead = 0;
if (pobj->reset == 0) {
if (vget(reset) == 0) {
if (vget(nwReset) == 0) {
vput(state, POOLING_START);
vput(index, 0);
......@@ -210,7 +210,7 @@ DEFINE_FUNC(cnncell_pooling_clktick, "") {
vput(writeline, 0);
}
else {
pobj->reset = 1;
vput(reset, 1);
}
}
else {
......@@ -326,7 +326,6 @@ MODULE_INIT(cnncell_pooling)
pobj->line_in = (float*)malloc(pobj->kh * pobj->linesize * sizeof(float));
memset(pobj->line_in, 0, pobj->kh* pobj->linesize * sizeof(float));
pobj->line_out = (float*)malloc(pobj->output_w * pobj->output_c * sizeof(float));
pobj->reset = 0;
#if CNNCELLDEBUG
{
char filename[80];
......@@ -351,7 +350,7 @@ MODULE_INIT(cnncell_pooling)
REG(writeline, 32);
REG(readline, 32);
REG(lineindex, 32);
REG(reset, 1);
CLKTICK_FUNC(cnncell_pooling_clktick);
DEINIT_FUNC(cnncell_pooling_deinit);
......
......@@ -63,13 +63,13 @@ IDLIST
VID(bDataWriteData),
VID(state),
VID(index),
VID(reset),
END_IDLIST
MODULE_DECLARE(cnncell_softmax)
int w, h, c;
float* inbuf;
float* outbuf;
int reset;
#if CNNCELLDEBUG
FILE* pDumpFile;
#endif
......@@ -113,13 +113,13 @@ DEFINE_FUNC(cnncell_softmax_calc, "") {
DEFINE_FUNC(cnncell_softmax_clktick, "") {
if (pobj->reset == 0) {
if (vget(reset) == 0) {
if (vget(nwReset) == 0) {
vput(state, READ_DATA);
vput(index, 0);
}
else {
pobj->reset = 1;
vput(reset, 1);
}
}
else {
......@@ -160,9 +160,9 @@ DEFINE_FUNC(cnncell_softmax_clktick, "") {
}
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_softmax_gen_output_read, "state, wDataReadValid") {
DEFINE_FUNC(cnncell_softmax_gen_output_read, "reset, state, wDataReadValid") {
vput(wDataRead, 0);
if (pobj->reset != 0) {
if (vget(reset) != 0) {
int state = vget(state);
if (state == READ_DATA) {
if (vget(wDataReadValid)) {
......@@ -172,7 +172,7 @@ DEFINE_FUNC(cnncell_softmax_gen_output_read, "state, wDataReadValid") {
}
} END_DEFINE_FUNC
DEFINE_FUNC(cnncell_softmax_gen_output_write, "state, idnex, wDataWriteEnable") {
DEFINE_FUNC(cnncell_softmax_gen_output_write, "state, index, wDataWriteEnable") {
int index;
index = vget(index);
vput(wDataWrite, 0);
......@@ -195,7 +195,6 @@ MODULE_INIT(cnncell_softmax)
pobj->c = (int)MODULE_PARAM(2);
pobj->inbuf = (float*)malloc(pobj->c * pobj->h * pobj->w * sizeof(float));
pobj->outbuf = (float*)malloc(pobj->c * pobj->h * pobj->w * sizeof(float));
pobj->reset = 0;
#if CNNCELLDEBUG
{
char filename[80];
......@@ -216,6 +215,7 @@ MODULE_INIT(cnncell_softmax)
REG(state, 3);
REG(index, 32);
REG(reset, 1);
CLKTICK_FUNC(cnncell_softmax_clktick);
DEINIT_FUNC(cnncell_softmax_deinit);
......
......@@ -31,7 +31,7 @@
/*
* 由googlenet程序生成
* 生成时间:Fri Aug 6 21:35:17 2021
* 生成时间:Fri Aug 13 10:47:54 2021
* 请不要手工修改。
*/
`include "hdl4secell.v"
......
......@@ -49,7 +49,7 @@ unsigned long long clocks = 0;
static int running = 1;
#define VCDOUTPUT 1
#define VCDOUTPUT 0
int cnnInit();
......@@ -95,25 +95,54 @@ int main(int argc, char* argv[])
objectCall2(vcdfile, AddSignal, "/top/srcbuf", "count");
objectCall2(vcdfile, AddSignal, "/top/srcbuf", "maxcount");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "wDataRead");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "wDataReadValid");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "bDataReadData");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "wDataWriteEnable");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "wDataWrite");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "bDataWriteData");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "index");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "state");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "writeline");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "readline");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_13", "lineindex");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "wRead");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "wDataValid");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "bReadData");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "wWriteEnable");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "wWrite");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "bWriteData");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "readpos");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "writepos");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "wWriteEn");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "wReadEn");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "inputcount");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "outputcount");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "count");
objectCall2(vcdfile, AddSignal, "/top/net/cnn_buf_167", "maxcount");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "wCoeffRead");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "bCoeffReadAddr");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "wCoeffReadValid");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "wDataRead");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "wDataReadValid");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "bDataReadData");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "wDataWriteEnable");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "wDataWrite");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "bDataWriteData");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "index");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "state");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "writeline");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "readline");
objectCall2(vcdfile, AddSignal, "/top/net/convolution_2", "lineindex");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_13", "wCoeffRead");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_13", "wCoeffReadValid");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_13", "bCoeffReadAddr");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_13", "bCoeffReadData");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_13", "bCoeffOffset");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_13", "read");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_13", "readaddr");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_2", "wCoeffRead");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_2", "wCoeffReadValid");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_2", "bCoeffReadAddr");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_2", "bCoeffReadData");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_2", "bCoeffOffset");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_2", "read");
objectCall2(vcdfile, AddSignal, "/top/net/coeffbuf_2", "readaddr");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "wDataRead");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "wDataReadValid");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "bDataReadData");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "wDataWriteEnable");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "wDataWrite");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "bDataWriteData");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "state");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "index");
objectCall2(vcdfile, AddSignal, "/top/net/softmax_168", "reset");
objectCall1(vcdfile, SetTopModule, topmodule);
objectCall0(vcdfile, StartRecord);
......
......@@ -92,8 +92,6 @@ typedef struct _sGeneralModule {
MODULE_FUNC deinit_func;
THREADLOCK lock;
const char* clktick_depend;
void* pobj;
void* priv_data;
void* func_param;
......@@ -538,7 +536,6 @@ do { \
#define CLKTICK_FUNC(func) \
do { \
pobj->pmodule->clktick_func = func; \
pobj->pmodule->clktick_depend = STRDUP(__##func##_depend_list); \
}while (0)
#define DEINIT_FUNC(func) pobj->pmodule->deinit_func = func
......
......@@ -64,6 +64,7 @@ IDLIST
VID(outputcount),
VID(count),
VID(maxcount),
VID(reset),
END_IDLIST
MODULE_DECLARE(hdl4se_fifo)
......@@ -71,10 +72,9 @@ MODULE_DECLARE(hdl4se_fifo)
unsigned int depth;
unsigned int wordsize;
unsigned int* fifo_data;
int reset;
END_MODULE_DECLARE(hdl4se_fifo)
DEFINE_FUNC(hdl4se_fifo_gen_bReadData, "readpos") {
DEFINE_FUNC(hdl4se_fifo_gen_bReadData, "readpos, wWrite") {
unsigned int readaddr = vget(readpos);
var readdata = Var(bReadData);
unsigned int j;
......@@ -91,8 +91,8 @@ DEFINE_FUNC(hdl4se_fifo_gen_wWriteEnable, "wWriteEn") {
VAssign(wWriteEnable, wWriteEn);
} END_DEFINE_FUNC
DEFINE_FUNC(hdl4se_fifo_gen_readpos, "readpos, wRead, wReadEn") {
if (pobj->reset == 0) {
DEFINE_FUNC(hdl4se_fifo_gen_readpos, "reset, readpos, wRead, wReadEn") {
if (vget(reset) == 0) {
vput(readpos, 0);
}
else {
......@@ -106,8 +106,8 @@ DEFINE_FUNC(hdl4se_fifo_gen_readpos, "readpos, wRead, wReadEn") {
}
} END_DEFINE_FUNC
DEFINE_FUNC(hdl4se_fifo_gen_writepos, "writepos, wWrite, wWriteEn") {
if (pobj->reset == 0) {
DEFINE_FUNC(hdl4se_fifo_gen_writepos, "reset, writepos, wWrite, wWriteEn") {
if (vget(reset) == 0) {
vput(writepos, 0);
}
else {
......@@ -121,8 +121,8 @@ DEFINE_FUNC(hdl4se_fifo_gen_writepos, "writepos, wWrite, wWriteEn") {
}
} END_DEFINE_FUNC
DEFINE_FUNC(hdl4se_fifo_gen_outputcount, "wRead, wReadEn, outputcount") {
if (pobj->reset == 0) {
DEFINE_FUNC(hdl4se_fifo_gen_outputcount, "reset, wRead, wReadEn, outputcount") {
if (vget(reset) == 0) {
vput(outputcount, 0);
}
else {
......@@ -132,8 +132,8 @@ DEFINE_FUNC(hdl4se_fifo_gen_outputcount, "wRead, wReadEn, outputcount") {
}
} END_DEFINE_FUNC
DEFINE_FUNC(hdl4se_fifo_gen_inputcount, "wWrite, wWriteEn, inputcount") {
if (pobj->reset == 0) {
DEFINE_FUNC(hdl4se_fifo_gen_inputcount, "reset, wWrite, wWriteEn, inputcount") {
if (vget(reset) == 0) {
vput(inputcount, 0);
}
else {
......@@ -154,8 +154,8 @@ DEFINE_FUNC(hdl4se_fifo_count, "readpos, writepos") {
vput(count, datacount);
} END_DEFINE_FUNC
DEFINE_FUNC(hdl4se_fifo_gen_maxcount, "readpos, writepos, maxcount") {
if (pobj->reset == 0) {
DEFINE_FUNC(hdl4se_fifo_gen_maxcount, "reset, readpos, writepos, maxcount") {
if (vget(reset) == 0) {
vput(maxcount, 0);
}
else {
......@@ -186,8 +186,8 @@ DEFINE_FUNC(hdl4se_fifo_gen_wReadEn, "readpos, writepos, wRead, wReadEn, wWrite,
vput(wReadEn, (readaddr != writeaddr) ? 1 : 0);
} END_DEFINE_FUNC
DEFINE_FUNC(hdl4se_fifo_gen_wWriteEn, "readpos, writepos, wRead, wReadEn, wWrite, wWriteEn") {
if (pobj->reset == 0) {
DEFINE_FUNC(hdl4se_fifo_gen_wWriteEn, "reset, readpos, writepos, wRead, wReadEn, wWrite, wWriteEn") {
if (vget(reset) == 0) {
vput(wWriteEn, 0);
}
else {
......@@ -226,17 +226,19 @@ DEFINE_FUNC(hdl4se_fifo_ClkTick, "nwReset, readpos, writepos, wRead, wReadEn, ou
#else
DEFINE_FUNC(hdl4se_fifo_ClkTick, "nwReset, readpos, writepos, wRead, wReadEn, outputcount, wWrite, wWriteEn, inputcount, maxcount") {
if (pobj->reset == 0) {
DEFINE_FUNC(hdl4se_fifo_ClkTick, "reset, nwReset, readpos, writepos, wRead, wReadEn, outputcount, wWrite, wWriteEn, inputcount, maxcount") {
int reset = vget(reset);
if (reset == 0) {
if (vget(nwReset) == 0) {
vput(readpos, 0);
vput(writepos, 0);
vput(wReadEn, 0);
vput(wWriteEn, 0);
vput(maxcount, 0);
vput(reset, 0);
}
else {
pobj->reset = 1;
vput(reset, 1);
}
}
else {
......@@ -290,7 +292,6 @@ MODULE_INIT(hdl4se_fifo)
pobj->fifo_data = NULL;
pobj->width = (int)MODULE_PARAM(0);
pobj->depth = (int)MODULE_PARAM(1);
pobj->reset = 0;
if (pobj->width <= 0)
return EIID_INVALIDPARAM;
if (pobj->depth <= 2)
......@@ -325,6 +326,7 @@ MODULE_INIT(hdl4se_fifo)
REG(outputcount, 32);
WIRE(count, 32);
REG(maxcount, 32);
REG(reset, 1);
#endif
CLKTICK_FUNC(hdl4se_fifo_ClkTick);
......
......@@ -479,7 +479,6 @@ int hdl4se_module_Init(sGeneralModule* pobj, void* obj, const PARAMITEM* pParams
pointerarrayInit(&pobj->funcs);
pobj->pobj = obj;
pobj->name = NULL;
pobj->clktick_depend = NULL;
pobj->parent = NULL;
pobj->func_param = obj;
pobj->setup_func = NULL;
......@@ -518,8 +517,6 @@ void hdl4se_module_DeInit(sGeneralModule* pobj)
{
if (pobj->name != NULL)
mt_free(pobj->name);
if (pobj->clktick_depend != NULL)
free(pobj->clktick_depend);
pointerarrayDestroy(&pobj->variables, variableDestroy);
pointerarrayDestroy(&pobj->modules, objRelease);
pointerarrayDestroy(&pobj->parameters, mt_free);
......
......@@ -238,7 +238,7 @@ static int hdl4sesim_hdl4se_simulator_SetReset(HOBJECT object, int reset)
return 0;
}
#define THREADCOUNT 9
#define THREADCOUNT 3
static int hdl4sesim_hdl4se_simulator_ClkTick(HOBJECT object)
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册