From 1b21d3a0644f624fb490729781c033fe20ed463e Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Mon, 27 Nov 2017 01:02:48 +0100 Subject: [PATCH] Add "segprint -b" Signed-off-by: Clifford Wolf Signed-off-by: Tim 'mithro' Ansell --- minitests/clkbuf/runme.sh | 8 ++++---- utils/segprint.py | 24 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/minitests/clkbuf/runme.sh b/minitests/clkbuf/runme.sh index 9b816c75..dcd89688 100755 --- a/minitests/clkbuf/runme.sh +++ b/minitests/clkbuf/runme.sh @@ -3,10 +3,10 @@ set -ex vivado -mode batch -source runme.tcl -${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit -${XRAY_SEGPRINT} -zd design.bits > design.segs +${XRAY_BITREAD} -o design.bits -z -y design.bit +${XRAY_SEGPRINT} -bzd design.bits > design.segs for id in b{0,1,2,3,4,5,6,7,8,9,10,11}; do - ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design_$id.bits -z -y design_$id.bit - ${XRAY_SEGPRINT} -zd design_$id.bits > design_$id.segs + ${XRAY_BITREAD} -o design_$id.bits -z -y design_$id.bit + ${XRAY_SEGPRINT} -bzd design_$id.bits > design_$id.segs done diff --git a/utils/segprint.py b/utils/segprint.py index cd78a325..852d389d 100755 --- a/utils/segprint.py +++ b/utils/segprint.py @@ -3,6 +3,7 @@ import getopt, sys, os, json, re flag_z = False +flag_b = False flag_d = False flag_D = False @@ -12,6 +13,9 @@ def usage(): print(" -z") print(" do not print a 'seg' header for empty segments") print("") + print(" -b") + print(" print bits outside of known segments") + print("") print(" -d") print(" decode known segment bits and write them as tags") print("") @@ -21,7 +25,7 @@ def usage(): sys.exit(0) try: - opts, args = getopt.getopt(sys.argv[1:], "zdD") + opts, args = getopt.getopt(sys.argv[1:], "zbdD") except: usage() @@ -31,6 +35,8 @@ if len(args) == 0: for o, a in opts: if o == "-z": flag_z = True + elif o == "-b": + flag_b = True elif o == "-d": flag_d = True elif o == "-D": @@ -80,6 +86,19 @@ def get_database(segtype): return segbitsdb[segtype] def handle_segment(segname): + if segname is None: + segframes = set() + for segname, segdata in grid["segments"].items(): + framebase = int(segdata["baseaddr"][0], 16) + for i in range(segdata["frames"]): + segframes.add(framebase+i) + for frame in sorted(bitdata.keys()): + if frame in segframes: + continue + for wordidx in sorted(bitdata[frame].keys()): + for bitidx in sorted(bitdata[frame][wordidx]): + print("bit_%08x_%03d_%02d" % (frame, wordidx, bitidx)) + return if ":" in segname: seg1, seg2 = segname.split(":") @@ -163,6 +182,9 @@ def handle_segment(segname): for tag in sorted(segtags): print("tag %s" % tag) +if flag_b: + handle_segment(None) + if len(args) == 1: seglist = list() for seg, seginfo in grid["segments"].items():