Tony wrote:
In general, I'm going to be writing microcode
either for a machine that I
understand to gate level, or even more likely, something that I've
designed myself. In which case (especially the latter case), I am going
to be thinking things like 'And that bit enables that AND gate,
transfering this signal to the enable to that register. If I do that one
cycle early, I'll avoid a possible race condition in the hardware at that
point...'. That sort of thing is difficult for me to put into a compiler,
but relatively easy to remember when you're coding by hand.
I don't know why you think it's difficult to put that knowledge into a
compiler; that is *exactly* the sort of thing that I *did* put in my compilers,
and it worked great. I actually had it log messages when constraints like
that were applied, and found many that I might have overlooked had I not been
using the compiler.