prjxray/fuzzers/005-tilegrid/fuzzaddr/generate.py

62 lines
1.6 KiB
Python

#!/usr/bin/env python3
from prjxray import bitsmaker
def run(bits_fn, design_fn, fnout, oneval, dframe, dword, dbit, verbose=False):
metastr = "DFRAME:%02x.DWORD:%u.DBIT:%u" % (dframe, dword, dbit)
tags = dict()
f = open(design_fn, 'r')
f.readline()
for l in f:
l = l.strip()
# Additional values reserved / for debugging
tile, val = l.split(',')[0:2]
tags["%s.%s" % (tile, metastr)] = val == oneval
bitsmaker.write(bits_fn, fnout, tags)
def main():
import argparse
parser = argparse.ArgumentParser(
description=
"Solve bits (like segmaker) on raw .bits file without segments")
parser.add_argument("--bits-file", default="design.bits", help="")
parser.add_argument("--verbose", action="store_true", help="")
parser.add_argument("--design", default="design.csv", help="")
parser.add_argument("--fnout", default="/dev/stdout", help="")
parser.add_argument("--oneval", required=True, help="")
parser.add_argument(
"--dframe",
type=str,
required=True,
help="Reference frame delta (base 16)")
parser.add_argument(
"--dword",
type=str,
required=True,
help="Reference word delta (base 10)")
parser.add_argument(
"--dbit",
type=str,
required=True,
help="Reference bit delta (base 10)")
args = parser.parse_args()
run(
args.bits_file,
args.design,
args.fnout,
args.oneval,
int(args.dframe, 16),
int(args.dword, 10),
int(args.dbit, 10),
verbose=args.verbose)
if __name__ == "__main__":
main()