mirror of https://github.com/openXC7/prjxray.git
Update tools to correctly handle ECC mask (ECC is only 13 LSB bits in word 50)
Signed-off-by: Clifford Wolf <clifford@clifford.at> Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
parent
ddcf339da0
commit
339fd235bc
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue