--- Quote Start ---
Thanks for answering.
I think I was wrong about violation of counters, maybe I saw results of previous compilations without fifo parameters above. Now I built the design and see violations in registers like that: fifo|dffpipe_3dc:rdaclr|dffe10a[0]. But "pipe" is synchronizer, I think it is normal that a metastability is in first synchro stage. Can I set a false path there?
--- Quote End ---
You have some 4 synchroniser chains:
one for fifo pointers bridge (4 stages, either way)
one for rd areset and one for wr areset(possibly two stages)
moreover you have also synchronised reset on both clocks through OR before arriving at fifo (this not necessary as you are duplicating what the tool is doing and in theory you can't usually synchronise to both clocks at same time, the OR will also add delay and create a timing path that is irrelevant).
so in short I suggest you do not use that OR logic.
BTW, if your input rate and output rate have known relationship you can avoid fifo and use dual port ram without the issues of clock domain crosssing.
@Rysc:
I have doubts about your point 2 above. The fifo being empty is irrelevant. The rd pointer once reset will force a zero on its register but but the adder (D input to register) will be any value). Historically fifos were provided with one reset option (either wr or read and this caused problems, hence the new feature of rd reset and wr reset synchronised internally).