I split my counter into two processes: one clears cnt (declared with an initial value of zero) when rst is high, the other increments it on each rising clock edge while rst is low. In simulation cnt is zero during reset, then bit 0 turns to 'X' on the first count, and one clock later all eight bits are 'X'. Synthesis refuses the design with a multiple-driver error. Another signal, which a single process assigns only under a rare condition, sits at 'U' from time zero.
Why can a signal not be assigned from two processes, and what do 'U' and 'X' tell me when I see them in a waveform?




