Preben said:
I read that resyncrhonization of signals is important, but is it
important, if the module is part of a larger design inside the same
FPGA? It causes a lot of delays in the overall design to make these
resynchronizations and results in hard-to-track delays of the signals?
You _NEED_ resynch when your input is _A_synchronous and used by more than
one FlipFlop. (But you need resynch also against timing violations).
The big issue is that due to different delays between you input pad
and your FlipFlops, one FF could see a 1 and the other a 0, and would
take a seemingly "impossible" decision !!!! and this can happen even
without a timing violation.
Usual symptom is a one-hot state machine becoming all zero (stuck)
or "multiple-hot". But other variants of this are common, like
counters skipping values, etc etc...
It's probably the most frequent design error I seen in code
from "experts". We do insist a lot about this in our training courses.
Clock domain crossing is another issue especially when you need
to transport busses or group of intercorrelated signals !
Resynchronization FlipFlops stages is NOT the answer in this case.
(Try a small Fifo instead or a mailbox scheme)
In a single domain synchronous design, you only need resynchronization
for external asynchronous signal.
Internal signals will be synchronous and verified by Static Timing Analysis.
External Synchronous inputs are also verified by Static timing Analysis
(Tsu/Th).
Bert Cuzeau