def __load_program(self, program): try: self.__program = read_solver_bin(program) except RuntimeError: self.__program = None try: RB_WD = tempfile.mkdtemp() zfd = zipfile.ZipFile(program, 'r') zfd.extractall(RB_WD) self.__sim = None bin_prefix = None for r, d, fl in os.walk(RB_WD): for f in fl: if f == 'arch.json': if self.__verbose: print 'Initializing simulator with config file' self.__sim = SolverSim(os.path.join(r, f)) if f.endswith('.cp.imem_init'): bin_prefix = os.path.join(r, f[:f.find('.cp.imem_init')]) if not self.__sim: if self.__verbose: print 'Initializing simulator with default arch' self.__sim = SolverSim('baseline') if not bin_prefix: raise RuntimeError('No binary file found') self.__sim.add_program_init(bin_prefix) finally: if RB_WD: shutil.rmtree(RB_WD) self.__sim.reset()