Software driven hardware verification