0
\$\begingroup\$

In my current FPGA design, I have a fast clock that has to travel to multiple locations inside the device.

Among those locations, I have a set of 2-flip-flop synchronizers for clock-domain crossing purposes to pass signals to slower clock domain.

Since most of the resets in my design are driven as synchronous resets, every time I run timing validation the tool shows it failing at the reset stage.

I was wondering if I could use the 2-flip-flop synchronizers without reset. From what I've found so far, that seems to be the case.

\$\endgroup\$
1
  • \$\begingroup\$ Not necessary, but harmless if you have reset in 2FF synchronizer \$\endgroup\$
    – Mitu Raj
    Commented Nov 3, 2021 at 7:12

1 Answer 1

2
\$\begingroup\$

The synchronizer doesn't need a reset to perform its synchronization function.

However, if it is important at system startup to avoid unintended signals then a reset will be needed.

Of course, if implementing the logic in an FPGA you may want to initialize the registers just to avoid the first few clock pulses being unknown in the simulation. Depending upon the logic the whole simulation could be "unknown".

\$\endgroup\$
2
  • 2
    \$\begingroup\$ One additional point: The reset signal can help prevent unwanted optimization behavior. At some point I had the synthesis insisting on implementing such a FF chain as LUT-based shift register, which doesn't have the intended timing behavior. A reset was the easiest way to prevent this optimization. \$\endgroup\$
    – asdfex
    Commented Nov 3, 2021 at 15:34
  • \$\begingroup\$ @asdfex - Interesting, I've never seen that. \$\endgroup\$ Commented Nov 3, 2021 at 18:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.