It's seemingly close to working, it just is messing up at line 7 apparently?
/**
* 4-way demultiplexor.
* {a,b,c,d} = {in,0,0,0} if sel==00
* {0,in,0,0} if sel==01
* {0,0,in,0} if sel==10
* {0,0,0,in} if sel==11
*/
CHIP DMux4Way {
IN in, sel[2];
OUT a, b, c, d;
PARTS:
DMux(in = in, sel = sel[0], a = out1, b = out2);
DMux(in = out1, sel = sel[1], a = a, b = b);
DMux(in = out2, sel = sel[1], a = c, b = d);
}
I've implemented my DMux as follows, and I'm just using that as if it were a tree:
/**
* Dmultiplexor.
* {a,b} = {in,0} if sel==0
* {0,in} if sel==1
*/
CHIP DMux {
IN in, sel;
OUT a, b;
PARTS:
Not(in = sel, out = notsel);
And(a = in, b = notsel, out = a);
And(a = in, b = sel, out = b);
}