Reset: synchronous vs asynchronous
There seem to be a lot of views on this one.
Asynchronous assertion, synchronous deassertion is said to be good practice. This avoids the issue of the clock not running (or running too slowly to capture the reset signal) on synchronous assertion, and possible metastability on asynchronous deassertion.  

You would use a reset synchroniser (two FFs) with the output tied to the rest of the designs resets:

 

Couple of discussions:
Async and sync reset
Letters On Sync vs. Async Resets