diff --git a/dataflow_neuro/chips.act b/dataflow_neuro/chips.act index 6555332..4176471 100644 --- a/dataflow_neuro/chips.act +++ b/dataflow_neuro/chips.act @@ -52,7 +52,6 @@ N_MON_AMZO_PER_SYN, N_MON_AMZO_PER_NRN, // Number of signals that each synapse o N_FLAGS_PER_SYN, N_FLAGS_PER_NRN, // Number of signals that each nrn/syn recieves from the register. N_BUFFERS, N_LINE_PD_DLY, // Number of dummy delays to add line pull down -// N_BD_DLY_CFG, N_BD_DLY_CFG2, REG_NCA, REG_NCW, REG_M> defproc texel_core (avMx1of2 in, out; @@ -108,8 +107,9 @@ defproc texel_core (avMx1of2 in, out; decoder_2d_synapse_hs _synapses( .synapses = synapses, .in_req_x = decoder.out_req_x, .in_req_y = decoder.out_req_y, - .in_ackB_pullups = decoder.out_ackB_pullups, - .out_req_x_pullups = decoder.in_req_x_pullups, + .to_pu = decoder.to_pu, + // .in_ackB_pullups = decoder.out_ackB_pullups, + // .out_req_x_pullups = decoder.in_req_x_pullups, .out_ackB_decoder = decoder.in_ackB_decoder, .supply = supply); @@ -118,6 +118,8 @@ defproc texel_core (avMx1of2 in, out; NC_NRN = NC_NRN_X + NC_NRN_Y; encoder2d_simple encoder( .reset_B = _reset_BX, .supply = supply); + fifo fifo_enc2mrg(.in = encoder.out, + .reset_B = _reset_BX, .supply = supply); // Neuron handshake circuits, to be removed for innovus nrn_hs_2d_array nrn_grid(.in = neurons, @@ -126,9 +128,6 @@ defproc texel_core (avMx1of2 in, out; .supply = supply, .reset_B = _reset_BX); - fifo fifo_enc2mrg(.in = encoder.out, - .reset_B = _reset_BX, .supply = supply); - // Merge append append_enc(.in = fifo_enc2mrg.out, .supply = supply); diff --git a/dataflow_neuro/coders.act b/dataflow_neuro/coders.act index 35ce519..e41d67a 100644 --- a/dataflow_neuro/coders.act +++ b/dataflow_neuro/coders.act @@ -390,8 +390,7 @@ defproc decoder_2d_hs (avMx1of2 in; a1of1 out[Nx*Ny]; bool? reset_B; po export template defproc decoder_2d_synapse_hs (bool? in_req_x[Nx], in_req_y[Ny]; a1of1 synapses[Nx*Ny]; bool out_ackB_decoder[Nx]; - bool in_ackB_pullups[Nx]; - bool out_req_x_pullups[Nx]; + a1of1 to_pu[Nx]; power supply) { @@ -415,10 +414,10 @@ defproc decoder_2d_synapse_hs (bool? in_req_x[Nx], in_req_y[Ny]; a1of1 synapses[ ) // Connect the ackB lines together - (i:Nx: out_ackB_decoder[i] = in_ackB_pullups[i];) + (i:Nx: out_ackB_decoder[i] = to_pu[i].a;) // Pipe req x lines down to the ackB pullups - (i:Nx: out_req_x_pullups[i] = in_req_x[i];) + (i:Nx: to_pu[i].r = in_req_x[i];) } /** @@ -436,8 +435,9 @@ defproc decoder_2d_synapse_hs (bool? in_req_x[Nx], in_req_y[Ny]; a1of1 synapses[ export template defproc decoder_2d_hybrid (avMx1of2 in; bool! out_req_x[Nx], out_req_y[Ny]; bool? dly_cfg[N_dly_cfg], hs_en, ack_disable; bool in_ackB_decoder[Nx]; // AckB lines back to the decoder for handshaking - bool out_ackB_pullups[Nx]; // AckB lines from the line end pull ups - bool in_req_x_pullups[Nx]; // req x lines going to the line pull ups + a1of1 to_pu[Nx]; + // bool out_ackB_pullups[Nx]; // AckB lines from the line end pull ups + // bool in_req_x_pullups[Nx]; // req x lines going to the line pull ups bool? reset_B; power supply) { bool _reset_BX[Nx]; @@ -479,14 +479,14 @@ defproc decoder_2d_hybrid (avMx1of2 in; bool! out_req_x[Nx], out_req_y[ A_2P_U_X4 pu[Nx]; // TODO probably replace this with variable strength PU A_1P_U_X4 pu_reset[Nx]; (i:Nx: - pu[i].p1 = in_req_x_pullups[i]; + pu[i].p1 = to_pu[i].r; pu[i].p2 = hs_enB; - pu[i].y = out_ackB_pullups[i]; + pu[i].y = to_pu[i].a; pu[i].vdd = supply.vdd; pu[i].vss = supply.vss; pu_reset[i].p1 = _reset_BX[i]; - pu_reset[i].y = out_ackB_pullups[i]; + pu_reset[i].y = to_pu[i].a; pu_reset[i].vdd = supply.vdd; pu_reset[i].vss = supply.vss; ) @@ -496,7 +496,7 @@ defproc decoder_2d_hybrid (avMx1of2 in; bool! out_req_x[Nx], out_req_y[ (i:Nx: keeps[i].vdd = supply.vdd; keeps[i].vss = supply.vss; - keeps[i].y = out_ackB_pullups[i]; + keeps[i].y = to_pu[i].a; )