diff --git a/cocotbext/axi/utils.py b/cocotbext/axi/utils.py index 1983e17..c510cad 100644 --- a/cocotbext/axi/utils.py +++ b/cocotbext/axi/utils.py @@ -23,28 +23,28 @@ THE SOFTWARE. """ -def hexdump_line(data, offset): +def hexdump_line(data, offset, row_size=16): h = "" c = "" - for ch in data[0:16]: + for ch in data[0:row_size]: h += f"{ch:02x} " c += chr(ch) if 32 < ch < 127 else "." - return f"{offset:08x}: {h:48} {c}" + return f"{offset:08x}: {h:{row_size*3}} {c}" -def hexdump(data, start=0, length=None, prefix="", offset=0): +def hexdump(data, start=0, length=None, row_size=16, prefix="", offset=0): stop = min(start+length, len(data)) if length else len(data) - for k in range(start, stop, 16): - print(prefix+hexdump_line(data[k:min(k+16, stop)], k+offset)) + for k in range(start, stop, row_size): + print(prefix+hexdump_line(data[k:min(k+row_size, stop)], k+offset, row_size)) -def hexdump_lines(data, start=0, length=None, prefix="", offset=0): +def hexdump_lines(data, start=0, length=None, row_size=16, prefix="", offset=0): lines = [] stop = min(start+length, len(data)) if length else len(data) - for k in range(start, stop, 16): - lines.append(prefix+hexdump_line(data[k:min(k+16, stop)], k+offset)) + for k in range(start, stop, row_size): + lines.append(prefix+hexdump_line(data[k:min(k+row_size, stop)], k+offset, row_size)) return lines -def hexdump_str(data, start=0, length=None, prefix="", offset=0): - return "\n".join(hexdump_lines(data, start, length, prefix, offset)) +def hexdump_str(data, start=0, length=None, row_size=16, prefix="", offset=0): + return "\n".join(hexdump_lines(data, start, length, row_size, prefix, offset))