aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/tools/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/usrp3/tools/scripts')
-rwxr-xr-xfpga/usrp3/tools/scripts/launch_vivado.py9
-rw-r--r--fpga/usrp3/tools/scripts/setupenv_base.sh8
-rw-r--r--fpga/usrp3/tools/scripts/viv_gen_ip_makefile.py15
-rw-r--r--fpga/usrp3/tools/scripts/viv_gen_part_id.py7
-rw-r--r--fpga/usrp3/tools/scripts/viv_ip_xci_editor.py15
-rwxr-xr-xfpga/usrp3/tools/scripts/xil_bitfile_parser.py29
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()