diff --git a/dataflow_neuro/coders.act b/dataflow_neuro/coders.act index b537387..0da79ec 100644 --- a/dataflow_neuro/coders.act +++ b/dataflow_neuro/coders.act @@ -105,14 +105,13 @@ defproc decoder_dualrail_x(Mx1of2 in; bool? out[N*OUT_STRENGTH]; power suppl /** * Dualrail decoder with on/off switch. - * Outputs are buffered. + * Outputs are NOT buffered. */ -export template -defproc decoder_dualrail_en(Mx1of2 in; bool? en, out[N*OUT_STRENGTH]; power supply) { +export template +defproc decoder_dualrail_en(Mx1of2 in; bool? en, out[N]; power supply) { decoder_dualrail decoder(.in = in, .supply = supply); sigbuf sb_en(.in = en, .supply = supply); - sigbuf sb[N]; AND2_X1 en_ands[N]; (i:N: en_ands[i].a = decoder.out[i]; @@ -121,16 +120,46 @@ defproc decoder_dualrail_en(Mx1of2 in; bool? en, out[N*OUT_STRENGTH]; power en_ands[i].vdd = supply.vdd; en_ands[i].vss = supply.vss; - sb[i].in = en_ands[i].y; - sb[i].supply = supply; - (j:OUT_STRENGTH: - sb[i].out[j] = out[j + i*OUT_STRENGTH]; - ) + en_ands[i].y = out[i]; ) } +/** + * Dualrail decoder with on/off switch. + * Outputs are buffered. + */ +// export template +// defproc decoder_dualrail_en_x(Mx1of2 in; bool? en, out[N]; power supply) { +// decoder_dualrail decoder(.in = in, .supply = supply); + +// sigbuf sb_en(.in = en, .supply = supply); +// sigbuf sb[N]; +// AND2_X1 en_ands[N]; +// (i:N: +// en_ands[i].a = decoder.out[i]; +// en_ands[i].b = sb_en.out[i]; + +// en_ands[i].vdd = supply.vdd; +// en_ands[i].vss = supply.vss; + +// sb[i].in = en_ands[i].y; +// sb[i].supply = supply; + +// // (j:OUT_STRENGTH: +// // sb[i].out[j] = out[j + i*OUT_STRENGTH]; +// // ) + +// sb[i].out[0] = out[i]; + +// ) + +// } + + + + /**