diff --git a/dataflow_neuro/coders.act b/dataflow_neuro/coders.act index 219fc4c..06f9f37 100644 --- a/dataflow_neuro/coders.act +++ b/dataflow_neuro/coders.act @@ -1089,17 +1089,24 @@ defproc decoder_2d_hybrid (avMx1of2 in; bool! out_req_x[Nx], out_req_y[ export template defproc demux_qdi2bd_1d (avMx1of2 in; rbd out[N]; bool? reset_B; power supply) { + + // Added by Paolo, to be checked + buffer addr_buf(.in = in, .reset_B = reset_B, .supply = supply); + //stop added sigbuf data_t[W]; - (0..W-1:i: - data_t[i].in = addr_buf.out.d.d[std::ceil_log2(N)+i].t; - (0..N-1:j: + + (i:0..W-1: + + data_t[i].in = addr_buf.out.d.d[std::ceil_log2(N) + i].t; + (j:0..N-1: data_t[i].out[j] = out[j].d.d[0]; ) data_t.supply = supply; ) + // Buffer to recieve concat address packet buffer addr_buf(.in = in, .reset_B = reset_B, .supply = supply); @@ -1112,11 +1119,11 @@ defproc decoder_2d_hybrid (avMx1of2 in; bool! out_req_x[Nx], out_req_y[ // Validity vtree vtree (.in = d_dr.final_refresh, .supply = supply); vtree vtree_data (.supply = supply); - (0..W-1:i: + (i:0..W-1: vtree_data.in[i].t = addr_buf.d.d[i+std::ceil_log2(N)].t; - vtree_data.in[i].f = data_t[i].out[N] - + vtree_data.in[i].f = data_t[i].out[N]; ) + A_2C_B_X1 valid_Cel(.c1 = vtree.out, .c2 = vtree_data.out, .y = addr_buf.out.v, .vdd = supply.vdd, .vss = supply.vss);