S
Sean Durkin
Guest
Hi *,
I'm sure one of you can clear this up:
During debugging recently I discovered a bug in a module of mine: I had
assigned a signal inside of a clocked process, but had also assigned it
elsewhere concurrently (before writing the process, I had assigned it a
different signal).
Now, the result in simulation is as expected: the concurrent assignment
usually "wins", with occasional 'X' in simulation.
But what is unexpected to me is that the synthesis tools did not
complain about this. I would have expected a "multiple drivers"
error/warning or something similar. Why isn't there any?
I always thought that a concurrent signal assignment is more or less
just a less verbose version of a process with the right-hand-side
signals in the sensitivity list. So basically what I had was assignments
to the same signal from two different processes (one sequential one
combinatorial), which should cause multiple drivers warnings. What would
the hardware really do in that case, anyway?
Sean
I'm sure one of you can clear this up:
During debugging recently I discovered a bug in a module of mine: I had
assigned a signal inside of a clocked process, but had also assigned it
elsewhere concurrently (before writing the process, I had assigned it a
different signal).
Now, the result in simulation is as expected: the concurrent assignment
usually "wins", with occasional 'X' in simulation.
But what is unexpected to me is that the synthesis tools did not
complain about this. I would have expected a "multiple drivers"
error/warning or something similar. Why isn't there any?
I always thought that a concurrent signal assignment is more or less
just a less verbose version of a process with the right-hand-side
signals in the sensitivity list. So basically what I had was assignments
to the same signal from two different processes (one sequential one
combinatorial), which should cause multiple drivers warnings. What would
the hardware really do in that case, anyway?
Sean