fragnen
Full Member level 4
Inside asynchronous FIFO there are synchronizers present. What kind of constraint needs to be provided during rtl synthesis for those synchronizers which are present inside an asynchronous FIFO?
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Not at all. We have been diving in micro-discussions and the OP is well aware of basics of timing. You suddenly came dismissing all our discussions and advising him to read basics...there is a context here, which you might be missing. time and time again, the OP asks complicated questions without having the basic knowledge required to come anywhere near them. this is very frustrating for frequent posters of this forum.
@kaz1man, you need to read some textbook or tutorials on this timing stuff. start with some simple STA and SDC tutorial. clock domain crossing is a whole other beast which you are not ready to tame. IMO.
The red path needs set false path(or set clock groups as asynchronous).FvM and Kaz1,
A summary of our discussion is drawn below. Please correct if anything is wrong or improper.
For the presence of multi stage synchronizers present in any design, we need to provide the set_max_delay for the red coloured path/paths of the diagram for a single bit signal or multibit bus crossing crossing from one clock domain to another clock domain through single stage synchronizer or multistage synchronizer while writing the SDC of the design.
But even for a single bit it can happen that if the total skew exceeds the update period then at the receiving end which is under clk2 domain will receive corrupt data from clk1 instead of proper data from clk1. Is not it?No, in most cases single bit signals don't need xxx_delay constraints for the asynchronous transfer.
Skew is a delta quantity (delay1 - delay2). A single bit has no skew.
No, the red path in post #8 only needs a set_false_path.Here by total skew for one bit signal at post # 27, the time taken by a bit to travel through the red path from L1 to L2 is being referred. May be it should have been called as delay instead of a total skew. So if the the red path is too long in length the delay of traversing through this red path of a single bit signal can be so high that even the new next changed data may not be captured at the receiving flop, L2 correctly and hence L2 receiving corrupt data for a single bit signal even. Hence even a single bit signal can be corrupted if not constraint by set_net_delay/set_max_delay while the single bit signal is travelling from clk1 to clk2 through the red path. Please comment.
That means for ASIC for both single bit signal and multibit signals passing through multistage synchronizers, the following constraints should also be provided in SDC. Please correct if it is wrong.No, the red path in post #8 only needs a set_false_path.
It is the green path that needs to be constrained to maximize the setup time for the possibly metastable signal captured by register L3.
With Xilinx Vivado, it is enough to set the attribute ASYNC_REG = true for register L3. The tools will then place it next to register L2, which should also have ASYNC_REG = true.
From UG901:
"The ASYNC_REG is an attribute that affects many processes in the Vivado tools flow. The purpose of this attribute is to inform the tool that a register is capable of receiving asynchronous data in the D input pin relative to the source clock, or that the register is a synchronizing register within a synchronization chain."
I can speak for FPGA platform and speculate on ASIC platform.Hello FvM, std_match, kaz1,
Can you please add any correction if necessary to the summary of our discussion summarized at post number 31 in this thread?