Compare commits
No commits in common. "746ee34107d0917becf1b0807f1c8824911f3939" and "3587672e69acdc1ed4d28aa4943f591f948b0805" have entirely different histories.
746ee34107
...
3587672e69
@ -165,7 +165,7 @@ namespace tmpl {
|
|||||||
fifo_element[i].supply = supply;
|
fifo_element[i].supply = supply;
|
||||||
fifo_element[i].reset_B = _reset_BXX[i];
|
fifo_element[i].reset_B = _reset_BXX[i];
|
||||||
)
|
)
|
||||||
fifo_element[M-1].out = out;
|
fifo_element[N-1].out = out;
|
||||||
|
|
||||||
// reset buffers
|
// reset buffers
|
||||||
bool _reset_BX;
|
bool _reset_BX;
|
||||||
@ -697,7 +697,6 @@ namespace tmpl {
|
|||||||
PULLUP_X4 pull_up(.a=nor_out, .y=out);
|
PULLUP_X4 pull_up(.a=nor_out, .y=out);
|
||||||
}
|
}
|
||||||
|
|
||||||
export
|
|
||||||
defproc line_end_pull_down (a1of1 in; bool? reset_B; power supply; bool! out)
|
defproc line_end_pull_down (a1of1 in; bool? reset_B; power supply; bool! out)
|
||||||
{
|
{
|
||||||
bool _out, __out, nor_out;
|
bool _out, __out, nor_out;
|
||||||
@ -708,61 +707,4 @@ namespace tmpl {
|
|||||||
|
|
||||||
PULLUP_X4 pull_down(.a=nor_out, .y=out);
|
PULLUP_X4 pull_down(.a=nor_out, .y=out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Appends a hard-coded word "VAL" to an input.
|
|
||||||
* Works by piping through all sigs, but adding
|
|
||||||
* some extra sigs when the input is valid.
|
|
||||||
* N is size of channel to pipe through.
|
|
||||||
* NVAL is size of word to be put on output.
|
|
||||||
* VAL is word to be put on output.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
export template<pint N, NVAL, VAL>
|
|
||||||
defproc append (avMx1of2<N> in; avMx1of2<N+NVAL> out; power supply)
|
|
||||||
{
|
|
||||||
{ N >= 0 : "What?" };
|
|
||||||
{ NVAL >= 0 : "What?" };
|
|
||||||
{ NVAL < 1<<VAL : "VAL too big!" };
|
|
||||||
|
|
||||||
// valid tree
|
|
||||||
vtree<N> in_val(.supply = supply);
|
|
||||||
(i:N:
|
|
||||||
in_val.in.d[i].t = in.d.d[i].t;
|
|
||||||
in_val.in.d[i].f = in.d.d[i].f;
|
|
||||||
)
|
|
||||||
|
|
||||||
// wire through most signals
|
|
||||||
(i:N:
|
|
||||||
in.d.d[i].t = out.d.d[i].t;
|
|
||||||
in.d.d[i].f = out.d.d[i].f;
|
|
||||||
)
|
|
||||||
in.a = out.a;
|
|
||||||
in.v = out.v;
|
|
||||||
|
|
||||||
// appender
|
|
||||||
pint bitval;
|
|
||||||
sigbuf<NVAL> sb(.in = in_val.out, .supply = supply);
|
|
||||||
TIELO_X1 tielows[NVAL];
|
|
||||||
(i:NVAL:tielows[i].vss = supply.vss; tielows[i].vdd = supply.vdd;)
|
|
||||||
(i:0..NVAL-1:
|
|
||||||
bitval = (VAL & ( 1 << i )) >> i;
|
|
||||||
[ bitval = 1 ->
|
|
||||||
out.d.d[i+N].t = sb.out[i];
|
|
||||||
out.d.d[i+N].f = tielows[i].y;
|
|
||||||
[] bitval = 0 ->
|
|
||||||
out.d.d[i+N].f = sb.out[i];
|
|
||||||
out.d.d[i+N].t = tielows[i].y;
|
|
||||||
[] bitval >= 2 -> {false : "fuck"};
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -1,53 +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/primitives.act";
|
|
||||||
import globals;
|
|
||||||
|
|
||||||
open tmpl::dataflow_neuro;
|
|
||||||
|
|
||||||
defproc append_5_3_2(avMx1of2<5> in; avMx1of2<8> out)
|
|
||||||
{
|
|
||||||
bool _reset_B;
|
|
||||||
prs {
|
|
||||||
Reset => _reset_B-
|
|
||||||
}
|
|
||||||
|
|
||||||
fifo<5,4> fifo_pre(.in = in, .reset_B = _reset_B);
|
|
||||||
append<5,3,3> app(.in = fifo_pre.out);
|
|
||||||
fifo<5+3,4> fifo_post(.in = app.out, .out = out, .reset_B = _reset_B);
|
|
||||||
|
|
||||||
app.supply.vdd = Vdd;
|
|
||||||
app.supply.vss = GND;
|
|
||||||
fifo_pre.supply.vdd = Vdd;
|
|
||||||
fifo_pre.supply.vss = GND;
|
|
||||||
fifo_post.supply.vdd = Vdd;
|
|
||||||
fifo_post.supply.vss = GND;
|
|
||||||
}
|
|
||||||
|
|
||||||
append_5_3_2 b;
|
|
@ -1,78 +0,0 @@
|
|||||||
watchall
|
|
||||||
|
|
||||||
set b.out.a 0
|
|
||||||
set b.out.v 0
|
|
||||||
set Reset 0
|
|
||||||
set-qdi-channel-neutral "b.in" 5
|
|
||||||
cycle
|
|
||||||
|
|
||||||
system "echo '[] set Reset 1'"
|
|
||||||
set Reset 1
|
|
||||||
cycle
|
|
||||||
|
|
||||||
system "echo '[] set Reset 0'"
|
|
||||||
set Reset 0
|
|
||||||
mode run
|
|
||||||
cycle
|
|
||||||
status X
|
|
||||||
assert-qdi-channel-neutral "b.out" 8
|
|
||||||
assert b.in.a 0
|
|
||||||
assert b.in.v 0
|
|
||||||
|
|
||||||
system "echo '[] sending in a 31'"
|
|
||||||
set-qdi-channel-valid "b.in" 5 31
|
|
||||||
cycle
|
|
||||||
assert-qdi-channel-valid "b.out" 8 127
|
|
||||||
assert b.in.a 1
|
|
||||||
assert b.in.v 1
|
|
||||||
|
|
||||||
system "echo '[] removing input'"
|
|
||||||
set-qdi-channel-neutral "b.in" 5
|
|
||||||
cycle
|
|
||||||
assert b.in.a 0
|
|
||||||
assert b.in.v 0
|
|
||||||
|
|
||||||
system "echo '[] sending in a 0'"
|
|
||||||
set-qdi-channel-valid "b.in" 5 0
|
|
||||||
cycle
|
|
||||||
# assert-qdi-channel-valid "b.out" 8 96
|
|
||||||
assert b.in.a 1
|
|
||||||
assert b.in.v 1
|
|
||||||
|
|
||||||
system "echo '[] removing input'"
|
|
||||||
set-qdi-channel-neutral "b.in" 5
|
|
||||||
cycle
|
|
||||||
assert b.in.a 0
|
|
||||||
assert b.in.v 0
|
|
||||||
|
|
||||||
|
|
||||||
system "echo '[] receiving out ack/val'"
|
|
||||||
set b.out.a 1
|
|
||||||
set b.out.v 1
|
|
||||||
cycle
|
|
||||||
assert-qdi-channel-neutral "b.out" 8
|
|
||||||
|
|
||||||
|
|
||||||
system "echo '[] removing out ack/val'"
|
|
||||||
set b.out.a 0
|
|
||||||
set b.out.v 0
|
|
||||||
cycle
|
|
||||||
assert-qdi-channel-valid "b.out" 8 96
|
|
||||||
|
|
||||||
|
|
||||||
system "echo '[] receiving out ack/val'"
|
|
||||||
set b.out.a 1
|
|
||||||
set b.out.v 1
|
|
||||||
cycle
|
|
||||||
assert-qdi-channel-neutral "b.out" 8
|
|
||||||
|
|
||||||
|
|
||||||
system "echo '[] removing out ack/val'"
|
|
||||||
set b.out.a 0
|
|
||||||
set b.out.v 0
|
|
||||||
cycle
|
|
||||||
assert-qdi-channel-neutral "b.out" 8
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user