what is sync or async reset
Well
with an FPGA design insight,
First of all, You do not need the reset signal at all
( was that funny? )
Well , yes, all of the flip flops inside your fpga, have an initial state, this initial state can be indicated in the configuration bit file, for xilinx dev tools, you can simply use constraints editor to indicate the initial state of each of the important registers explicitly. So, although you put a reset input port in your design, you will not use it at all,
any how, as you say they are two options available for reset, for your fpga designs, reset path is usually set to false path, meaning that the timing for this path is not important at all. reset duration is always long, some near a second, and so during this period, all of the flip flops will go to their initial state, despite of the kind of reset you are using (sync or async )
generally, In my idea, there is no difference between these two kind of resets. However, I should note that the behaviour of Synthesis tool is too important in this case.
I remember long time ago, we had to use asynchronous reset , so that the synplify sythesis tool understand that it should use the reset input of the flip flops, otherwise synplify would implement reset at normal logic using look up tables. so you see here , the coding style ( sync ro async reset ) affect the amount of logic resource usage and the performance of the circuit
As you know, flip flops have hold time and setup time specs. The signal which enters a flip flop should obey these specs, Otherwise the flip flop can go unstable. So generally it seems that it is better for us to use a synchronous reset , But, originally the nature of reset signal is asynchronous, the user pushes a button and the reset is generated , the user does not know anything from the clock pulse inside our circuit, so , you should synchronize the incomming reset signal to your clock domain at the entrance to your circuit. Then you will use this synchronized reset signal in the rest of your circuits. (
personally I have never done this, but seems to be the safest way )