diff options
Diffstat (limited to 'fpga/usrp3/tools/scripts')
-rwxr-xr-x | fpga/usrp3/tools/scripts/launch_vivado.py | 9 | ||||
-rw-r--r-- | fpga/usrp3/tools/scripts/setupenv_base.sh | 8 | ||||
-rw-r--r-- | fpga/usrp3/tools/scripts/viv_gen_ip_makefile.py | 15 | ||||
-rw-r--r-- | fpga/usrp3/tools/scripts/viv_gen_part_id.py | 7 | ||||
-rw-r--r-- | fpga/usrp3/tools/scripts/viv_ip_xci_editor.py | 15 | ||||
-rwxr-xr-x | fpga/usrp3/tools/scripts/xil_bitfile_parser.py | 29 |
6 files changed, 40 insertions, 43 deletions
diff --git a/fpga/usrp3/tools/scripts/launch_vivado.py b/fpga/usrp3/tools/scripts/launch_vivado.py index 01774bef3..f9cca2014 100755 --- a/fpga/usrp3/tools/scripts/launch_vivado.py +++ b/fpga/usrp3/tools/scripts/launch_vivado.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # Notice: Some parts of this file were copied from PyBOMBS, which has a # different copyright, and is highlighted appropriately. The following @@ -24,7 +24,6 @@ Run Vivado builds """ -from __future__ import print_function import os import sys import re @@ -34,10 +33,7 @@ import time import argparse import subprocess import threading -try: - from Queue import Queue, Empty -except ImportError: - from queue import Queue, Empty # Py3k +from queue import Queue, Empty READ_TIMEOUT = 0.1 # s @@ -472,4 +468,3 @@ def main(): if __name__ == "__main__": exit(not main()) - diff --git a/fpga/usrp3/tools/scripts/setupenv_base.sh b/fpga/usrp3/tools/scripts/setupenv_base.sh index 5919b3aa8..8a82d83ea 100644 --- a/fpga/usrp3/tools/scripts/setupenv_base.sh +++ b/fpga/usrp3/tools/scripts/setupenv_base.sh @@ -338,7 +338,7 @@ function viv_create_ip { $VIVADO_EXEC -mode gui -source $(resolve_viv_path $VIV_IP_UTILS) -nolog -nojournal -tclargs create $part_name $ip_name $(resolve_viv_path $ip_dir) $ip_vlnv echo "Generating Makefile..." - python $REPO_BASE_PATH/tools/scripts/viv_gen_ip_makefile.py --ip_name=$ip_name --dest=$ip_dir/$ip_name + python3 $REPO_BASE_PATH/tools/scripts/viv_gen_ip_makefile.py --ip_name=$ip_name --dest=$ip_dir/$ip_name echo "Done generating IP in $ip_dir/$ip_name" } @@ -352,7 +352,7 @@ function viv_modify_ip { fi xci_path=$(readlink -f $1) - part_name=$(python $REPO_BASE_PATH/tools/scripts/viv_ip_xci_editor.py read_part $xci_path) + part_name=$(python3 $REPO_BASE_PATH/tools/scripts/viv_ip_xci_editor.py read_part $xci_path) if [[ -z $part_name ]]; then echo "ERROR: Invalid part name $part_name. XCI parse error." return 1 @@ -446,7 +446,7 @@ function viv_upgrade_ip { for xci_path in $xci_files; do if [[ -f $xci_path ]]; then echo "Upgrading $xci_path..." - part_name=$(python $REPO_BASE_PATH/tools/scripts/viv_ip_xci_editor.py read_part $xci_path) + part_name=$(python3 $REPO_BASE_PATH/tools/scripts/viv_ip_xci_editor.py read_part $xci_path) $VIVADO_EXEC -mode batch -source $(resolve_viv_path $VIV_IP_UTILS) -nolog -nojournal -tclargs upgrade $part_name $(resolve_viv_path $xci_path) | grep -v -E '(^$|^#|\*\*)' test ${PIPESTATUS[0]} -eq 0 else @@ -494,7 +494,7 @@ function probe_bitfile { echo "- <Bitfile Path>: Path to a .bit FPGA configuration file" return 1 fi - python $REPO_BASE_PATH/tools/scripts/xil_bitfile_parser.py --info $1 + python3 $REPO_BASE_PATH/tools/scripts/xil_bitfile_parser.py --info $1 } echo diff --git a/fpga/usrp3/tools/scripts/viv_gen_ip_makefile.py b/fpga/usrp3/tools/scripts/viv_gen_ip_makefile.py index 87572e86e..dd82e086e 100644 --- a/fpga/usrp3/tools/scripts/viv_gen_ip_makefile.py +++ b/fpga/usrp3/tools/scripts/viv_gen_ip_makefile.py @@ -1,7 +1,7 @@ -#! /usr/bin/python +#! /usr/bin/env python3 -import sys, os -import collections +import sys +import os import argparse import datetime @@ -10,7 +10,8 @@ def get_options(): parser = argparse.ArgumentParser(description='Create a Makefile for Xilinx IP.') parser.add_argument('--ip_name', type=str, default=None, help='Name for the IP core') parser.add_argument('--dest', type=str, default=None, help='Destination directory') - parser.add_argument('--copright_auth', type=str, default='Ettus Research', help='Copyright author') + parser.add_argument('--copright_auth', + type=str, default='Ettus Research', help='Copyright author') args = parser.parse_args() if not args.ip_name: print('ERROR: Please specify a name for the IP core\n') @@ -39,13 +40,13 @@ $({ip_srcs_var}) $({ip_outs_var}) : $(IP_DIR)/{ip_name}/{ip_name}.xci """ def main(): - args = get_options(); - + args = get_options() transform = {} transform['ip_name'] = args.ip_name transform['ip_srcs_var'] = 'IP_' + args.ip_name.upper() + '_SRCS' transform['ip_outs_var'] = 'IP_' + args.ip_name.upper() + '_OUTS' - transform['copyright'] = 'Copyright ' + str(datetime.datetime.now().year) + ' ' + args.copright_auth + transform['copyright'] = 'Copyright {} {}'.format( + datetime.datetime.now().year, args.copright_auth) with open(os.path.join(args.dest, 'Makefile.inc'), 'w') as mak_file: mak_file.write(g_makefile_template.format(**transform)) diff --git a/fpga/usrp3/tools/scripts/viv_gen_part_id.py b/fpga/usrp3/tools/scripts/viv_gen_part_id.py index b82c146aa..dc014aac2 100644 --- a/fpga/usrp3/tools/scripts/viv_gen_part_id.py +++ b/fpga/usrp3/tools/scripts/viv_gen_part_id.py @@ -1,8 +1,7 @@ -#!/usr/bin/python +#!/usr/bin/env python3 import argparse -import os, sys -import re +import sys # Parse command line options def get_options(): @@ -21,7 +20,7 @@ def main(): target_tok = args.target.split('/') if len(target_tok) < 4: print('ERROR: Invalid target format. Must be <arch>/<device>/<package>/<speedgrade>[/<temperaturegrade>[/<silicon_revision>]]') - print('ERROR: Parsed only ' + str(len(target_tok)) + ' tokens') + print('ERROR: Parsed only ' + str(len(target_tok)) + ' tokens') sys.exit(1) if target_tok[0] in ['artix7', 'kintex7', 'zynq', 'spartan7', 'virtex7']: print('' + target_tok[1] + target_tok[2] + target_tok[3]) diff --git a/fpga/usrp3/tools/scripts/viv_ip_xci_editor.py b/fpga/usrp3/tools/scripts/viv_ip_xci_editor.py index 1f5ddf2c5..b749b76da 100644 --- a/fpga/usrp3/tools/scripts/viv_ip_xci_editor.py +++ b/fpga/usrp3/tools/scripts/viv_ip_xci_editor.py @@ -1,7 +1,8 @@ -#!/usr/bin/python +#!/usr/bin/env python3 import argparse -import os, sys +import os +import sys import re # Parse command line options @@ -20,7 +21,7 @@ def get_options(): print('ERROR: Please specify the location for the XCI file to operate on\n') parser.print_help() sys.exit(1) - if (not os.path.isfile(args.xci_filepath)): + if not os.path.isfile(args.xci_filepath): print('ERROR: XCI File ' + args.xci_filepath + ' could not be accessed or is not a file.\n') parser.print_help() sys.exit(1) @@ -59,7 +60,7 @@ def main(): print(xci_info['DEVICE'] + xci_info['PACKAGE'] + xci_info['SPEEDGRADE']) elif args.action == 'retarget': # Write a new XCI file with modified target info - if (not os.path.isdir(args.output_dir)): + if not os.path.isdir(args.output_dir): print('ERROR: IP Build directory ' + args.output_dir + ' could not be accessed or is not a directory.') sys.exit(1) if not args.target: @@ -76,16 +77,16 @@ def main(): replace_dict['TEMPERATURE_GRADE'] = target_tok[4] if len(target_tok) > 5: replace_dict['SILICON_REVISION'] = target_tok[5] - out_xci_filename = os.path.join(os.path.abspath(args.output_dir), os.path.basename(args.xci_filepath)) + out_xci_filename = os.path.join(os.path.abspath(args.output_dir), os.path.basename(args.xci_filepath)) with open(out_xci_filename, 'w') as out_file: for r_line in xci_lines: w_line = r_line - m = re.search(get_match_str('(' + '|'.join(replace_dict.keys()) + ')'), r_line) + m = re.search(get_match_str('(' + '|'.join(list(replace_dict.keys())) + ')'), r_line) if m is not None: w_line = m.group(1) + replace_dict[m.group(2)] + m.group(4) +'\n' else: - m = re.search(get_empty_match_str('(' + '|'.join(replace_dict.keys()) + ')'), r_line) + m = re.search(get_empty_match_str('(' + '|'.join(list(replace_dict.keys())) + ')'), r_line) if m is not None: w_line = m.group(1) + '>' + replace_dict[m.group(2)] + '</spirit:configurableElementValue>\n' out_file.write(w_line) diff --git a/fpga/usrp3/tools/scripts/xil_bitfile_parser.py b/fpga/usrp3/tools/scripts/xil_bitfile_parser.py index 7201bde17..cace9b4df 100755 --- a/fpga/usrp3/tools/scripts/xil_bitfile_parser.py +++ b/fpga/usrp3/tools/scripts/xil_bitfile_parser.py @@ -1,7 +1,8 @@ -#!/usr/bin/python +#!/usr/bin/env python3 import argparse -import os, sys +import os +import sys import struct import re @@ -13,7 +14,7 @@ def get_options(): parser.add_argument('--flip', action='store_true', default=False, help='Flip 32-bit endianess') parser.add_argument('--info', action='store_true', default=False, help='Print bitfile info') args = parser.parse_args() - if (not os.path.isfile(args.bitfile)): + if not os.path.isfile(args.bitfile): print('ERROR: Bitfile ' + args.bitfile + ' could not be accessed or is not a file.\n') parser.print_help() sys.exit(1) @@ -52,9 +53,9 @@ def parse_bitfile(bitfile_bytes): def flip32(data): sl = struct.Struct('<I') sb = struct.Struct('>I') - b = buffer(data) + b = memoryview(data) d = bytearray(len(data)) - for offset in xrange(0, len(data), 4): + for offset in range(0, len(data), 4): sb.pack_into(d, offset, sl.unpack_from(b, offset)[0]) return d @@ -67,18 +68,18 @@ def main(): if args.info: m = re.search('(.+);UserID=(.+);COMPRESS=(.+);Version=(.+)', header['design_name']) if m: - print 'Design Name: ' + m.group(1) - print 'User ID: ' + m.group(2) - print 'Compression: ' + m.group(3) - print 'Vivado Version: ' + m.group(4) + print('Design Name: ' + m.group(1)) + print('User ID: ' + m.group(2)) + print('Compression: ' + m.group(3)) + print('Vivado Version: ' + m.group(4)) else: - print 'Design Name: ' + header['design_name'] - print 'Part Name: ' + header['part_name'] - print 'Datestamp: ' + header['date'] + ' ' + header['time'] - print 'Bitstream Size: ' + str(header['bitstream_len']) + print('Design Name: ' + header['design_name']) + print('Part Name: ' + header['part_name']) + print('Datestamp: ' + header['date'] + ' ' + header['time']) + print('Bitstream Size: ' + str(header['bitstream_len'])) # Write a bin file if args.bin_out: open(args.bin_out, 'wb').write(flip32(data) if args.flip else data) if __name__ == '__main__': - main()
\ No newline at end of file + main() |