Title Synthesizable high level hardware descriptions : using statically typed two-level languages to guarantee verilog synthesizability