Reusability is FIRRTL ground: Hardware construction languages, compiler frameworks, and transformations | Synapse