Hardware-software co-design for reconfigurable field programmable gate arrays using mixed-integer programming