I have a problem Routing a design in Xilinx ISE 8.2. I found a failure caused by a multiplexer where the Select signal arrives slightly after one of the input signals changed. This causes a narrow pulse in the output data line of the multiplexer. When this pulse arrives to the next register, the setup time is ok, but it suddenly falls violating the hold time. This problem does not appear in post-map simulations, so I guess it is exclusively due to some skew between Select and Input lines, introduced at the routing stage.
I don't understand why the router allows this to happen. It would be easy to check routes and throw warnings when an Input data path is longer than the Select path. However, the static timing analysis is ok at all stages, no constraints violations.
Does anyone know how can I solve this issue? I'm sure many people fought with this before...
Thanks in advance.