Add "segprint -b"

Signed-off-by: Clifford Wolf <clifford@clifford.at>
Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
Clifford Wolf 2017-11-27 01:02:48 +01:00 committed by Tim 'mithro' Ansell
parent f79def34be
commit 1b21d3a064
2 changed files with 27 additions and 5 deletions

View File

@ -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

View File

@ -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():