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)
示例#2
0
 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    
示例#4
0
 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'
示例#6
0
 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
示例#7
0
    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())
示例#8
0
 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'