diff --git a/dv/uvm/core_ibex/Makefile b/dv/uvm/core_ibex/Makefile index d59b40f3..6b514b4d 100644 --- a/dv/uvm/core_ibex/Makefile +++ b/dv/uvm/core_ibex/Makefile @@ -324,9 +324,10 @@ $(metadata)/.instr_gen.run.stamp: \ @sed -i $(REGEX_EMPTY_LINES) $(INSTR_GEN_RUN_COMMANDS) $(verb)./construct_makefile.py \ --output=$(OUT-SEED)/instr_gen/run.mk \ - --test_cmds=$(INSTR_GEN_RUN_COMMANDS) - export RISCV_DV_ROOT - @$(MAKE) -f $(OUT-SEED)/instr_gen/run.mk all + --test_cmds=$(INSTR_GEN_RUN_COMMANDS) \ + --discard_stdstreams + @export RISCV_DV_ROOT + @$(MAKE) -s -f $(OUT-SEED)/instr_gen/run.mk all @ # Bookkeeping @touch $@ @@ -381,7 +382,7 @@ $(metadata)/.iss.run.stamp: \ $(verb)./construct_makefile.py \ --output=$(OUT-SEED)/instr_gen/iss.mk \ --test_cmds=$(ISS_COMMANDS) - @$(MAKE) -f $(OUT-SEED)/instr_gen/iss.mk all + @$(MAKE) -s -f $(OUT-SEED)/instr_gen/iss.mk all @ # Bookkeeping $(call dump-vars,$(metadata)/.iss.vars.mk,iss,$(iss-var-deps)) @touch $@ diff --git a/dv/uvm/core_ibex/construct_makefile.py b/dv/uvm/core_ibex/construct_makefile.py index 93e3866e..083b1f12 100755 --- a/dv/uvm/core_ibex/construct_makefile.py +++ b/dv/uvm/core_ibex/construct_makefile.py @@ -15,16 +15,32 @@ _OLD_SYS_PATH = sys.path def main() -> int: + """ + Construct a trivial makefile from the --debug output of riscv-dv commands. + + Creates a flat makefile, so if the commands have any ordering requirements + this will fall over. + """ parser = argparse.ArgumentParser() - parser.add_argument('--test_cmds', required=True) - parser.add_argument('--output', required=True) + parser.add_argument('--test_cmds', required=True, + help='File containing --debug output') + parser.add_argument('--output', required=True, + help='Makefile to be constructed') + parser.add_argument("--discard_stdstreams", action='store_true', + help='Redirect stdstreams to /dev/null') args = parser.parse_args() + # Many commands come with a logfile argument, however some capture the + # stdout/stderr to a file. Handle both cases to ensure the logs are tidy. + tail = '\n' + if args.discard_stdstreams: + tail = ' >/dev/null 2>&1' + tail + with open(args.test_cmds) as f, \ open(args.output, 'w', encoding='UTF-8') as outfile: for i, line in enumerate(f): outfile.write(f'{i}:\n') - outfile.write('\t' + line) + outfile.write('\t' + line.strip() + tail) outfile.write(f'CMDS := $(shell seq 0 {i})\n') outfile.write('all: $(CMDS)')