diff --git a/bin/lib/cv_regression.py b/bin/lib/cv_regression.py
index 076175f676..4dea5aeaf9 100644
--- a/bin/lib/cv_regression.py
+++ b/bin/lib/cv_regression.py
@@ -89,9 +89,6 @@ def __init__(self, **kwargs):
if not hasattr(self, 'testname'):
self.testname = self.name
- if not hasattr(self, 'riscvdv_cfg'):
- self.riscvdv_cfg = ''
-
# Log equals the test name if does not exist
if not hasattr(self, 'log'):
self.log = self.name
diff --git a/bin/templates/regress_sh.j2 b/bin/templates/regress_sh.j2
index 41fe6880ec..f861cfd28c 100644
--- a/bin/templates/regress_sh.j2
+++ b/bin/templates/regress_sh.j2
@@ -105,8 +105,12 @@ popd > /dev/null
{% else %}
{% set test_cfg = "" %}
{% endif %}
+{% set test_cfg_list = test_cfg|replace(" ",",")|replace("+",",") %}
+{% set test_cfg_list = test_cfg_list.split(",")|unique|sort %}
+{% set test_cfg_path = test_cfg_list|join("__") %}
+
# --> Test (Index: {{run_index}}): {{t.cmd}} : {{t.description}}
-{% set cmd = test_cmd + ' CV_CORE=' + project + ' CFG=' + r.builds[build].cfg + ' ' + toolchain|upper + '=1' + ' RISCVDV_CFG=' + t.riscvdv_cfg + ' SIMULATOR=' + t.simulator + ' COMP=0 USE_ISS=' + regress_macros.yesorno(t.iss) + ' COV=' + regress_macros.yesorno(t.cov) + ' SEED=random GEN_START_INDEX=' + run_index|string + ' RUN_INDEX=' + run_index|string + ' TEST_CFG_FILE=' + test_cfg + ' ' + regress_macros.cv_results(results) + ' ' + makeargs %}
+{% set cmd = test_cmd + ' CV_CORE=' + project + ' CFG=' + r.builds[build].cfg + ' ' + toolchain|upper + '=1 SIMULATOR=' + t.simulator + ' COMP=0 USE_ISS=' + regress_macros.yesorno(t.iss) + ' COV=' + regress_macros.yesorno(t.cov) + ' SEED=random GEN_START_INDEX=' + run_index|string + ' RUN_INDEX=' + run_index|string + ' TEST_CFG_FILE=\"' + test_cfg + '\" ' + regress_macros.cv_results(results) + ' ' + makeargs %}
echo "{{session}}: Running test [cd {{t.abs_dir}} && {{cmd}}]"
pushd {{t.abs_dir}} > /dev/null
{{cmd}} >& /dev/null;
@@ -118,13 +122,7 @@ popd > /dev/null
{% else %}
{% set results_dir = t.simulator + '_results' %}
{% endif %}
-{% if t.test_cfg is defined %}
- {% set sim_log = t.simulator + '-' + test_log + '_' + t.test_cfg + '.log' %}
- {% set test_cfg_path = t.test_cfg %}
-{% else %}
- {% set sim_log = t.simulator + '-' + test_log + '.log' %}
- {% set test_cfg_path = '' %}
-{% endif %}
+{% set sim_log = t.simulator + '-' + test_log + '.log' %}
{# Determine log location #}
{% if t.results %}
diff --git a/bin/templates/regress_vsif.j2 b/bin/templates/regress_vsif.j2
index 3886b33a4f..2695a0c9dd 100644
--- a/bin/templates/regress_vsif.j2
+++ b/bin/templates/regress_vsif.j2
@@ -64,7 +64,7 @@ group {{project}} {
test precmd {
sv_seed: gen_random;
count: 1;
- run_script: 'cd {{t.abs_dir}} && {{t.precmd}} CV_SIM_PREFIX= CV_CORE={{project}} CFG={{build.cfg}} RISCVDV_CFG={{t.riscvdv_cfg}} {{toolchain|upper}}=1 SIMULATOR={{t.simulator}} RNDSEED=$RUN_ENV(BRUN_SV_SEED) NUM_TESTS={{t.num}} {{regress_macros.cv_results(results)}} {{makeargs}}';
+ run_script: 'cd {{t.abs_dir}} && {{t.precmd}} CV_SIM_PREFIX= CV_CORE={{project}} CFG={{build.cfg}} {{toolchain|upper}}=1 SIMULATOR={{t.simulator}} RNDSEED=$RUN_ENV(BRUN_SV_SEED) NUM_TESTS={{t.num}} {{regress_macros.cv_results(results)}} {{makeargs}}';
};
{% else %}
{% endif %}
diff --git a/cv32e40p/regress/README.md b/cv32e40p/regress/README.md
new file mode 100644
index 0000000000..b4b48d4b4f
--- /dev/null
+++ b/cv32e40p/regress/README.md
@@ -0,0 +1,26 @@
+CV32E40P Regress Files
+==================================
+
+For V2 core, all the regressions files should be generated using the following cv_regress commands, where *type* has to be chosen between `sh` and `rmdb`, and *sim* is the wanted simulator (vsim, xrun, ...)
+
+## pulp configuration
+
+> ./cv_regress --{type} --file=cv32e40pv2_xpulp_instr.yaml --simulator={sim} --outfile=xpulp_instr_pulp.{type} --cfg pulp
+> ./cv_regress --{type} --file=cv32e40pv2_interrupt_debug.yaml --simulator={sim} --outfile=int_debug_pulp.{type} --cfg pulp
+
+## pulp_fpu configuration
+> ./cv_regress --{type} --file=cv32e40pv2_xpulp_instr.yaml --simulator={sim} --outfile=xpulp_instr_pulp_fpu.{type} --cfg pulp_fpu --add_test_cfg floating_pt_instr_en
+> ./cv_regress --{type} --file=cv32e40pv2_fpu_instr.yaml --simulator={sim} --outfile=fpu_instr_pulp_fpu.{type} --cfg pulp_fpu --add_test_cfg floating_pt_instr_en
+> ./cv_regress --{type} --file=cv32e40pv2_interrupt_debug.yaml --simulator={sim} --outfile=int_debug_pulp_fpu.{type} --cfg pulp_fpu --add_test_cfg floating_pt_instr_en
+
+## pulp_fpu_zfinx configuration
+> ./cv_regress --{type} --file=cv32e40pv2_xpulp_instr.yaml --simulator={sim} --outfile=xpulp_instr_pulp_fpu_zfinx.{type} --cfg pulp_fpu_zfinx --add_test_cfg floating_pt_zfinx_instr_en
+> ./cv_regress --{type} --file=cv32e40pv2_fpu_instr.yaml --simulator={sim} --outfile=fpu_instr_pulp_fpu_zfinx.{type} --cfg pulp_fpu_zfinx --add_test_cfg floating_pt_zfinx_instr_en
+> ./cv_regress --{type} --file=cv32e40pv2_interrupt_debug.yaml --simulator={sim} --outfile=int_debug_pulp_fpu_zfinx.{type} --cfg pulp_fpu_zfinx --add_test_cfg floating_pt_zfinx_instr_en
+
+## configurations with latency
+To generate regressions with latency (e.g. pulp_fpu_zfinx_2cyclat), only the `--cfg` switch has to be updated:
+
+> ./cv_regress --{type} --file=cv32e40pv2_xpulp_instr.yaml --simulator={sim} --outfile=xpulp_instr_pulp_fpu_zfinx_2cyclat.{type} --cfg pulp_fpu_zfinx_2cyclat --add_test_cfg floating_pt_zfinx_instr_en
+> ./cv_regress --{type} --file=cv32e40pv2_fpu_instr.yaml --simulator={sim} --outfile=fpu_instr_pulp_fpu_zfinx_2cyclat.{type} --cfg pulp_fpu_zfinx_2cyclat --add_test_cfg floating_pt_instr_en
+> ./cv_regress --{type} --file=cv32e40pv2_interrupt_debug.yaml --simulator={sim} --outfile=int_debug_pulp_fpu_zfinx_2cyclat.{type} --cfg pulp_fpu_zfinx_2cyclat --add_test_cfg floating_pt_instr_en
diff --git a/mk/Common.mk b/mk/Common.mk
index b46654ce28..ff2b163007 100644
--- a/mk/Common.mk
+++ b/mk/Common.mk
@@ -191,16 +191,9 @@ ifneq ($(filter gen_corev-dv,$(MAKECMDGOALS)),)
ifeq ($(TEST),)
$(error ERROR must specify a TEST variable with gen_corev-dv target)
endif
-ifeq ($(RISCVDV_CFG),)
GEN_FLAGS_MAKE := $(shell $(YAML2MAKE) --test=$(TEST) --yaml=corev-dv.yaml $(YAML2MAKE_DEBUG) --prefix=GEN --core=$(CV_CORE))
ifeq ($(GEN_FLAGS_MAKE),)
-$(error ERROR Could not find corev-dv.yaml of for test: $(TEST))
-endif
-else
-GEN_FLAGS_MAKE := $(shell $(YAML2MAKE) --test=$(TEST) --yaml=$(RISCVDV_CFG).yaml $(YAML2MAKE_DEBUG) --prefix=GEN --core=$(CV_CORE))
-ifeq ($(GEN_FLAGS_MAKE),)
-$(error ERROR Could not find corev-dv_$(RISCVDV_CFG).yaml of for test: $(TEST))
-endif
+$(error ERROR Could not find corev-dv.yaml for test: $(TEST))
endif
include $(GEN_FLAGS_MAKE)
endif
diff --git a/mk/uvmt/uvmt.mk b/mk/uvmt/uvmt.mk
index 5a29233170..f28f5d1e23 100644
--- a/mk/uvmt/uvmt.mk
+++ b/mk/uvmt/uvmt.mk
@@ -169,8 +169,6 @@ export RISCV_DV_ROOT = $(RISCVDV_PKG)
export COREV_DV_ROOT = $(COREVDV_PKG)
export CV_CORE_COREV_DV_ROOT = $(CV_CORE_COREVDV_PKG)
-RISCVDV_CFG ?=
-
# EMBench benchmarking suite
EMBENCH_PKG := $(CORE_V_VERIF)/$(CV_CORE_LC)/vendor_lib/embench
EMBENCH_TESTS := $(CORE_V_VERIF)/$(CV_CORE_LC)/tests/programs/embench