CS315: Enable Regression tests for Corstone-315

Signed-off-by: Gergely Korcsák <gergely.korcsak@arm.com>
Change-Id: Ied1a769cbb27a00c751df11e37fd45c0df0f8247
diff --git a/build_helper/build_helper_configs.py b/build_helper/build_helper_configs.py
index 6d25d40..b29b2c2 100755
--- a/build_helper/build_helper_configs.py
+++ b/build_helper/build_helper_configs.py
@@ -880,7 +880,7 @@
                 "tfm_platform":     ["arm/mps4/corstone315"],
                 "compiler":         ["GCC_10_3", "ARMCLANG_6_21"],
                 "isolation_level":  ["1"],
-                "test_regression":  ["OFF"],
+                "test_regression":  ["OFF", "RegBL2, RegS, RegNS"],
                 "test_psa_api":     ["OFF"],
                 "cmake_build_type": ["Debug", "Release"],
                 "with_bl2":         [True],
diff --git a/lava_helper/jinja2_templates/fvp_mps4.jinja2 b/lava_helper/jinja2_templates/fvp_mps4.jinja2
new file mode 100644
index 0000000..c9a026d
--- /dev/null
+++ b/lava_helper/jinja2_templates/fvp_mps4.jinja2
@@ -0,0 +1,103 @@
+{#------------------------------------------------------------------------------
+# Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-----------------------------------------------------------------------------#}
+{% extends 'jinja2_templates/base.jinja2' %}
+{% block metadata %}
+{{ super() }}
+{% endblock %}
+{% block base %}
+{{ super() }}
+{% endblock %}
+{% block actions %}
+context:
+  kernel_start_message: ''
+
+actions:
+- deploy:
+    namespace: docker
+    to: fvp
+    images:
+{% for name, img in binaries.items() %}
+      {{ name }}:
+        url: {{ data_url_prefix }}/{{ img.data }}
+{% endfor %}
+{%- if enable_code_coverage %}
+      cc:
+        url: {{ coverage_trace_plugin }}
+{%- endif %}
+- boot:
+    failure_retry: 3
+    namespace: docker
+    method: fvp
+    docker:
+      name: {{ docker_prefix }}/fvp:fvp_corstone_sse-315_11.24_22_linux64
+      local: true
+    prompts:
+    - 'root@lava '
+    image: /opt/model/FVP_Corstone_SSE-315/models/Linux64_GCC-9.3/FVP_Corstone_SSE-315
+    timeout:
+      minutes: 5
+    console_string: 'telnetterminal0: Listening for serial connection on port (?P<PORT>\d+)'
+    license_variable: '{{ license_variable }}'
+    use_telnet: False
+    arguments:
+    -  "--simlimit 900"
+{% for name, img in binaries.items() %}
+    -  "--data {{ '{' ~ name.upper() ~ '}' }}@{{ img.offset }}"
+{% endfor %}
+    -  "--parameter mps4_board.subsystem.cpu0.semihosting-enable=0"
+    -  "--parameter mps4_board.DISABLE_GATING=0"
+    -  "--parameter mps4_board.telnetterminal0.start_telnet=1"
+    -  "--parameter mps4_board.telnetterminal1.start_telnet=1"
+    -  "--parameter mps4_board.telnetterminal2.start_telnet=1"
+    -  "--parameter mps4_board.telnetterminal0.quiet=0"
+    -  "--parameter mps4_board.telnetterminal1.quiet=0"
+    -  "--parameter mps4_board.telnetterminal2.quiet=0"
+    -  "--parameter mps4_board.uart0.shutdown_on_eot=1"
+    -  "--parameter 'mps4_board.uart0.out_file=-'"
+    -  "--parameter mps4_board.visualisation.disable-visualisation=1"
+{%- if enable_code_coverage %}
+    -  "--plugin {CC}"
+    -  "--parameter mps4_board.uart0.shutdown_tag=\x04"
+    -  "--cpulimit 240"
+{%- endif %}
+
+    prompts:
+    - '(.*)'
+
+- test:
+    namespace: target
+    monitors:
+    {%- for monitor in monitors %}
+    - name: "{{monitor.name}}"
+      start: "{{monitor.start}}"
+      end: "{{monitor.end}}"
+      pattern: "{{monitor.pattern}}"
+      fixupdict:
+         '{{monitor.fixup.pass}}': pass
+         '{{monitor.fixup.fail}}': fail
+         {%- if monitor.fixup.skip %}
+         '{{monitor.fixup.skip}}': skip
+         {%- endif %}
+    {%- endfor %}
+
+{%- if enable_code_coverage %}
+- test:
+    namespace: target
+    interactive:
+    - name: fvp_stopped
+      prompts: ['/OSCI/SystemC: Simulation stopped by user.']
+      script:
+      - name: fvp_stopped_1
+        command:
+    - name: fvp_trace_end
+      prompts: ['Trace path: FVP_Corstone_SSE-315.cpu1']
+      script:
+      - name: fvp_trace_end_1
+        command:
+{%- endif %}
+
+{% endblock %}
diff --git a/lava_helper/lava_helper_configs.py b/lava_helper/lava_helper_configs.py
index 3bc6ab3..2949c81 100644
--- a/lava_helper/lava_helper_configs.py
+++ b/lava_helper/lava_helper_configs.py
@@ -147,6 +147,44 @@
     }
 }
 
+# FVP with BL1 and BL2 bootloader for Corstone315
+fvp_mps4_cs315_bl1_bl2 = {
+    "templ": "fvp_mps4.jinja2",
+    "job_name": "fvp_mps4_cs315_bl1_bl2",
+    "device_type": "fvp",
+    "job_timeout": 15,
+    "action_timeout": 10,
+    "monitor_timeout": 15,
+    "poweroff_timeout": 1,
+    "platforms": {"arm/mps4/corstone315": ""},
+    "binaries": {
+        "bl1": {
+            "data": "spe/bin/bl1_1.bin",
+            "offset": "0x11000000",
+        },
+        "bl2": {
+            "data": "spe/bin/bl2_signed.bin",
+            "offset": "0x12031400",
+        },
+        "cm_prov": {
+            "data": "spe/bin/cm_provisioning_bundle.bin",
+            "offset": "0x12024000",
+        },
+        "dm_prov": {
+            "data": "spe/bin/dm_provisioning_bundle.bin",
+            "offset": "0x1202aa00",
+        },
+        "tfm_s_ns_img": {
+            "data": "nspe/tfm_s_ns_signed.bin",
+            "offset": "0x38000000",
+        }
+    },
+    "monitors": {
+        'no_reg_tests': no_reg_tests_monitors,
+        'reg_tests': reg_tests_monitors,
+    }
+}
+
 # FVP with BL1 and BL2 bootloader for Corstone1000
 fvp_corstone1000 = {
     "templ": "fvp_corstone1000.jinja2",
@@ -411,6 +449,7 @@
     "fvp_mps3_cs300_bl2": fvp_mps3_cs300_bl2,
     "fvp_mps2_an521_bl2": fvp_mps2_an521_bl2,
     "fvp_mps2_an519_bl2": fvp_mps2_an519_bl2,
+    "fvp_mps4_cs315_bl1_bl2": fvp_mps4_cs315_bl1_bl2,
     "fvp_corstone1000": fvp_corstone1000,
     "fvp_rse_tc": fvp_rse_tc,
     "qemu_mps2_bl2": qemu_mps2_bl2,