I hate to drag on further on this thread... but I find it useful to correct your wording.
Intel recommends using the async port of FF but at the same time it recommends that the signal connected to this port should arrive synchronised (what I call pre-synchronised). This allows timequest to recongnise it as timing path and then report pass/fail on recovery/removal. Thus in effect it is synchronised functionally with respect to clock before arrival but structurally wired to async port.
The same pre-synchronisation approach is needed if you connect reset through D input.
So in short any reset must arrive synced to FF clock.
These resets are asynchronously asserted and synchronously deasserted.
yes true, that is extra functionality that will help reset if clock is not availableI don't think this is correct. The latest Intel "Design Practices" recommend the use of a standard asynchronous assert, synchronous de-assert reset. See this link:
Intel call this "synchronized asynchronous reset". I call it "asynchronous reset" (but not "fully asynchronous reset").
I think you are only "correcting" what has been completely clear in the discussion. If not for all contributors, I apologize for causing confusion.I hate to drag on further on this thread... but I find it useful to correct your wording.
The diagram you showed looks in many ways extremely similar to Xilinx. If "LAB Wide" means "Slice Wide", then control signals are shared, just like in Xilinx slices.Regarding the "wasting resources" discussion, there are apparently differences between vendors and FPGA families.
There are two methods by which a reset signal can reach a register; either by being gated in with the data input, or by using an LAB-wide control signal (synclr). If you use the first method, you risk adding an additional gate delay to the circuit to accommodate the reset signal, which causes increased data arrival times and negatively impacts setup slack.
An asynchronous reset occurring too close to the clock edge can cause the flip-flop output to go metastable. That’s a bad thing. It’s not religion or politics; it’s technology.I observe that "Real Digital People" have a nearly religious aversion
to asynchronous resets in general, and don't like the politics involved
in going against the state religion (as enforced by their Methodology
Harpies).
Whether there's any actual reason outside of tool incapability or
management not having your back, I couldn't guess.
Yes... I'm not sure how we got reduced to stating the obvious.An asynchronous reset occurring too close to the clock edge can cause the flip-flop output to go metastable.
An asynchronous reset occurring too close to the clock edge can cause the flip-flop output to go metastable. That’s a bad thing. It’s not religion or politics; it’s technology.
Signed,
The Real Digital People
Wait, what??Yes... I'm not sure how we got reduced to stating the obvious.
There is no drawback. There could be scenarios where a reset is required in a 2FF-synchroniser, particularly in ASIC designs. Consider this case: the design in the destination clock domain is reset asynchronously, without its clock running, and then reset is released (still without the clock running). Later, the destination clock starts. The first two clock cycles could then propagate an unknown value from the 2FF-synchroniser. What if this is '1', and '1' means "launch the missile", then this is potentially dangerous. But if the synchroniser was reset along with the design, this could have been avoided. So, having a reset in a 2FF-synchroniser cell gives the designer one way of handling scenarios like this.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?