1. A method of simulating hardware, including: generating a data flow representation of the hardware, based on a hardware description language (HDL) description, the data flow representation including compatibility information that preserves behavioral and synthesizable characteristics of the HDL description; generating code from the data flow representation; and executing the code concurrently.