Hardware-software codesign of embedded systems.