diff --git a/Makefile b/Makefile index 4d5e7e6..4c6f72a 100644 --- a/Makefile +++ b/Makefile @@ -18,13 +18,16 @@ clean: clean_dut: cd dut && ls | grep -v __init__.py | xargs rm -rf -test_all: +clean_rtl: + cd rtl && ls | grep -v README.md | xargs rm -rf + +test_all: dut @python3 run.py --config $(CFG) $(KV) -- $(REPORT) -vs ut_*/ $(args) -test: +test: dut @python3 run.py --config $(CFG) $(KV) -- $(REPORT) -vs $(target) $(args) -dut: +dut: rtl @python3 run.py --config $(CFG) --build $(DUTS) $(args) rtl: diff --git a/comm/functions.py b/comm/functions.py index 9bf3de5..52cf7b0 100644 --- a/comm/functions.py +++ b/comm/functions.py @@ -180,10 +180,20 @@ def download_rtl(base_url, out_dir, version="latest"): use_rtl(base_url.split("/")[-1], out_dir) return True +def _build_dut(d, cfg): + try: + module = importlib.import_module(f"scripts.{d}") + if not module.build(cfg): + warning(f"Build scripts/{d}.py failed") + else: + info(f"Build scripts/{d}.py success") + except Exception as e: + warning(f"Failed to build {d}, error: {e}\n{traceback.format_exc()}") def build_dut(duts, cfg): target_duts = [d.strip() for d in duts.split(",")] if len(target_duts) == 0: + warning(f"No dut to build for: {duts}") return prefix = "build_ut_" build_modules = [f.replace(".py", "") for f in @@ -199,16 +209,11 @@ def build_dut(duts, cfg): if len(dut_to_build) == 0: warning(f"No dut to build for: {duts}") return - for d in dut_to_build: - debug(f"Build {d}") - try: - module = importlib.import_module(f"scripts.{d}") - if not module.build(cfg): - warning(f"Build scripts/{d}.py failed") - else: - info(f"Build scripts/{d}.py success") - except Exception as e: - warning(f"Failed to build {d}, error: {e}\n{traceback.format_exc()}") + import multiprocessing + pool = multiprocessing.Pool() + pool.starmap(_build_dut, [(d, cfg) for d in dut_to_build]) + pool.close() + pool.join() def replace_default_vars(input_str, cfg): diff --git a/ut_backend/ctrl_block/decode/env/decode_wrapper.py b/ut_backend/ctrl_block/decode/env/decode_wrapper.py index 4748fb8..2bf0dd1 100644 --- a/ut_backend/ctrl_block/decode/env/decode_wrapper.py +++ b/ut_backend/ctrl_block/decode/env/decode_wrapper.py @@ -167,7 +167,8 @@ def Reset(self): def Input_instruction(self, i, valid, instr, isRVC, brType, isCall, isRet, pred_taken, instr_ex): self.input_inst[i].valid.value = valid self.input_inst[i].bits_instr.value = instr - self.input_inst[i].bits_foldpc.value = 0 + if hasattr(self.input_inst[i], "bits_foldpc"): + self.input_inst[i].bits_foldpc.value = 0 self.input_inst[i].bits_exceptionVec_2.value = instr_ex for j in range(24): p = getattr(self.dut, f'io_in_{i}_bits_exceptionVec_{j}', None)