Clock crossing FIFOs are essential components of multiple clock designs. I wish to understand, must they be built from Block RAM (i.e hard memory blocks) or they can also be built using registers?
The reason I am asking is quite simple. A single BRAM has quite a lot of space inside it. If we need a Clock Crossing FIFO that is not deep and needs only a few bytes at most, we would end up wasting most of the BRAM space. In this case, it makes sense to use the logic resource of the design.
distributed ram
, many FPGA vendors provide it, though not in all series of FPGA. \$\endgroup\$