in hardware/xilinx/src/vta.cc [97:112]
void read_tensor(
IDX_T idx,
WIDE_T src[][NARROW_W * Y_DIM * X_DIM / WIDE_W],
NARROW_T dst[Y_DIM][X_DIM]) {
#pragma HLS INLINE
// Read in weight tensor
for (int p = 0; p < NARROW_W * Y_DIM * X_DIM / WIDE_W; p++) {
WIDE_T packet = src[idx][p];
for (int w = 0; w < (WIDE_W / NARROW_W); w++) {
int x = (p * (WIDE_W / NARROW_W) + w) / X_DIM;
int y = (p * (WIDE_W / NARROW_W) + w) % X_DIM;
dst[x][y] = (NARROW_T) packet.range((w + 1) * NARROW_W - 1, w * NARROW_W);
}
}
}