Hardware - Software Co-design of embedded telecommunication systems using multiple formalisms for application development