-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmatrix_mul.h
35 lines (31 loc) · 1.21 KB
/
matrix_mul.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* #define DT_LENGTH 32//длина переменных
#define MM 2//число строк первой матрицы
#define NN 2//число столбцов второй матрицы
#define KK 2//длина вектора (число столбцов первой матрицы и число строк второй) */
#include <macro.h>
#include <systemc.h>
#include <sstream>
#include <vector_mul.h>
SC_MODULE(matrix_mul) {
sc_in<bool> clk, rst_n;
sc_in<double> matA[MM][KK], matB[KK][NN];
sc_out<double> matC[MM][NN];
vector_mul *mul[MM][NN];
SC_CTOR(matrix_mul) {
std::ostringstream mul_name;
for (int i = 0; i < MM; ++i) {
for (int j = 0; j < NN; ++j) {
mul_name << "pe_" << i << "_" << j;
mul[i][j] = new vector_mul(mul_name.str().c_str());
mul[i][j]->clk(clk);
mul[i][j]->rst_n(rst_n);
for (int k = 0; k < KK; ++k) {
mul[i][j]->vec1[k](matA[i][k]);
mul[i][j]->vec2[k](matB[k][j]);
}
mul[i][j]->vec_o(matC[i][j]);
mul_name.str("");
}
}
};
};