Dear Drumont,
when there's a timing violation, Modelsim puts a yellow marker in the the waveform window and prints a warning message to the log.
Which register is suffering the timing violation?
Regarding I/O constraints: to get you started with simulation setting the max & min delays to zero is good enough.
Of course, you need to make sure that it's true. That is, the inputs your testbench provides to your UUT must be aligned with with clock your testbench provides to the UUT.
If I read the .VHD correctly, you're using a FIFO with a 5 stage synchrnonizer, correct?
IIRC, DCFIFO actually has two different use cases
a) 1 synchronizer state, for when the write and read clock are related
b) 2 or more synchrnonizer stages, for unrelated clocks
If you go with option "b", the DCFIFO function automatically sets false path exceptions on some of it's internal clock crossing logic -- it's not possible to do timing analysis on unrelated clocks anyway.
Thus, it's possible to get a green light from TimeQuest and see failures in gate level simulation.
If your use case is actually of related write and read clocks, then just go with option "A" and set the number of stages to 1.
OTHO if your use case of unrelated write and read clocks, then you just have to bite the bullet: timing violations are unavoidable. Your FPGA will misbehave on occasion -- but the more synchronizer stages, the better.
Regarding gate level simulation, if you're getting timing violations on synchronization registers, you'll just have to work around it and disable timing checks for those registers using the tcheck_set command.
Important note: make sure you understand what you're doing. You should only need to disable timing checks in the first synchronization registers. If you see timing checks elsewhere, then it's another problem
I suggest you read Altera's "Understanding Metastability in FPGAs" too.