removed old decoder, only simple now, fixed 8x8 test, deleted other 2
This commit is contained in:
@ -1,49 +0,0 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* This file is part of ACT dataflow neuro library.
|
||||
* It's the testing facility for cell_lib_std.act
|
||||
*
|
||||
* Copyright (c) 2022 University of Groningen - Ole Richter
|
||||
* Copyright (c) 2022 University of Groningen - Hugh Greatorex
|
||||
* Copyright (c) 2022 University of Groningen - Michele Mastella
|
||||
* Copyright (c) 2022 University of Groningen - Madison Cotteret
|
||||
*
|
||||
* This source describes Open Hardware and is licensed under the CERN-OHL-W v2 or later
|
||||
*
|
||||
* You may redistribute and modify this documentation and make products
|
||||
* using it under the terms of the CERN-OHL-W v2 (https:/cern.ch/cern-ohl).
|
||||
* This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-W v2
|
||||
* for applicable conditions.
|
||||
*
|
||||
* Source location: https://git.web.rug.nl/bics/actlib_dataflow_neuro
|
||||
*
|
||||
* As per CERN-OHL-W v2 section 4.1, should You produce hardware based on
|
||||
* these sources, You must maintain the Source Location visible in its
|
||||
* documentation.
|
||||
*
|
||||
**************************************************************************
|
||||
*/
|
||||
|
||||
import "../../dataflow_neuro/coders.act";
|
||||
import globals;
|
||||
import std::data;
|
||||
|
||||
open std::data;
|
||||
|
||||
open tmpl::dataflow_neuro;
|
||||
|
||||
defproc encoder2d_2x2 (a1of1 x[2]; a1of1 y[2]; avMx1of2<2> out){
|
||||
encoder2d<1, 1, 2, 2, 1> e(.inx=x, .iny=y, .out=out);
|
||||
bool _reset_B;
|
||||
prs {
|
||||
Reset => _reset_B-
|
||||
}
|
||||
e.supply.vss = GND;
|
||||
e.supply.vdd = Vdd;
|
||||
e.reset_B = _reset_B;
|
||||
|
||||
}
|
||||
|
||||
encoder2d_2x2 e;
|
@ -1,377 +0,0 @@
|
||||
watchall
|
||||
mode run
|
||||
|
||||
system "echo '[] Set Out Ack/Valid Low'"
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Setting Neuron Req Low'"
|
||||
|
||||
set e.y[0].r 0
|
||||
set e.y[1].r 0
|
||||
|
||||
set e.x[0].r 0
|
||||
set e.x[1].r 0
|
||||
cycle
|
||||
|
||||
# # Slightly confused as to whether Reset should be set to 1 given A_2C_RB_X1 needs active high to change y
|
||||
# # status X
|
||||
# # set Reset 1
|
||||
# # cycle
|
||||
|
||||
cycle
|
||||
set Reset 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Single Neuron Spikes (0,0)'"
|
||||
|
||||
set e.y[0].r 1
|
||||
set e.x[0].r 1
|
||||
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
|
||||
assert e.e._x_v 1
|
||||
|
||||
system "echo '[] Check Arbiter Acks'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 1
|
||||
assert e.y[1].a 0
|
||||
assert e.e.Yarb.out.a 1
|
||||
assert e.x[0].a 1
|
||||
assert e.x[1].a 0
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 0
|
||||
assert e.e.y_enc_out.d[0].f 1
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 0
|
||||
assert e.e.x_enc_out.d[0].f 1
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 0
|
||||
assert e.out.d.d[0].f 1
|
||||
assert e.out.d.d[1].t 0
|
||||
assert e.out.d.d[1].f 1
|
||||
|
||||
system "echo '[] Finish Neuron Handshake'"
|
||||
|
||||
set e.y[0].r 0
|
||||
set e.x[0].r 0
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 0
|
||||
assert e.e.Xarb.out.r 0
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.a 0
|
||||
assert e.e.Xarb.out.a 0
|
||||
assert e.y[0].a 0
|
||||
assert e.x[0].a 0
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (0,0) Encoded'"
|
||||
|
||||
system "echo '[] Single Neuron Spikes (1,1)'"
|
||||
|
||||
set e.y[1].r 1
|
||||
set e.x[1].r 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
|
||||
system "echo '[] Check Arbiter Acks'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 0
|
||||
assert e.y[1].a 1
|
||||
assert e.e.Yarb.out.a 1
|
||||
assert e.x[0].a 0
|
||||
assert e.x[1].a 1
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 1
|
||||
assert e.e.y_enc_out.d[0].f 0
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 1
|
||||
assert e.e.x_enc_out.d[0].f 0
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 1
|
||||
assert e.out.d.d[0].f 0
|
||||
assert e.out.d.d[1].t 1
|
||||
assert e.out.d.d[1].f 0
|
||||
|
||||
system "echo '[] Finish Neuron Handshake'"
|
||||
|
||||
set e.y[1].r 0
|
||||
set e.x[1].r 0
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 0
|
||||
assert e.e.Xarb.out.r 0
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.a 0
|
||||
assert e.e.Xarb.out.a 0
|
||||
assert e.y[1].a 0
|
||||
assert e.x[1].a 0
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (1,1) Encoded'"
|
||||
|
||||
system "echo '[] Neuron Spikes (0,0), (1,0)'"
|
||||
|
||||
set e.x[0].r 1
|
||||
set e.y[0].r 1
|
||||
set e.x[1].r 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
|
||||
system "echo '[] Check Arbiter Acks (0,0)'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 1
|
||||
assert e.y[1].a 0
|
||||
assert e.e.Yarb.out.a 1
|
||||
assert e.x[0].a 1
|
||||
assert e.x[1].a 0
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 0
|
||||
assert e.e.y_enc_out.d[0].f 1
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 0
|
||||
assert e.e.x_enc_out.d[0].f 1
|
||||
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 0
|
||||
assert e.out.d.d[0].f 1
|
||||
assert e.out.d.d[1].t 0
|
||||
assert e.out.d.d[1].f 1
|
||||
|
||||
system "echo '[] Finish Neuron Handshake (0,0)'"
|
||||
|
||||
set e.x[0].r 0
|
||||
cycle
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (0,0) Encoded'"
|
||||
|
||||
system "echo '[] Check Neuron (1,0) Waiting'"
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
|
||||
system "echo '[] Check Arbiter Acks (1,0)'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 1
|
||||
assert e.y[1].a 0
|
||||
assert e.e.Yarb.out.a 1
|
||||
assert e.x[0].a 0
|
||||
assert e.x[1].a 1
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 0
|
||||
assert e.e.y_enc_out.d[0].f 1
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 1
|
||||
assert e.e.x_enc_out.d[0].f 0
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 1
|
||||
assert e.out.d.d[0].f 0
|
||||
assert e.out.d.d[1].t 0
|
||||
assert e.out.d.d[1].f 1
|
||||
|
||||
|
||||
system "echo '[] Finish Neuron Handshake (1,0)'"
|
||||
|
||||
set e.x[1].r 0
|
||||
set e.y[0].r 0
|
||||
cycle
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (1,0) Encoded'"
|
||||
|
||||
system "echo '[] Neuron Spikes (1,0), (0,1)'"
|
||||
|
||||
set e.x[1].r 1
|
||||
set e.y[0].r 1
|
||||
|
||||
set e.x[0].r 1
|
||||
set e.y[1].r 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
|
||||
system "echo '[] Check Arbiter Acks (1,0)'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 0
|
||||
assert e.y[1].a 1
|
||||
assert e.e.Yarb.out.a 1
|
||||
assert e.x[0].a 0
|
||||
assert e.x[1].a 1
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 1
|
||||
assert e.e.y_enc_out.d[0].f 0
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 1
|
||||
assert e.e.x_enc_out.d[0].f 0
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 1
|
||||
assert e.out.d.d[0].f 0
|
||||
assert e.out.d.d[1].t 1
|
||||
assert e.out.d.d[1].f 0
|
||||
|
||||
system "echo '[] Finish Neuron Handshake (1,0)'"
|
||||
|
||||
set e.x[1].r 0
|
||||
set e.y[0].r 0
|
||||
cycle
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (1,0) Encoded'"
|
||||
|
||||
system "echo '[] Check Neuron (0,1) Waiting'"
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
|
||||
|
||||
system "echo '[] Check Arbiter Acks (0,1)'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 0
|
||||
assert e.y[1].a 1
|
||||
assert e.e.Yarb.out.a 1
|
||||
assert e.x[0].a 1
|
||||
assert e.x[1].a 0
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 1
|
||||
assert e.e.y_enc_out.d[0].f 0
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 0
|
||||
assert e.e.x_enc_out.d[0].f 1
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 0
|
||||
assert e.out.d.d[0].f 1
|
||||
assert e.out.d.d[1].t 1
|
||||
assert e.out.d.d[1].f 0
|
||||
|
||||
system "echo '[] Finish Neuron Handshake (1,0)'"
|
||||
|
||||
set e.x[0].r 0
|
||||
set e.y[1].r 0
|
||||
cycle
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
assert e.e._in_x_v 0
|
||||
assert e.e._in_y_v 0
|
||||
assert e.e._x_v 0
|
||||
|
||||
system "echo '[] Neuron (1,0) Encoded'"
|
@ -1,49 +0,0 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* This file is part of ACT dataflow neuro library.
|
||||
* It's the testing facility for cell_lib_std.act
|
||||
*
|
||||
* Copyright (c) 2022 University of Groningen - Ole Richter
|
||||
* Copyright (c) 2022 University of Groningen - Hugh Greatorex
|
||||
* Copyright (c) 2022 University of Groningen - Michele Mastella
|
||||
* Copyright (c) 2022 University of Groningen - Madison Cotteret
|
||||
*
|
||||
* This source describes Open Hardware and is licensed under the CERN-OHL-W v2 or later
|
||||
*
|
||||
* You may redistribute and modify this documentation and make products
|
||||
* using it under the terms of the CERN-OHL-W v2 (https:/cern.ch/cern-ohl).
|
||||
* This documentation is distributed WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-W v2
|
||||
* for applicable conditions.
|
||||
*
|
||||
* Source location: https://git.web.rug.nl/bics/actlib_dataflow_neuro
|
||||
*
|
||||
* As per CERN-OHL-W v2 section 4.1, should You produce hardware based on
|
||||
* these sources, You must maintain the Source Location visible in its
|
||||
* documentation.
|
||||
*
|
||||
**************************************************************************
|
||||
*/
|
||||
|
||||
import "../../dataflow_neuro/coders.act";
|
||||
import globals;
|
||||
import std::data;
|
||||
|
||||
open std::data;
|
||||
|
||||
open tmpl::dataflow_neuro;
|
||||
|
||||
defproc encoder2d_2x2 (a1of1 x[8]; a1of1 y[7]; avMx1of2<6> out){
|
||||
encoder2d<3, 3, 8, 7, 1> e(.inx=x, .iny=y, .out=out);
|
||||
bool _reset_B;
|
||||
prs {
|
||||
Reset => _reset_B-
|
||||
}
|
||||
e.supply.vss = GND;
|
||||
e.supply.vdd = Vdd;
|
||||
e.reset_B = _reset_B;
|
||||
|
||||
}
|
||||
|
||||
encoder2d_2x2 e;
|
@ -1,246 +0,0 @@
|
||||
watchall
|
||||
mode run
|
||||
|
||||
system "echo '[] Set Out Ack/Valid Low'"
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Setting Neuron Req Low'"
|
||||
|
||||
set e.y[0].r 0
|
||||
set e.y[1].r 0
|
||||
set e.y[2].r 0
|
||||
set e.y[3].r 0
|
||||
set e.y[4].r 0
|
||||
set e.y[5].r 0
|
||||
set e.y[6].r 0
|
||||
# set e.y[7].r 0
|
||||
|
||||
set e.x[0].r 0
|
||||
set e.x[1].r 0
|
||||
set e.x[2].r 0
|
||||
set e.x[3].r 0
|
||||
set e.x[4].r 0
|
||||
set e.x[5].r 0
|
||||
set e.x[6].r 0
|
||||
set e.x[7].r 0
|
||||
cycle
|
||||
|
||||
# # Slightly confused as to whether Reset should be set to 1 given A_2C_RB_X1 needs active high to change y
|
||||
# # status X
|
||||
# # set Reset 1
|
||||
# # cycle
|
||||
|
||||
cycle
|
||||
|
||||
mode run
|
||||
status X
|
||||
status 0
|
||||
set Reset 0
|
||||
cycle
|
||||
|
||||
|
||||
|
||||
system "echo '[] Single Neuron Spikes (2,5), raise y[5].r'"
|
||||
|
||||
set e.y[5].r 1
|
||||
# set e.x[2].r 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 0
|
||||
assert e.e._x_v 0
|
||||
|
||||
|
||||
|
||||
system "echo '[] Raise x[2].r'"
|
||||
# set e.y[5].r 1
|
||||
set e.x[2].r 1
|
||||
cycle
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
assert e.e._x_v 1
|
||||
|
||||
|
||||
system "echo '[] Check Arbiter Acks'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 0
|
||||
assert e.y[1].a 0
|
||||
assert e.y[2].a 0
|
||||
assert e.y[3].a 0
|
||||
assert e.y[4].a 0
|
||||
assert e.y[5].a 1
|
||||
assert e.y[6].a 0
|
||||
# assert e.y[7].a 0
|
||||
assert e.e.Yarb.out.a 1
|
||||
|
||||
|
||||
assert e.x[0].a 0
|
||||
assert e.x[1].a 0
|
||||
assert e.x[2].a 1
|
||||
assert e.x[3].a 0
|
||||
assert e.x[4].a 0
|
||||
assert e.x[5].a 0
|
||||
assert e.x[6].a 0
|
||||
assert e.x[7].a 0
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 0
|
||||
assert e.e.x_enc_out.d[0].f 1
|
||||
assert e.e.x_enc_out.d[1].t 1
|
||||
assert e.e.x_enc_out.d[1].f 0
|
||||
assert e.e.x_enc_out.d[2].t 0
|
||||
assert e.e.x_enc_out.d[2].f 1
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 1
|
||||
assert e.e.y_enc_out.d[0].f 0
|
||||
assert e.e.y_enc_out.d[1].t 0
|
||||
assert e.e.y_enc_out.d[1].f 1
|
||||
assert e.e.y_enc_out.d[2].t 1
|
||||
assert e.e.y_enc_out.d[2].f 0
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 0
|
||||
assert e.out.d.d[0].f 1
|
||||
assert e.out.d.d[1].t 1
|
||||
assert e.out.d.d[1].f 0
|
||||
assert e.out.d.d[2].t 0
|
||||
assert e.out.d.d[2].f 1
|
||||
assert e.out.d.d[3].t 1
|
||||
assert e.out.d.d[3].f 0
|
||||
assert e.out.d.d[4].t 0
|
||||
assert e.out.d.d[4].f 1
|
||||
assert e.out.d.d[5].t 1
|
||||
assert e.out.d.d[5].f 0
|
||||
|
||||
|
||||
system "echo '[] Finish Neuron Handshake'"
|
||||
|
||||
set e.y[5].r 0
|
||||
set e.x[2].r 0
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 0
|
||||
assert e.e.Xarb.out.r 0
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.a 0
|
||||
assert e.e.Xarb.out.a 0
|
||||
assert e.y[5].a 0
|
||||
assert e.x[2].a 0
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (2,5) Encoded'"
|
||||
|
||||
system "echo '[] Single Neuron Spikes (0,0)'"
|
||||
|
||||
set e.y[0].r 1
|
||||
set e.x[0].r 1
|
||||
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
|
||||
assert e.e._x_v 1
|
||||
|
||||
system "echo '[] Check Arbiter Acks'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 1
|
||||
assert e.y[1].a 0
|
||||
assert e.y[2].a 0
|
||||
assert e.y[3].a 0
|
||||
assert e.y[4].a 0
|
||||
assert e.y[5].a 0
|
||||
assert e.y[6].a 0
|
||||
# assert e.y[7].a 0
|
||||
assert e.e.Yarb.out.a 1
|
||||
|
||||
|
||||
assert e.x[0].a 1
|
||||
assert e.x[1].a 0
|
||||
assert e.x[2].a 0
|
||||
assert e.x[3].a 0
|
||||
assert e.x[4].a 0
|
||||
assert e.x[5].a 0
|
||||
assert e.x[6].a 0
|
||||
assert e.x[7].a 0
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 0
|
||||
assert e.e.y_enc_out.d[0].f 1
|
||||
assert e.e.y_enc_out.d[1].t 0
|
||||
assert e.e.y_enc_out.d[1].f 1
|
||||
assert e.e.y_enc_out.d[2].t 0
|
||||
assert e.e.y_enc_out.d[2].f 1
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 0
|
||||
assert e.e.x_enc_out.d[0].f 1
|
||||
assert e.e.x_enc_out.d[1].t 0
|
||||
assert e.e.x_enc_out.d[1].f 1
|
||||
assert e.e.x_enc_out.d[2].t 0
|
||||
assert e.e.x_enc_out.d[2].f 1
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 0
|
||||
assert e.out.d.d[0].f 1
|
||||
assert e.out.d.d[1].t 0
|
||||
assert e.out.d.d[1].f 1
|
||||
assert e.out.d.d[2].t 0
|
||||
assert e.out.d.d[2].f 1
|
||||
assert e.out.d.d[3].t 0
|
||||
assert e.out.d.d[3].f 1
|
||||
assert e.out.d.d[4].t 0
|
||||
assert e.out.d.d[4].f 1
|
||||
assert e.out.d.d[5].t 0
|
||||
assert e.out.d.d[5].f 1
|
||||
|
||||
system "echo '[] Finish Neuron Handshake'"
|
||||
|
||||
set e.y[0].r 0
|
||||
set e.x[0].r 0
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 0
|
||||
assert e.e.Xarb.out.r 0
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.a 0
|
||||
assert e.e.Xarb.out.a 0
|
||||
assert e.y[0].a 0
|
||||
assert e.x[0].a 0
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (0,0) Encoded'"
|
@ -35,7 +35,13 @@ open std::data;
|
||||
open tmpl::dataflow_neuro;
|
||||
|
||||
defproc encoder2d_2x2 (a1of1 x[8]; a1of1 y[8]; avMx1of2<6> out){
|
||||
encoder2d<3, 3, 8, 8, 1> e(.inx=x, .iny=y, .out=out);
|
||||
encoder2d_simple<3, 3, 8, 8, 0> e(.inx=x, .iny=y, .out=out);
|
||||
|
||||
e.to_pd_x = e.inx;
|
||||
e.to_pd_y = e.iny;
|
||||
|
||||
|
||||
|
||||
bool _reset_B;
|
||||
prs {
|
||||
Reset => _reset_B-
|
||||
@ -43,7 +49,6 @@ defproc encoder2d_2x2 (a1of1 x[8]; a1of1 y[8]; avMx1of2<6> out){
|
||||
e.supply.vss = GND;
|
||||
e.supply.vdd = Vdd;
|
||||
e.reset_B = _reset_B;
|
||||
|
||||
}
|
||||
|
||||
encoder2d_2x2 e;
|
@ -1,5 +1,5 @@
|
||||
watchall
|
||||
mode run
|
||||
# mode run
|
||||
|
||||
system "echo '[] Set Out Ack/Valid Low'"
|
||||
|
||||
@ -26,15 +26,10 @@ set e.x[4].r 0
|
||||
set e.x[5].r 0
|
||||
set e.x[6].r 0
|
||||
set e.x[7].r 0
|
||||
cycle
|
||||
set Reset 1
|
||||
|
||||
# # Slightly confused as to whether Reset should be set to 1 given A_2C_RB_X1 needs active high to change y
|
||||
# # status X
|
||||
# # set Reset 1
|
||||
# # cycle
|
||||
|
||||
cycle
|
||||
|
||||
mode run
|
||||
status X
|
||||
status 0
|
||||
@ -49,9 +44,13 @@ set e.y[5].r 1
|
||||
# set e.x[2].r 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 0
|
||||
assert e.e._x_v 0
|
||||
assert e.y[5].a 1
|
||||
system "echo '[] Asserted y[5].a 1'"
|
||||
|
||||
# assert e.e.Yarb.out.r 1
|
||||
# assert e.e.Xarb.out.r 0
|
||||
|
||||
# assert e.e._x_v 0
|
||||
|
||||
|
||||
|
||||
@ -59,14 +58,17 @@ system "echo '[] Raise x[2].r'"
|
||||
# set e.y[5].r 1
|
||||
set e.x[2].r 1
|
||||
cycle
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
assert e.e._x_v 1
|
||||
assert e.x[2].a 1
|
||||
system "echo '[] Asserted x[2].a 1'"
|
||||
|
||||
# assert e.e.Yarb.out.r 1
|
||||
# assert e.e.Xarb.out.r 1
|
||||
# assert e.e._x_v 1
|
||||
|
||||
|
||||
system "echo '[] Check Arbiter Acks'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
# assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 0
|
||||
assert e.y[1].a 0
|
||||
@ -76,7 +78,7 @@ assert e.y[4].a 0
|
||||
assert e.y[5].a 1
|
||||
assert e.y[6].a 0
|
||||
assert e.y[7].a 0
|
||||
assert e.e.Yarb.out.a 1
|
||||
# assert e.e.Yarb.out.a 1
|
||||
|
||||
|
||||
assert e.x[0].a 0
|
||||
@ -87,43 +89,11 @@ assert e.x[4].a 0
|
||||
assert e.x[5].a 0
|
||||
assert e.x[6].a 0
|
||||
assert e.x[7].a 0
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 0
|
||||
assert e.e.x_enc_out.d[0].f 1
|
||||
assert e.e.x_enc_out.d[1].t 1
|
||||
assert e.e.x_enc_out.d[1].f 0
|
||||
assert e.e.x_enc_out.d[2].t 0
|
||||
assert e.e.x_enc_out.d[2].f 1
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 1
|
||||
assert e.e.y_enc_out.d[0].f 0
|
||||
assert e.e.y_enc_out.d[1].t 0
|
||||
assert e.e.y_enc_out.d[1].f 1
|
||||
assert e.e.y_enc_out.d[2].t 1
|
||||
assert e.e.y_enc_out.d[2].f 0
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 0
|
||||
assert e.out.d.d[0].f 1
|
||||
assert e.out.d.d[1].t 1
|
||||
assert e.out.d.d[1].f 0
|
||||
assert e.out.d.d[2].t 0
|
||||
assert e.out.d.d[2].f 1
|
||||
assert e.out.d.d[3].t 1
|
||||
assert e.out.d.d[3].f 0
|
||||
assert e.out.d.d[4].t 0
|
||||
assert e.out.d.d[4].f 1
|
||||
assert e.out.d.d[5].t 1
|
||||
assert e.out.d.d[5].f 0
|
||||
# assert e.e.Xarb.out.a 1
|
||||
|
||||
assert-qdi-channel-valid "e.out" 6 42
|
||||
system "echo '[] Asserted output encoding valid 42'"
|
||||
set e.out.v 1
|
||||
|
||||
system "echo '[] Finish Neuron Handshake'"
|
||||
|
||||
@ -131,41 +101,7 @@ set e.y[5].r 0
|
||||
set e.x[2].r 0
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 0
|
||||
assert e.e.Xarb.out.r 0
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.a 0
|
||||
assert e.e.Xarb.out.a 0
|
||||
assert e.y[5].a 0
|
||||
assert e.x[2].a 0
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (2,5) Encoded'"
|
||||
|
||||
system "echo '[] Single Neuron Spikes (0,0)'"
|
||||
|
||||
set e.y[0].r 1
|
||||
set e.x[0].r 1
|
||||
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 1
|
||||
assert e.e.Xarb.out.r 1
|
||||
|
||||
assert e.e._x_v 1
|
||||
|
||||
system "echo '[] Check Arbiter Acks'"
|
||||
|
||||
assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 1
|
||||
assert e.y[0].a 0
|
||||
assert e.y[1].a 0
|
||||
assert e.y[2].a 0
|
||||
assert e.y[3].a 0
|
||||
@ -173,10 +109,9 @@ assert e.y[4].a 0
|
||||
assert e.y[5].a 0
|
||||
assert e.y[6].a 0
|
||||
assert e.y[7].a 0
|
||||
assert e.e.Yarb.out.a 1
|
||||
|
||||
|
||||
assert e.x[0].a 1
|
||||
assert e.x[0].a 0
|
||||
assert e.x[1].a 0
|
||||
assert e.x[2].a 0
|
||||
assert e.x[3].a 0
|
||||
@ -184,63 +119,120 @@ assert e.x[4].a 0
|
||||
assert e.x[5].a 0
|
||||
assert e.x[6].a 0
|
||||
assert e.x[7].a 0
|
||||
assert e.e.Xarb.out.a 1
|
||||
|
||||
system "echo '[] Check Encoders'"
|
||||
|
||||
assert e.e.y_enc_out.d[0].t 0
|
||||
assert e.e.y_enc_out.d[0].f 1
|
||||
assert e.e.y_enc_out.d[1].t 0
|
||||
assert e.e.y_enc_out.d[1].f 1
|
||||
assert e.e.y_enc_out.d[2].t 0
|
||||
assert e.e.y_enc_out.d[2].f 1
|
||||
|
||||
assert e.e.x_enc_out.d[0].t 0
|
||||
assert e.e.x_enc_out.d[0].f 1
|
||||
assert e.e.x_enc_out.d[1].t 0
|
||||
assert e.e.x_enc_out.d[1].f 1
|
||||
assert e.e.x_enc_out.d[2].t 0
|
||||
assert e.e.x_enc_out.d[2].f 1
|
||||
|
||||
system "echo '[] Check Buffer'"
|
||||
|
||||
assert e.e._in_x_v 1
|
||||
assert e.e._in_y_v 1
|
||||
assert e.e._en 1
|
||||
|
||||
assert e.out.d.d[0].t 0
|
||||
assert e.out.d.d[0].f 1
|
||||
assert e.out.d.d[1].t 0
|
||||
assert e.out.d.d[1].f 1
|
||||
assert e.out.d.d[2].t 0
|
||||
assert e.out.d.d[2].f 1
|
||||
assert e.out.d.d[3].t 0
|
||||
assert e.out.d.d[3].f 1
|
||||
assert e.out.d.d[4].t 0
|
||||
assert e.out.d.d[4].f 1
|
||||
assert e.out.d.d[5].t 0
|
||||
assert e.out.d.d[5].f 1
|
||||
|
||||
system "echo '[] Finish Neuron Handshake'"
|
||||
|
||||
set e.y[0].r 0
|
||||
set e.x[0].r 0
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.r 0
|
||||
assert e.e.Xarb.out.r 0
|
||||
system "echo '[] Asserted all in acks 0'"
|
||||
|
||||
set e.out.a 1
|
||||
set e.out.v 1
|
||||
cycle
|
||||
|
||||
assert e.e.Yarb.out.a 0
|
||||
assert e.e.Xarb.out.a 0
|
||||
assert e.y[0].a 0
|
||||
assert e.x[0].a 0
|
||||
assert-qdi-channel-neutral "e.out" 6
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (0,0) Encoded'"
|
||||
system "echo '[] Neuron (2,5) Encoded'"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
system "echo '[] Single Neuron Spikes (5,2), raise y[2].r'"
|
||||
|
||||
set e.y[2].r 1
|
||||
# set e.x[2].r 1
|
||||
cycle
|
||||
|
||||
assert e.y[2].a 1
|
||||
system "echo '[] Asserted y[2].a 1'"
|
||||
|
||||
# assert e.e.Yarb.out.r 1
|
||||
# assert e.e.Xarb.out.r 0
|
||||
|
||||
# assert e.e._x_v 0
|
||||
|
||||
|
||||
|
||||
system "echo '[] Raise x[5].r'"
|
||||
# set e.y[5].r 1
|
||||
set e.x[5].r 1
|
||||
cycle
|
||||
assert e.x[5].a 1
|
||||
system "echo '[] Asserted x[5].a 1'"
|
||||
|
||||
# assert e.e.Yarb.out.r 1
|
||||
# assert e.e.Xarb.out.r 1
|
||||
# assert e.e._x_v 1
|
||||
|
||||
|
||||
system "echo '[] Check Arbiter Acks'"
|
||||
|
||||
# assert e.e._x_a_B 1
|
||||
|
||||
assert e.y[0].a 0
|
||||
assert e.y[1].a 0
|
||||
assert e.y[2].a 1
|
||||
assert e.y[3].a 0
|
||||
assert e.y[4].a 0
|
||||
assert e.y[5].a 0
|
||||
assert e.y[6].a 0
|
||||
assert e.y[7].a 0
|
||||
# assert e.e.Yarb.out.a 1
|
||||
|
||||
|
||||
assert e.x[0].a 0
|
||||
assert e.x[1].a 0
|
||||
assert e.x[2].a 0
|
||||
assert e.x[3].a 0
|
||||
assert e.x[4].a 0
|
||||
assert e.x[5].a 1
|
||||
assert e.x[6].a 0
|
||||
assert e.x[7].a 0
|
||||
# assert e.e.Xarb.out.a 1
|
||||
|
||||
assert-qdi-channel-valid "e.out" 6 21
|
||||
system "echo '[] Asserted output encoding valid 21'"
|
||||
set e.out.v 1
|
||||
|
||||
system "echo '[] Finish Neuron Handshake'"
|
||||
|
||||
set e.y[2].r 0
|
||||
set e.x[5].r 0
|
||||
cycle
|
||||
|
||||
assert e.y[0].a 0
|
||||
assert e.y[1].a 0
|
||||
assert e.y[2].a 0
|
||||
assert e.y[3].a 0
|
||||
assert e.y[4].a 0
|
||||
assert e.y[5].a 0
|
||||
assert e.y[6].a 0
|
||||
assert e.y[7].a 0
|
||||
|
||||
|
||||
assert e.x[0].a 0
|
||||
assert e.x[1].a 0
|
||||
assert e.x[2].a 0
|
||||
assert e.x[3].a 0
|
||||
assert e.x[4].a 0
|
||||
assert e.x[5].a 0
|
||||
assert e.x[6].a 0
|
||||
assert e.x[7].a 0
|
||||
|
||||
|
||||
system "echo '[] Asserted all in acks 0'"
|
||||
|
||||
set e.out.a 1
|
||||
cycle
|
||||
|
||||
assert-qdi-channel-neutral "e.out" 6
|
||||
|
||||
set e.out.a 0
|
||||
set e.out.v 0
|
||||
cycle
|
||||
|
||||
system "echo '[] Neuron (5,2) Encoded'"
|
||||
|
Reference in New Issue
Block a user