diff --git a/dataflow_neuro/chips.act b/dataflow_neuro/chips.act index 91833e8..beb3441 100644 --- a/dataflow_neuro/chips.act +++ b/dataflow_neuro/chips.act @@ -57,13 +57,22 @@ REG_NCA, REG_NCW, REG_M> defproc texel_core (avMx1of2 in, out; Mx1of2 reg_data[REG_M]; + // Dummy synapses and neurons in the handshake blocks + // should be removed pre-innovus, else they are floating. a1of1 synapses[N_SYN_X * N_SYN_Y]; a1of1 neurons[N_NRN_X * N_NRN_Y]; - a1of1 syn_pu[N_SYN_X]; // Channel to the synapse line end pull ups + // Synapse decoder stuff + // The analogue core and connects to these to replace the above synapses. + bool! dec_req_x[N_SYN_X], dec_req_y[N_SYN_Y]; + bool? dec_ackB[N_SYN_X]; + a1of1 syn_pu[N_SYN_X]; + + // Neuron encoder stuff + a1of1 enc_inx[N_NRN_X], enc_iny[N_NRN_Y]; a1of1 nrn_pd_x[N_NRN_X], nrn_pd_y[N_NRN_Y]; - + // Monitors and flags to/from core, and selected mon out. bool! nrn_mon_x[N_NRN_MON_X], nrn_mon_y[N_NRN_MON_Y]; bool! syn_mon_x[N_SYN_MON_X], syn_mon_y[N_SYN_MON_Y]; bool? syn_mon_AMZI[N_SYN_X * N_MON_AMZO_PER_SYN], nrn_mon_AMZI[N_NRN_X * N_MON_AMZO_PER_NRN]; @@ -97,7 +106,9 @@ defproc texel_core (avMx1of2 in, out; decoder_2d_hybrid decoder(.in = fifo_dmx2dec.out, .hs_en = register.data[0].d[0].t, // Defaults to handshake disable .ack_disable = register.data[1].d[2].t, // Defaults to ack enabled + .out_req_x = dec_req_x, .out_req_y = dec_req_y, .to_pu = syn_pu, + .in_ackB_decoder = dec_ackB, .supply = supply, .reset_B = _reset_BX); INV_X1 dly_cfg_inverters[N_SYN_DLY_CFG]; (i:N_SYN_DLY_CFG: @@ -110,15 +121,16 @@ defproc texel_core (avMx1of2 in, out; // Synapse handshake circuits, to be removed for innovus decoder_2d_synapse_hs _synapses( .synapses = synapses, - .in_req_x = decoder.out_req_x, .in_req_y = decoder.out_req_y, + .in_req_x = dec_req_x, .in_req_y = dec_req_y, .to_pu = syn_pu, - .out_ackB_decoder = decoder.in_ackB_decoder, + .out_ackB_decoder = dec_ackB, .supply = supply); // Neurons + encoder pint NC_NRN; NC_NRN = NC_NRN_X + NC_NRN_Y; encoder2d_simple encoder( + .inx = enc_inx, .iny = enc_iny, .reset_B = _reset_BX, .supply = supply, .to_pd_x = nrn_pd_x, .to_pd_y = nrn_pd_y); fifo fifo_enc2mrg(.in = encoder.out, @@ -126,7 +138,7 @@ defproc texel_core (avMx1of2 in, out; // Neuron handshake circuits, to be removed for innovus nrn_hs_2d_array nrn_grid(.in = neurons, - .outx = encoder.inx, .outy = encoder.iny, + .outx = enc_inx, .outy = enc_iny, .to_pd_x = nrn_pd_x, .to_pd_y = nrn_pd_y, .supply = supply, .reset_B = _reset_BX);