def scan_srr(self,srr_file): if not os.path.isfile(srr_file): return file_hand = file(srr_file,'r') lines = file_hand.readlines() file_hand.close() for line in lines: line = line.strip() match = (self.patterns_srr["001 srr_time"]).search(line) if match: self.srr_data['srr_real_time'] = time2secs(match.group(1)) self.srr_data['srr_cpu_time'] = time2secs(match.group(2)) self.srr_data['SynPeakMem'] = match.group(3)
def get_data(self): t_data = list() for item in self.keys: value = self.data.get(item) value = str(value) if re.search("time$", item, re.I): value = time2secs(value) t_data.append(value) return t_data
def scan_fit(self,fit_file): if not os.path.isfile(fit_file): return file_hand = file(fit_file,'r') lines = file_hand.readlines() file_hand.close() for line in lines: line = line.strip() for key in self.patterns_fit.keys(): value = self.patterns_fit[key] match = value.search(line) if match: match_data = match.group(1) if key !='FitPeakMem': match_data = time2secs(match_data.strip()) self.fit_data[key.split()[1]] = match_data
def scan_par(self,par_file): if not os.path.isfile(par_file): return file_hand = file(par_file,'r') lines = file_hand.readlines() file_hand.close() for line in lines: line = line.strip() for key in self.patterns_par.keys(): value = self.patterns_par[key] match = value.search(line) p_key = key.split()[1] if match: if p_key == 'Complete' or p_key == 'Par_Done': self.par_data[p_key] = 'YES' else: self.par_data[p_key] = time2secs( (match.group(1)).strip() )
def scan_map(self, map_file): if not os.path.isfile(map_file): return file_hand = file(map_file, 'r') lines = file_hand.readlines() file_hand.close() for line in lines: line = line.strip() for key in self.patterns_map.keys(): value = self.patterns_map[key] match = value.search(line) if match: if key.find('Fit_Done') == -1: match_data = match.group(1) if key != 'MapPeakMem': match_data = time2secs(match_data.strip()) self.map_data[key.split()[1]] = match_data else: self.map_data[key.split()[1]] = 'YES'
def scan_mrp(self,mrp_file): for key in self.patterns_mrp.keys(): key = key.split()[1] self.mrp_time[key] = 'NA' if not mrp_file: return file_hand = file(mrp_file,'r') lines = file_hand.readlines() file_hand.close() for line in lines: line = line.strip() for key in self.patterns_mrp.keys(): value = self.patterns_mrp[key] match = value.search(line) if match: match_data = match.group(1) match_data = time2secs(match_data.strip()) self.mrp_time[key.split()[1]] = match_data
def scan_par(self, par_file): self.par_data = {} for key in self.patterns_par.keys(): key = key.split()[1] self.par_data[key] = 'NA' if not par_file: return file_hand = file(par_file, 'r') lines = file_hand.readlines() file_hand.close() for line in lines: line = line.strip() for key in self.patterns_par.keys(): p_value = self.patterns_par[key] p_match = p_value.search(line) p_key = key.split()[1] if p_match: if p_key == 'Complete' or p_key == 'Par_Done': self.par_data[p_key] = 'YES' print line else: self.par_data[p_key] = time2secs( (p_match.group(1)).strip())
def scan_srr(self,srr_file): self.srr_data = { 'srr_Real_time':'NA', 'srr_Cpu_time' : 'NA', 'CCU_lse':'NA', 'SynPeakMem':'NA', 'lse_CPU_Time':'NA', 'PostLSEClk':'NA', 'PostLSEFmax':'NA', 'LsePeakMem':'NA' } self.find_009_flag = 0 if not srr_file: return file_hand = file(srr_file,'r') lines = file_hand.readlines() file_hand.close() hotlines=[] for line in lines: line = line.strip() hotlines.append(line) match = (self.patterns_srr["001 srr_time"]).search(line) if match: # this is useless now, if self.srr_data['srr_Real_time'] == "NA": self.srr_data['srr_Real_time'] = '0' self.srr_data['srr_Cpu_time'] = '0' self.srr_data['srr_Real_time'] = str( int(self.srr_data.get("srr_Real_time",0))+ int( time2secs(match.group(1))) ) self.srr_data['srr_Cpu_time'] = str( int(self.srr_data.get('srr_Cpu_time',0))+ int( time2secs(match.group(2))) ) continue match = (self.patterns_srr["008 at_c_hdl"]).search(line) if match: if self.srr_data['srr_Real_time'] == "NA": self.srr_data['srr_Real_time'] = '0' self.srr_data['srr_Cpu_time'] = '0' self.srr_data['srr_Real_time'] = str( int(self.srr_data.get("srr_Real_time",0))+ int( time2secs(match.group(1))) ) self.srr_data['srr_Cpu_time'] = str( int(self.srr_data.get('srr_Cpu_time',0))+ int( time2secs(match.group(2))) ) match = (self.patterns_srr["009 at_syn_nfilter"]).search(line) if match : if self.srr_data['srr_Real_time'] == "NA": self.srr_data['srr_Real_time'] = '0' self.srr_data['srr_Cpu_time'] = '0' self.find_009_flag += 1 if self.find_009_flag != 2: pass else: self.srr_data['srr_Real_time'] = str( int(self.srr_data.get("srr_Real_time",0))+ int( time2secs(match.group(1))) ) self.srr_data['srr_Cpu_time'] = str( int(self.srr_data.get('srr_Cpu_time',0))+ int( time2secs(match.group(2))) ) match = (self.patterns_srr["010 pre_opt_map"]).search(line) if match: if self.srr_data['srr_Real_time'] == "NA": self.srr_data['srr_Real_time'] = '0' self.srr_data['srr_Cpu_time'] = '0' self.srr_data['srr_Real_time'] = str( int(self.srr_data.get("srr_Real_time",0))+ int( time2secs(match.group(1))) ) self.srr_data['srr_Cpu_time'] = str( int(self.srr_data.get('srr_Cpu_time',0))+ int( time2secs(match.group(2))) ) match = (self.patterns_srr["002 CCU_lse"]).search(line) if match: self.srr_data['CCU_lse'] = match.group(1) continue match = (self.patterns_srr["003 SynPeakMem"]).search(line) if match: old_data = self.srr_data.get('SynPeakMem','') if not old_data or old_data == "NA": self.srr_data['SynPeakMem'] = match.group(1) else: if old_data == "NA": old_data = 0 if float(old_data) < float(match.group(1)): self.srr_data['SynPeakMem'] = match.group(1) else: pass continue match = (self.patterns_srr["004 lse_CPU_Time"]).search(line) if match: self.srr_data['lse_CPU_Time'] = time2secs(match.group(1)) continue match = (self.patterns_srr["007 LsePeakMem"]).search(line) if match and srr_file.endswith('synthesis.log'): self.srr_data['LsePeakMem'] = match.group(1) continue hotlines = " ".join(hotlines) hotlines = re.sub("\s*\|", "", hotlines) all_hot_data = self.patterns_srr["005 PostLSEClk_PostLSEFmax"].findall(hotlines) if not all_hot_data: pass else: old_fmax = -1 for (clk_t, fmax_t) in all_hot_data: float_fmax = float(fmax_t) if old_fmax < 0 or float_fmax < old_fmax: self.srr_data['PostLSEClk'] = clk_t self.srr_data['PostLSEFmax'] = fmax_t old_fmax = float(fmax_t) ''' at here, we use to get the cpu time from the automat.log ''' automat_log = os.path.join(os.path.dirname(os.path.dirname(srr_file)),'run_till_map.log') if not os.path.isfile(automat_log): return elif srr_file.endswith('.srr'): temp_cpu_time = 0 temp_real_time = 0 set_flag = 0 all_lines = file(automat_log).readlines() for l in all_lines: if l.startswith('edif2ngd:') or l.startswith('ngdbuild:'): set_flag = 1 value = re.compile("Total\s+CPU\s+Time:\s+(.+)") match = value.search(l) if match and set_flag: match_data = match.group(1) match_data = time2secs(match_data.strip()) temp_cpu_time += int(match_data) value = re.compile("Total\s+REAL\s+Time:\s+(.+)") match = value.search(l) if match and set_flag: match_data = match.group(1) match_data = time2secs(match_data.strip()) temp_real_time += int(match_data) set_flag = 0 if l.startswith('map'): break try: self.srr_data['srr_Cpu_time'] =str( int(self.srr_data['srr_Cpu_time'])+int( temp_cpu_time) ) self.srr_data['srr_Real_time'] =str( int(self.srr_data['srr_Real_time'])+int(temp_real_time) ) except: print 'Error: in srr and automake add'