/**
 * 16 bits 8-way demultiplexor:
 * {a, b, c, d, e, f, g, h} = {in, 0, 0, 0, 0, 0, 0, 0} if sel == 000
 *                            {0, in, 0, 0, 0, 0, 0, 0} if sel == 001
 *                            etc.
 *                            {0, 0, 0, 0, 0, 0, 0, in} if sel == 111
 */

CHIP DMux8Way16 {
    IN in[16], sel[3];
    OUT a[16], b[16], c[16], d[16], e[16], f[16], g[16], h[16];

    PARTS:
    DMux16(in=in, sel=sel[2], a=w1, b=w2);
    DMux4Way16(in=w1, sel=sel[0..1], a=a, b=b, c=c, d=d);
    DMux4Way16(in=w2, sel=sel[0..1], a=e, b=f, c=g, d=h);
}