diff --git a/dv/uvm/Makefile b/dv/uvm/Makefile index 91cbf653..6a937c4f 100644 --- a/dv/uvm/Makefile +++ b/dv/uvm/Makefile @@ -103,6 +103,7 @@ iss_sim: cd ${GEN_DIR}; \ python3 ./run.py \ --o=${OUT}/instr_gen ${GEN_OPTS} \ + --riscv_dv_root=${GEN_DIR} \ --steps=iss_sim \ ${COMMON_OPTS} \ --iss=${ISS} \ @@ -113,6 +114,7 @@ compile: mkdir -p ${OUT}/rtl_sim python3 ./sim.py \ --o=${OUT} \ + --riscv_dv_root=${GEN_DIR} \ --steps=compile \ ${COMMON_OPTS} \ --simulator=${SIMULATOR} \ @@ -124,6 +126,7 @@ rtl_sim: mkdir -p ${OUT}/rtl_sim python3 ./sim.py \ --o=${OUT} \ + --riscv_dv_root=${GEN_DIR} \ --steps=sim \ ${COMMON_OPTS} \ --simulator=${SIMULATOR} \ diff --git a/dv/uvm/riscv_dv_extension/ibex_log_to_trace_csv.py b/dv/uvm/riscv_dv_extension/ibex_log_to_trace_csv.py index 46bb9ae6..c2cebc95 100644 --- a/dv/uvm/riscv_dv_extension/ibex_log_to_trace_csv.py +++ b/dv/uvm/riscv_dv_extension/ibex_log_to_trace_csv.py @@ -83,6 +83,12 @@ def process_ibex_sim_log(ibex_log, csv, full_trace = 1): rv_instr_trace.rs1 = n.group("rs1") rv_instr_trace.rs1_val = gpr[rv_instr_trace.rs1] rv_instr_trace.imm = get_imm_hex_val(n.group("imm")) + elif rv_instr_trace.instr in ['c.jal']: + rv_instr_trace.imm = get_imm_hex_val("0x" + operands[0]) + elif rv_instr_trace.instr in ['jal']: + rv_instr_trace.rd = operands[0] + rv_instr_trace.rd_val = gpr[rv_instr_trace.rd] + rv_instr_trace.imm = get_imm_hex_val("0x" + operands[1]) else: assign_operand(rv_instr_trace, operands, gpr) diff --git a/dv/uvm/sim.py b/dv/uvm/sim.py index ea4c7ac7..8003d6e3 100644 --- a/dv/uvm/sim.py +++ b/dv/uvm/sim.py @@ -217,6 +217,8 @@ parser = argparse.ArgumentParser() parser.add_argument("--o", type=str, default="./out", help="Output directory name") +parser.add_argument("--riscv_dv_root", type=str, default="", + help="Root directory of RISCV-DV") parser.add_argument("--testlist", type=str, default="riscv_dv_extension/testlist.yaml", help="Regression testlist") parser.add_argument("--test", type=str, default="all", @@ -259,8 +261,8 @@ subprocess.run(["mkdir", "-p", output_dir]) # Process regression test list matched_list = [] -process_regression_list(args.testlist, args.test, - args.iterations, matched_list) +process_regression_list(args.testlist, args.test, args.iterations, + matched_list, args.riscv_dv_root) if len(matched_list) == 0: sys.exit("Cannot find %s in %s" % (args.test, args.testlist))