A multi-paradigm C++-based hardware description language