fixed demux_td_sign test and unfucked the sign flipping which shoudl have broken the other version tbh
This commit is contained in:
parent
8b37b91891
commit
73acbcbc4f
@ -390,10 +390,7 @@ namespace tmpl {
|
|||||||
|
|
||||||
// Demux
|
// Demux
|
||||||
export template<pint N; pbool CONDITION_SIGN>
|
export template<pint N; pbool CONDITION_SIGN>
|
||||||
// WARNING WARNING WARNING
|
// @TODO docs
|
||||||
// With a False CONDITION_SIGN, this is wrong.
|
|
||||||
// the c.t/f just need to be swapped, not inverted!!!
|
|
||||||
// @TODO self explanatory
|
|
||||||
// also note this is not used in the final texel chip
|
// also note this is not used in the final texel chip
|
||||||
defproc demux_td (avMx1of2<N> in; avMx1of2<N> out; a1of1 token; bool? reset_B; avMx1of2<1> cond; power supply) {
|
defproc demux_td (avMx1of2<N> in; avMx1of2<N> out; a1of1 token; bool? reset_B; avMx1of2<1> cond; power supply) {
|
||||||
//control
|
//control
|
||||||
@ -421,10 +418,9 @@ namespace tmpl {
|
|||||||
BUF_X1 c_buf_tk(.a=cond.d.d[0].t, .y=_c_tk_buf, .vss = supply.vss, .vdd = supply.vdd);
|
BUF_X1 c_buf_tk(.a=cond.d.d[0].t, .y=_c_tk_buf, .vss = supply.vss, .vdd = supply.vdd);
|
||||||
sigbuf<N> c_buf_d(.in=cond.d.d[0].f, .out=_c_d_buf, .supply=supply);
|
sigbuf<N> c_buf_d(.in=cond.d.d[0].f, .out=_c_d_buf, .supply=supply);
|
||||||
[] else ->
|
[] else ->
|
||||||
INV_X1 invout_t(.a = cond.d.d[0].t,.y=cond_inv_t,.vdd = supply.vdd,.vss=supply.vss);
|
|
||||||
INV_X1 invout_f(.a = cond.d.d[0].f,.y=cond_inv_f,.vdd = supply.vdd,.vss=supply.vss);
|
BUF_X1 c_buf_tk(.a=cond.d.d[0].f, .y=_c_tk_buf, .vss = supply.vss, .vdd = supply.vdd);
|
||||||
BUF_X1 c_buf_tk_inv(.a=cond_inv_t, .y=_c_tk_buf, .vss = supply.vss, .vdd = supply.vdd);
|
sigbuf<N> c_buf_d(.in=cond.d.d[0].t, .out=_c_d_buf, .supply=supply);
|
||||||
sigbuf<N> c_buf_d_inv(.in=cond_inv_f, .out=_c_d_buf, .supply=supply);
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,9 +32,9 @@ import globals;
|
|||||||
open tmpl::dataflow_neuro;
|
open tmpl::dataflow_neuro;
|
||||||
|
|
||||||
|
|
||||||
defproc demux_2 (avMx1of2<2> in; avMx1of2<2> out1; a1of1 token; avMx1of2<1> cond){
|
defproc demux_2 (avMx1of2<2> in; avMx1of2<2> out; a1of1 token; avMx1of2<1> cond){
|
||||||
|
|
||||||
demux_td<2, true> my_demux(.in=in, .out1=out1,.token = token, .cond = cond);
|
demux_td<2, true> my_demux(.in=in, .out=out,.token = token, .cond = cond);
|
||||||
//Low active Reset
|
//Low active Reset
|
||||||
bool _reset_B;
|
bool _reset_B;
|
||||||
prs {
|
prs {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
watchall
|
watchall
|
||||||
set-qdi-channel-neutral "my_demux.in" 2
|
set-qdi-channel-neutral "my_demux.in" 2
|
||||||
set my_demux.out1.a 0
|
set my_demux.out.a 0
|
||||||
set my_demux.out1.v 0
|
set my_demux.out.v 0
|
||||||
set my_demux.token.a 0
|
set my_demux.token.a 0
|
||||||
set my_demux.token.r 0
|
set my_demux.token.r 0
|
||||||
set my_demux.cond.d.d[0].t 0
|
set my_demux.cond.d.d[0].t 0
|
||||||
@ -15,7 +15,7 @@ system "echo 'System reset completed'"
|
|||||||
status X
|
status X
|
||||||
mode run
|
mode run
|
||||||
|
|
||||||
assert-qdi-channel-neutral "my_demux.out1" 2
|
assert-qdi-channel-neutral "my_demux.out" 2
|
||||||
assert-qdi-channel-neutral "my_demux.in" 2
|
assert-qdi-channel-neutral "my_demux.in" 2
|
||||||
cycle
|
cycle
|
||||||
|
|
||||||
@ -28,21 +28,26 @@ cycle
|
|||||||
assert my_demux.in.v 1
|
assert my_demux.in.v 1
|
||||||
assert my_demux.in.a 0
|
assert my_demux.in.a 0
|
||||||
|
|
||||||
assert-qdi-channel-valid "my_demux.out1" 2 3
|
assert-qdi-channel-valid "my_demux.out" 2 3
|
||||||
assert my_demux.token.a 0
|
assert my_demux.token.a 0
|
||||||
set my_demux.out1.v 1
|
assert my_demux.token.r 0
|
||||||
|
set my_demux.out.v 1
|
||||||
cycle
|
cycle
|
||||||
|
|
||||||
assert my_demux.in.a 1
|
assert my_demux.in.a 1
|
||||||
set-qdi-channel-neutral "my_demux.in" 2
|
set-qdi-channel-neutral "my_demux.in" 2
|
||||||
cycle
|
cycle
|
||||||
set my_demux.out1.a 1
|
set my_demux.out.a 1
|
||||||
|
cycle
|
||||||
|
assert-qdi-channel-neutral "my_demux.out" 2
|
||||||
|
set my_demux.out.a 0
|
||||||
|
set my_demux.out.v 0
|
||||||
|
cycle
|
||||||
|
|
||||||
system "echo 'First Cond Checked'"
|
system "echo 'First Cond Checked'"
|
||||||
|
|
||||||
set my_demux.out1.a 0
|
set my_demux.out.a 0
|
||||||
set my_demux.out1.v 0
|
set my_demux.out.v 0
|
||||||
set my_demux.token.a 0
|
set my_demux.token.a 0
|
||||||
set my_demux.token.r 0
|
set my_demux.token.r 0
|
||||||
set my_demux.cond.d.d[0].t 0
|
set my_demux.cond.d.d[0].t 0
|
||||||
@ -58,9 +63,9 @@ cycle
|
|||||||
assert my_demux.in.v 1
|
assert my_demux.in.v 1
|
||||||
assert my_demux.in.a 1
|
assert my_demux.in.a 1
|
||||||
assert my_demux.token.r 1
|
assert my_demux.token.r 1
|
||||||
|
assert-qdi-channel-neutral "my_demux.out" 2
|
||||||
|
|
||||||
set my_demux.token.a 1
|
set my_demux.token.a 1
|
||||||
set my_demux.out1.a 1
|
|
||||||
cycle
|
cycle
|
||||||
|
|
||||||
assert my_demux.token.r 0
|
assert my_demux.token.r 0
|
||||||
@ -75,6 +80,7 @@ set my_demux.cond.d.d[0].t 0
|
|||||||
set my_demux.cond.d.d[0].f 0
|
set my_demux.cond.d.d[0].f 0
|
||||||
cycle
|
cycle
|
||||||
|
|
||||||
|
assert my_demux.cond.v 0
|
||||||
assert my_demux.in.a 0
|
assert my_demux.in.a 0
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user