Corstone1000 FVP integration in OpenCI

FVP boots and runs regression test.

Protected storage regression is disabled as few test
cases are failing in the platform.

Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
Change-Id: I74d62cb06415e1b1fe905aa4cfd41b0fabb55de0
diff --git a/build_helper/build_helper_configs.py b/build_helper/build_helper_configs.py
index 12db50c..d9282b7 100755
--- a/build_helper/build_helper_configs.py
+++ b/build_helper/build_helper_configs.py
@@ -89,6 +89,18 @@
                                          "-fill 0xFF 0xA020000 0xA200000 "
                                          "-o %(_tbm_build_dir_)s/bin/"
                                          "tfm.hex -Intel")],
+                   "arm/corstone1000": [("cat "
+                                         "%(_tbm_build_dir_)s/bin/"
+                                         "bl2_signed.bin "
+                                         "%(_tbm_build_dir_)s/bin/"
+                                         "bl2_signed.bin "
+                                         "%(_tbm_build_dir_)s/bin/"
+                                         "tfm_s_signed.bin "
+                                         "%(_tbm_build_dir_)s/bin/"
+                                         "tfm_s_signed.bin "
+                                         "> "
+                                         "%(_tbm_build_dir_)s/bin/"
+                                         "flash.bin")],
                    "arm/musca_s1": [("srec_cat "
                                  "%(_tbm_build_dir_)s/bin/"
                                  "bl2.bin "
@@ -692,7 +704,7 @@
                 "compiler":         ["GCC_7_3_1"],
                 "lib_model":        [False],
                 "isolation_level":  ["1"],
-                "test_regression":  [False],
+                "test_regression":  [True],
                 "test_psa_api":     ["OFF"],
                 "cmake_build_type": ["Debug"],
                 "with_bl2":         [True],
diff --git a/jenkins/ci.jpl b/jenkins/ci.jpl
index e1ed300..ec34b99 100644
--- a/jenkins/ci.jpl
+++ b/jenkins/ci.jpl
@@ -252,6 +252,11 @@
                      env.JOB_NAME.equals("tf-m-build-and-test")) {
               print("LAVA is not needed for ${build_url}")
             }
+            // LAVA tests on Corstone1000 FPGA config is not supported
+            else if (params_collection["TFM_PLATFORM"].contains("corstone1000") && \
+                     params_collection["EXTRA_PARAMS"].contains("FPGA")) {
+              print("LAVA is not needed for ${build_url}")
+            }
             // Submit LAVA tests
             else {
               submit_lava_tests(config, results, build_res, params, params_collection)
diff --git a/lava_helper/jinja2_templates/fvp_corstone1000.jinja2 b/lava_helper/jinja2_templates/fvp_corstone1000.jinja2
new file mode 100644
index 0000000..3eebf42
--- /dev/null
+++ b/lava_helper/jinja2_templates/fvp_corstone1000.jinja2
@@ -0,0 +1,77 @@
+{#------------------------------------------------------------------------------
+# Copyright (c) 2018-2022, 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:
+      app:
+        url: {{ application_url }}
+      data:
+        url: {{ data_url }}
+- boot:
+    failure_retry: 3
+    namespace: docker
+    method: fvp
+    docker:
+      name: {{ docker_prefix }}/fvp:fvp_corstone_1000_11.17_23
+      local: true
+    prompts:
+    - 'root@lava '
+    image: /opt/model/FVP_Corstone_1000/models/Linux64_GCC-9.3/FVP_Corstone-1000
+    timeout:
+      minutes: 5
+    console_string: 'secenc_terminal: Listening for serial connection on port (?P<PORT>\d+)'
+    license_variable: '{{ license_variable }}'
+    use_telnet: True
+    arguments:
+    -  "-C se.trustedBootROMloader.fname=\"{APP}\""
+    -  "-C board.flashloader0.fname=\"none\""
+    -  "-C board.xnvm_size=64"
+    -  "-C se.trustedSRAM_config=6"
+    -  "-C se.BootROM_config=\"3\""
+    -  "-C board.smsc_91c111.enabled=0"
+    -  "-C board.hostbridge.userNetworking=true"
+    -  "--data board.flash0={DATA}@{{ data_bin_offset }}"
+    -  "-C diagnostics=4"
+    -  "-C disable_visualisation=true"
+    -  "-C board.se_flash_size=8192"
+    -  "-C se.secenc_terminal.start_telnet=1"
+    -  "-C extsys0.extsys_terminal.start_telnet=0"
+    -  "-C host.host_terminal_0.start_telnet=1"
+    -  "-C host.host_terminal_1.start_telnet=1"
+    prompts:
+    - '(.*)'
+
+- test:
+    namespace: target
+    monitors:
+    {%- for monitor in test.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 %}
+
+{% endblock %}
diff --git a/lava_helper/lava_helper_configs.py b/lava_helper/lava_helper_configs.py
index 6d51509..d1de754 100644
--- a/lava_helper/lava_helper_configs.py
+++ b/lava_helper/lava_helper_configs.py
@@ -59,10 +59,10 @@
     }
 ]
 
-# LAVA test-monitor definition for configs with regression tests.
+# LAVA test-monitor definitions for configs with regression tests.
 # Results of each test case is parsed separately, capturing test case id.
 # Works across any test suites enabled.
-monitors_reg_tests = [
+monitors_ns_reg_tests = [
     {
         'name': 'regression_suite',
         'start': 'Execute test suites',
@@ -71,6 +71,15 @@
         'fixup': {"pass": "PASSED", "fail": "FAILED", "skip": "SKIPPED"},
     },
 ]  # Monitors
+monitors_s_reg_tests = [
+    {
+        'name': 'regression_suite',
+        'start': 'Execute test suites',
+        'end': 'End of Secure test suites',
+        'pattern': r"TEST: (?P<test_case_id>.+?) - (?P<result>(PASSED|FAILED|SKIPPED))",
+        'fixup': {"pass": "PASSED", "fail": "FAILED", "skip": "SKIPPED"},
+    },
+]  # Monitors
 
 # LAVA test-monitor definition for PSA API testsuites, testcases identified
 # by "UT" value in output (testcase identifier).
@@ -149,25 +158,25 @@
             "monitors": monitors_no_reg_tests
         },  # DefaultProfileL
         'Regression': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionProfileM': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileM
         'RegressionProfileS': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileS
         'RegressionProfileL': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileL
         'RegressionIPC': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel2': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel3': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'CoreIPC': {
             "monitors": monitors_no_reg_tests
@@ -242,16 +251,16 @@
             "monitors": monitors_no_reg_tests
         },  # Default
         'Regression': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPC': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel2': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel3': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'CoreIPC': {
             "monitors": monitors_no_reg_tests
@@ -266,6 +275,32 @@
     }  # Tests
 }
 
