diff --git a/minitests/clkbuf/runme.sh b/minitests/clkbuf/runme.sh index dcd89688..9cd52c81 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} -o design.bits -z -y design.bit +${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -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} -o design_$id.bits -z -y design_$id.bit + ${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design_$id.bits -z -y design_$id.bit ${XRAY_SEGPRINT} -bzd design_$id.bits > design_$id.segs done diff --git a/tools/bitread.cc b/tools/bitread.cc index 4e8fdfe8..bdbb70a9 100644 --- a/tools/bitread.cc +++ b/tools/bitread.cc @@ -532,7 +532,7 @@ int main(int argc, char **argv) { for (int i = 0; i < 101; i++) for (int k = 0; k < 32; k++) - if ((i != 50 || FLAGS_C) && ((it.second.at(i) & (1 << k)) != 0)) { + if ((i != 50 || k > 12 || FLAGS_C) && ((it.second.at(i) & (1 << k)) != 0)) { if (FLAGS_x) fprintf(f, "bit_%08x_%03d_%02d_t%d_h%d_r%d_c%d_m%d\n", fid.get_value(), i, k, fid.get_type(), fid.get_topflag(), fid.get_rowaddr(), @@ -549,7 +549,7 @@ int main(int argc, char **argv) fprintf(f, ".frame 0x%08x%s\n", fid.get_value(), configframes_autoincr.count(fid.get_value()) ? " AI" : ""); for (int i = 0; i < 101; i++) - fprintf(f, "%08x%s", (i != 50 || FLAGS_C) ? it.second.at(i) : 0, (i % 6) == 5 ? "\n" : " "); + fprintf(f, "%08x%s", it.second.at(i) & ((i != 50 || FLAGS_C) ? 0xffffffff : 0xffffe000), (i % 6) == 5 ? "\n" : " "); fprintf(f, "\n\n"); } } diff --git a/utils/segprint.py b/utils/segprint.py index 852d389d..b0b9e811 100755 --- a/utils/segprint.py +++ b/utils/segprint.py @@ -87,15 +87,18 @@ def get_database(segtype): def handle_segment(segname): if segname is None: - segframes = set() + segframes = dict() for segname, segdata in grid["segments"].items(): framebase = int(segdata["baseaddr"][0], 16) for i in range(segdata["frames"]): - segframes.add(framebase+i) + if (framebase+i) not in segframes: + segframes[framebase+i] = set() + for j in range(segdata["baseaddr"][1], segdata["baseaddr"][1] + segdata["words"]): + segframes[framebase+i].add(j) for frame in sorted(bitdata.keys()): - if frame in segframes: - continue for wordidx in sorted(bitdata[frame].keys()): + if frame in segframes and wordidx in segframes[frame]: + continue for bitidx in sorted(bitdata[frame][wordidx]): print("bit_%08x_%03d_%02d" % (frame, wordidx, bitidx)) return