A SR I opened with altera a month ago or so about DCFIFO arst and what you can ignore. Thought it may be helpful.
request title: DCFIFO arst for seperate clock domains.
Description: When using a DCFIFO, i only have one option for an arst input. Outside of the dcfifo i have a reset sequencer circuit which takes a reset signal in and synchronizes it to the different clock domains, going into reset asynchronously and coming out of reset synchronous with the clock. It would be helpful to have those reset inputs into the dcfifo. Any thoughts? I am having problems with meeting timing on recovery as well as timing analysis for the outputs because they are on different reset domains. I also fail timing on the recovery analysis of a reset signal that is latched on the negative edge of a clock in the fifo. I don't write to the fifo on the few clocks emmidiately after coming out of reset. I do have some fifo's with the read signal equal to not(rd_empty). Is there any timing analysis's that I can break to help with timing?
In dealing with this kind of issue with other cores, I have been able to get into the design files and make the modifications I needed. But, because the DCFIFO is generated in a dll it appears as opposed to with tcl scripts, it is a little bit harder to modify.
Thanks for your time.
Kevin
to customer Hello Kevin,
Thanks for using mySupport. DCFIFO supports asynchronous clear and asynchronous clear that synchronize with the write clock. The wrreq signal must be low when the DCFIFO comes out of reset (the instant when the aclr signal is de-asserted) at the rising edge of the write clock to avoid a race condition between write and reset. If this condition cannot be guaranteed in your design, the aclr signal needs to be synchronized with the write clock. This can be done by setting the Add circuit to synchronize 'aclr' input with 'wrclk' option from the FIFO MegaWizard plug-in.
Usually we suggest customers set the Add circuit to synchronize 'aclr' input with 'wrclk' option from the FIFO MegaWizard plug-in. If you find the reset timing issue in the writing timing domain, please send me your project in order that I can look into it further. And if you find the reset timing issue between writing and reading or just in reading timing domain, you could make this a false path or just ignore it.
Hope it is helpful to you. Please let me know if you have further question on this issue. Thanks.
Best Regards,
Altera
from customer So i just created a project with a basic fifo implemented. A few questions to help clarify:
If i can ensure that a write request does not occur on the first three clock after the reset signal is high, can I break the path between the reset input and the write_clk for all recovery paths inside the fifo?
With the read requests setup the way it is, can I break all paths from the reset on the rd_clk domain?
Can you suggest some SDC commands to break paths that do not need to be analysed?
Thanks.
Kevin
to customer Hello Kevin,
Thanks for your feedback. Here you the answers to your further questions.
1. If i can ensure that a write request does not occur on the first three clock after the reset signal is high, can I break the path between the reset input and the write_clk for all recovery paths inside the fifo?
--Yes.
2. With the read requests setup the way it is, can I break all paths from the reset on the rd_clk domain?
--Yes.
3. Can you suggest some SDC commands to break paths that do not need to be analysed?
-- When using the Quartus® II TimeQuest Timing Analyzer and your design contains a DCFIFO megafunction, you must apply the following false paths to avoid timing failures in the synchronization registers.
http://www.altera.com/support/kdb/solutions/rd12032007_130.html?gsa_pos=2&wt.oss_r=1&wt.oss=dcfifo solution
I have checked you SDC files and find the above false paths have been added in it.
Hope it is helpful to you. Please let me know if you have further question on this issue. Thanks.
Best Regards,
Altera
And attached is the archive of a test project i provided to them just for reference.