def GetSimKit(self): """ Get the simulator kit. @return Simulator kit """ kit_obj = sde_cmpsim_kit.CMPsimKit() self.pin = kit_obj.pin self.path = kit_obj.path self.kit_type = kit_obj.kit_type return kit_obj
def Replay(self, param, dirname, filename): """ Replay a single pinball given the command line options and the name of the pinball to replay. It formats the appropriate command line options, saves global variables in a pickle file & calls the replayer script. @param param Dictionary containing all parameters that need to be passed into the method. Need a dictionary because this method is sometimes called by walk_callback() which only allows one parameter in the functions it calls. @param dirname Directory where pinball is located @param filename Pinball base file name @return Exit code from the replayer script. """ if 'options' in param: options = param['options'] else: msg.PrintAndExit( 'method replay_dir.Replay() failed to get param \'options\'') if options.verbose: msg.PrintMsg('Start of Replay() in replay_dir.py') # import pdb ; pdb.set_trace() basename_file = os.path.join(dirname, filename) command = self.replayer_cmd + ' --replay_file ' + basename_file if options.verbose: msg.PrintMsg("-> Replaying pinball \"" + basename_file + "\"") if options.replay_options: command += ' --replay_options "' + options.replay_options + '"' # Check to see if need to add options for BB vector generation. Set # 'log_opt' to any options the user may have put on the command line. # log_opt = options.log_options if options.bb_add_filename: file_name = os.path.basename(basename_file) # If there is a focus thread, then need to remove the TID from the # file name. # # NOTE: This code may need to be fixed when a method of running # Simpoints on all threads of cooperative pinballs is implemented. # file_name = util.RemoveTID(file_name) # Write BB vector files to the newly created *.Data directory. # data_dir = file_name + '.Data' if not os.path.isdir(data_dir): os.mkdir(data_dir) log_opt += ' -o ' + os.path.join(data_dir, file_name) # Check to see if need to add options when running a simulator. # # import pdb ; pdb.set_trace() if options.sim_add_filename: # Need to instantiate a kit of the type simulator being used. # This is required on order to get some kit specific information. # # NOTE: If you are adding a kit for a new simulator, then you need # to modify this code. # if config.sim_kit_type == config.BRPRED: import brpred_kit sim_kit = brpred_kit.BrPredKit() elif config.sim_kit_type == config.SINUCA: import sinuca_kit sim_kit = sinuca_kit.Sinuca_TracerKit() elif config.sim_kit_type == config.CMPSIM: import sde_cmpsim_kit sim_kit = sde_cmpsim_kit.CMPsimKit() else: msg.PrintAndExit('Undefined kit type in method replay_dir.Replay(): ' + \ str(config.sim_kit_type)) # Add the simulator knob to specify the file for the output from # the simulator. # # ~ log_opt += ' ' + sim_kit.GetSimOutputFile(basename_file) # When 'log_opt' is added to the command line below, it will # put double quotes (") around all the options. Therefore, need to # remove any exising double quotes in the current value for the # string 'log_opt'. # log_opt = log_opt.replace('"', '') # If relogging WP pinballs, need to add the -log:basename knob with # the relogged pinball path/name. # # import pdb ; pdb.set_trace() if options.wp_relog_dir: ft = util.GetFocusThreadPB(basename_file) if ft > -1 and not options.relog_focus: # If WP pinballs were relogged with a focus thread, then the # resulting pinballs were 'per thread', not 'cooperative'. If # relogging with a different filter (i.e. options.relog_focus == # False) then need to remove TID from base file name given to # the knob -log:basename. # file_name = os.path.basename(util.RemoveTID(basename_file)) else: file_name = os.path.basename(basename_file) log_opt += ' -log:basename ' + os.path.join(options.wp_relog_dir, file_name) if not options.list: msg.PrintMsgDate('Relog whole program pinball: ' + file_name) if log_opt: command += ' --log_options "' + log_opt + '"' if options.playout: command += ' --playout ' # if not options.list: # msg.PrintMsg(command) # If not just listing the command, then dump the global # variables so the next Python script can have access to them. # Then run the script. # result = 0 if not options.list: # Dump the global data to a unique file name. Need to add the # option --global_file with this unique file name to options when # calling a script. # gv = config.GlobalVar() command += util.AddGlobalFile(gv.DumpGlobalVars(), options) command += util.AddCfgFile(options) result = util.RunCmd(command, options, filename, concurrent=True) # Run concurrent jobs here else: # If the option 'list' is defined, then just list out the # commands to be exectuted, but don't execute them. # msg.PrintMsg(command) return result
def GetKit(self): """ Get the CMPSim SDE kit. """ return sde_cmpsim_kit.CMPsimKit()
def GetKit(self): """ Get the CMPSim simulation kit. """ kit_obj = sde_cmpsim_kit.CMPsimKit() return kit_obj