An overview on hardware/software co-design