SMASHUP: a toolchain for unified verification of hardware/software co-designs