Eventually got this working, with some trial and error and googling etc. Still stumped by why the order of demuxing seems to be critical.
Without publishing code, which I take to be bad form, demuxing sel first then using the outputs to demux sel throws an error, while demuxing sel then sel works. Something similar happens if you do the whole thing longhand, using Nots and Ands.
I hope someone can explain this as I'd like to move on ;-)
Appreciate the reply. No I haven't had a go at Mux4Way16, although I can appreciate the concept that a DMux is a Mux in reverse. I imagined the DMux4Way was a less complex task to attempt.
I have a working chip, but don't fully understand way - rather unsatisfactory. I guess I didn't explain my puzzlement with the ordering of the selectors very well :(