Multilanguage generative programming techniques for the codesign of hardware/software subsystems. - I. McRitchie (2005)