+# FVP with BL1 and BL2 bootloader
+fvp_corstone1000 = {
+    "templ": "fvp_corstone1000.jinja2",
+    "job_name": "fvp_corstone1000",
+    "device_type": "fvp",
+    "job_timeout": 15,
+    "action_timeout": 10,
+    "monitor_timeout": 15,
+    "poweroff_timeout": 1,
+    "platforms": {"corstone1000": ""},
+    "compilers": ["GCC"],
+    "build_types": ["Debug"],
+    "boot_types": ["BL2"],
+    "data_bin_offset": "0x68100000",
+    "binaries": {
+        "application": "bl1.bin",
+        "data": "flash.bin"
+    },
+       "tests": {
+        'RegressionIPC': {
+            "monitors": monitors_s_reg_tests
+        },  # Regression
+
+    }  # Tests
+}
+
 # FVP with BL2 bootloader
 # application: --application cpu0=bl2.axf
 # data: --data cpu0=tfm_s_ns_signed.bin@0x10080000
@@ -300,25 +335,25 @@
             "monitors": monitors_no_reg_tests
         },  # DefaultProfileL
         'Regression': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionProfileM': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileM
         'RegressionProfileS': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileS
         'RegressionProfileL': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileL
         'RegressionIPC': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel2': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel3': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'CoreIPC': {
             "monitors": monitors_no_reg_tests
@@ -413,25 +448,25 @@
             "monitors": monitors_no_reg_tests
         },  # DefaultProfileL
         'Regression': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionProfileM': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileM
         'RegressionProfileS': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileS
         'RegressionProfileL': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileL
         'RegressionIPC': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionIPC
         'RegressionIPCTfmLevel2': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionIPCTfmLevel2
         'RegressionIPCTfmLevel3': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionIPCTfmLevel3
         'CoreIPC': {
             "monitors": monitors_no_reg_tests
@@ -486,19 +521,19 @@
             "monitors": monitors_no_reg_tests
         },  # DefaultProfileM
         'Regression': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionProfileM': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileM
         'RegressionProfileS': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileS
         'RegressionIPC': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel2': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'CoreIPC': {
             "monitors": monitors_no_reg_tests
@@ -542,19 +577,19 @@
             "monitors": monitors_no_reg_tests
         },  # DefaultProfileM
         'Regression': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionProfileM': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileM
         'RegressionProfileS': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileS
         'RegressionIPC': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionIPC
         'RegressionIPCTfmLevel2': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionIPCTfmLevel2
         'CoreIPC': {
             "monitors": monitors_no_reg_tests
@@ -584,19 +619,19 @@
     },
     "tests": {
         'Regression': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionProfileS': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # RegressionProfileS
         'RegressionIPC': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel2': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
         'RegressionIPCTfmLevel3': {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },  # Regression
     }
 }
@@ -640,22 +675,22 @@
             "monitors": monitors_no_reg_tests
         },
         "Regression": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPC": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPCTfmLevel2": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPCTfmLevel3": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionProfileM": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionProfileS": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
     },
 }
@@ -678,16 +713,16 @@
     },
     "tests": {
         "Regression": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPC": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPCTfmLevel2": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPCTfmLevel3": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
     },
 }
@@ -713,7 +748,7 @@
             "monitors": monitors_no_reg_tests
         },
         "RegressionProfileM": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
     }
 }
@@ -737,16 +772,16 @@
     },
     "tests": {
         "Regression": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPC": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPCTfmLevel2": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
         "RegressionIPCTfmLevel3": {
-            "monitors": monitors_reg_tests
+            "monitors": monitors_ns_reg_tests
         },
     },
 }
@@ -755,6 +790,7 @@
 lava_gen_config_map = {
     "mps2_an521_bl2": tfm_mps2_sse_200,
     "fvp_mps3_an552_bl2": fvp_mps3_an552_bl2,
+    "fvp_corstone1000": fvp_corstone1000,
     "fvp_mps2_an521_bl2": fvp_mps2_an521_bl2,
     "fvp_mps2_an521_nobl2": fvp_mps2_an521_nobl2,
     "fvp_mps2_an519_bl2": fvp_mps2_an519_bl2,