Co-verification of hardware and software for ARM SoC design