#!/usr/bin/env python3 # mypy: disallow-untyped-defs # pylint: disable=C0114,C0116 ###################################################################### import argparse import re import sys ###################################################################### def process() -> None: in_header = True in_backslash = None for line in sys.stdin: line = line.rstrip() line = line.expandtabs(tabsize=8) line = re.sub(r', +', ', ', line) line = re.sub(r'"/[^"]+/src/', '"t/uvm/src/', line) # Replace header if in_header: if re.match(r'^//', line): continue in_header = False print_header() in_header = False # Drop some unneeded items if re.match(r'^`begin_keywords ', line): continue if re.match(r'^`line ', line): continue if re.match(r'^\s*$', line) and not in_backslash: continue if re.match(r'^ *endpackage', line): print(line) break in_backslash = re.search(r'\\$', line) print(line) def print_header() -> None: print("// DESCR" "IPTION: Verilator: Concatenated UVM header for internal testing") print("// SPDX-" "License-Identifier: Apache-2.0") print("//----------------------------------------------------------------------") print("// To recreate:") print("// Using verilator_ext_tests:") print("// " + Args.test_name + " --gold") # Copy the copyright header from original sources with open(Args.uvm_header_filename, 'r', encoding="utf8") as fh: for line in fh: line = line.strip() line = line.expandtabs(tabsize=8) if not re.match(r'^//', line): break print(line) ####################################################################### ####################################################################### parser = argparse.ArgumentParser( allow_abbrev=False, formatter_class=argparse.RawDescriptionHelpFormatter, description="""uvm_pkg_packer is used to create the test_regress uvm_pkg libraries from sources in verilator_ext_test repository's tests.""", epilog="""Copyright 2025-2025 by Wilson Snyder. This program is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0. SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0""") parser.add_argument('--debug', action='store_true', help='enable debug') parser.add_argument('--test-name', type=str, required=True, help='name of test to run to recreate') parser.add_argument('--uvm-header-filename', type=str, required=True, help='filename of uvm_pkg.sv') Args = parser.parse_args() process() ###################################################################### # Local Variables: # compile-command: "cd $VE && t/t_uvm_hello_v2017_1_0_nodpi.py" # End: