Data Reuse and Parallelism in Hardware Compilation