def check_mdumps(self, mem_dumps): succ = True for md in mem_dumps: s = md.split(":") if len(s) == 2: md = os.path.abspath(s[0]) rf = os.path.join(self.dirname, s[1]) else: n = os.path.split(os.path.abspath(md))[1] rf = os.path.join(self.dirname, n + ".ref") if not os.path.isfile(md): print_red("Cannot find expected memory dump %s" % md) succ = False elif not os.path.isfile(rf): print_red("No reference file provided for %s" % md) succ = False else: dump = read_vlog_hexdump(md) dref = read_vlog_hexdump(rf) diff = compare_vlog_hexdump(dump=dump, ref=dref, ignore_undef=not self.mem_strict) if len(diff) > 0: print_red("Memory dump %s does not match reference" " in %d locations" % (md, len(diff))) succ = False if len(diff) < 64: for adr, val in sorted(diff.iteritems()): if val[0] != None: print_yellow("Miss-match @%d, out=%d, ref=%d" % (adr, val[0], val[1])) else: print_yellow("Miss-match @%d, out=undef, ref=%d" % (adr, val[1])) break return succ
def join_pe_dmem_dump(path, num_pe, pat='pe{0}.dmem.dump'): d = [read_vlog_hexdump(os.path.join(path, pat.format(i))) for i in range(num_pe)] join_d = {} for k in d[0].keys(): for i in range(num_pe): join_d[k*num_pe + i] = d[i][k] if k in d[i] else None return join_d
def join_pe_dmem_dump(path, num_pe, pat='pe{0}.dmem.dump'): d = [ read_vlog_hexdump(os.path.join(path, pat.format(i))) for i in range(num_pe) ] join_d = {} for k in d[0].keys(): for i in range(num_pe): join_d[k * num_pe + i] = d[i][k] if k in d[i] else None return join_d
def check_mdumps(self, mem_dumps): succ = True for md in mem_dumps: s = md.split(':') if len(s) == 2: md = os.path.abspath(s[0]) rf = os.path.join(self.dirname, s[1]) else: n = os.path.split(os.path.abspath(md))[1] rf = os.path.join(self.dirname, n + '.ref') if not os.path.isfile(md): print_red('Cannot find expected memory dump %s' % md) succ = False elif not os.path.isfile(rf): print_red('No reference file provided for %s' % md) succ = False else: dump = read_vlog_hexdump(md) dref = read_vlog_hexdump(rf) diff = compare_vlog_hexdump(dump=dump, ref=dref, ignore_undef=not self.mem_strict) if len(diff) > 0: print_red('Memory dump %s does not match reference'\ ' in %d locations'%(md, len(diff))) succ = False if len(diff) < 64: for adr, val in sorted(diff.iteritems()): if (val[0] != None): print_yellow('Miss-match @%d, out=%d, ref=%d' % (adr, val[0], val[1])) else: print_yellow( 'Miss-match @%d, out=undef, ref=%d' % (adr, val[1])) break return succ
def load_mem_content(self, mem_file, m_type, word_size): d = read_vlog_hexdump(mem_file) last_adr = -10 curr_start = -10 curr_blk = [] c = 0 for adr in sorted(d.iterkeys()): if adr != (last_adr + 1): if len(curr_blk) > 0: c += self.send_mem_content(m_type, curr_start, curr_blk, word_size) curr_blk = [] curr_start = adr curr_blk.append(d[adr]) last_adr = adr if len(curr_blk) > 0: c += self.send_mem_content(m_type, curr_start, curr_blk, word_size) return c
def load_mem_content(self, mem_file, m_type, word_size): d = read_vlog_hexdump(mem_file) last_adr = -10 curr_start = -10 curr_blk = [] c = 0 for adr in sorted(d.iterkeys()): if adr != (last_adr+1): if len(curr_blk) > 0: c += self.send_mem_content( m_type, curr_start, curr_blk, word_size) curr_blk = [] curr_start = adr curr_blk.append(d[adr]) last_adr = adr if len(curr_blk) > 0: c += self.send_mem_content(m_type, curr_start, curr_blk, word_size) return c