Software/Hardware Co-Design And Co-Specialisation : Novel Simulation Techniques And Optimisations