Sync model scripts with internal CI
Sync model scripts with open-ci patch:
539c151d0cd99a5e6ca6c0e6966f6d8579fe864e
Signed-off-by: Zelalem <zelalem.aweke@arm.com>
Change-Id: I0d28301c86b8efd633a5ff31e548e2bfb81507a7
diff --git a/model/base-aemv8a-common.sh b/model/base-aemv8a-common.sh
deleted file mode 100644
index 8b5a59e..0000000
--- a/model/base-aemv8a-common.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2019, Arm Limited. All rights reserved.
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-
-reset_var cluster_0_has_el2
-reset_var cluster_1_has_el2
-
-reset_var cluster_0_reg_reset
-reset_var cluster_1_reg_reset
-
-reset_var cluster_0_num_cores
-reset_var cluster_1_num_cores
-
-reset_var aarch64_only
-reset_var aarch32
-
-reset_var gicv3_gicv2_only
-
-reset_var sve_plugin
-
-source "$ci_root/model/fvp_common.sh"
-
-cat <<EOF >>"$model_param_file"
-
-${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
-${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
-
-${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
-${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
-
-${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
-${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
-${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
-${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
-${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
-${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
-${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
-${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
-
-${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
-${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
-${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
-${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
-${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
-${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
-${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
-${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
-
-${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
-${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
-
-${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
-
-${aarch64_only+-C cluster0.max_32bit_el=-1}
-${aarch64_only+-C cluster1.max_32bit_el=-1}
-
-${aarch32+-C cluster0.cpu0.CONFIG64=0}
-${aarch32+-C cluster0.cpu1.CONFIG64=0}
-${aarch32+-C cluster0.cpu2.CONFIG64=0}
-${aarch32+-C cluster0.cpu3.CONFIG64=0}
-${aarch32+-C cluster1.cpu0.CONFIG64=0}
-${aarch32+-C cluster1.cpu1.CONFIG64=0}
-${aarch32+-C cluster1.cpu2.CONFIG64=0}
-${aarch32+-C cluster1.cpu3.CONFIG64=0}
-
-${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
-
-${sve_plugin+--plugin=$sve_plugin_path}
-${sve_plugin+-C SVE.ScalableVectorExtension.enable_at_reset=0}
-${sve_plugin+-C SVE.ScalableVectorExtension.veclen=$((128 / 8))}
-
-${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
-${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
-${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
-${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
-${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
-${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
-${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
-${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
-EOF
-
-# Parameters to select architecture version
-if [ "$arch_version" = "8.3" ]; then
- cat <<EOF >>"$model_param_file"
--C cluster0.has_arm_v8-3=1
--C cluster1.has_arm_v8-3=1
-EOF
-fi
-
-if [ "$arch_version" = "8.4" ]; then
- cat <<EOF >>"$model_param_file"
--C cluster0.has_arm_v8-4=1
--C cluster1.has_arm_v8-4=1
-EOF
-fi
-
-# Parameters for fault injection
-if [ "$fault_inject" = "1" ]; then
- cat <<EOF >>"$model_param_file"
--C cluster0.number_of_error_records=2
--C cluster1.number_of_error_records=2
--C cluster0.has_ras=2
--C cluster1.has_ras=2
-
--C cluster0.error_record_feature_register='{"INJ":0x1,"ED":0x1,"UI":0x0,"FI":0x0,"UE":0x1,"CFI":0x0,"CEC":0x0,"RP":0x0,"DUI":0x0,"CEO":0x0}'
--C cluster1.error_record_feature_register='{"INJ":0x1,"ED":0x1,"UI":0x0,"FI":0x0,"UE":0x1,"CFI":0x0,"CEC":0x0,"RP":0x0,"DUI":0x0,"CEO":0x0}'
--C cluster0.pseudo_fault_generation_feature_register='{"UC":true,"UEU":true,"UER":false,"UEO":false,"DE":false,"CE":false,"R":false}'
--C cluster1.pseudo_fault_generation_feature_register='{"UC":true,"UEU":true,"UER":false,"UEO":false,"DE":false,"CE":false,"R":false}'
-EOF
-fi
diff --git a/model/base-aemv8a-latest-revb.sh b/model/base-aemv8a-latest-revb.sh
index df5bd93..64688de 100644
--- a/model/base-aemv8a-latest-revb.sh
+++ b/model/base-aemv8a-latest-revb.sh
@@ -5,8 +5,10 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/0.8/9810/models/Linux64_GCC-4.9/FVP_Base_AEMv8A-AEMv8A"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_AEMv8A-AEMv8A"
-default_var sve_plugin_path "$warehouse/SysGen/ShojiPlugin/0.8/9905/hpc-00rel3/Linux64_GCC-4.9/ScalableVectorExtension.so"
+default_var sve_plugin_path "$warehouse/SysGen/ShojiPlugin/$model_version/$model_build/v9.0-00bet4/$model_flavour/ScalableVectorExtension.so"
-source "$ci_root/model/base-aemv8a-common.sh"
+default_var is_dual_cluster 1
+
+source "$ci_root/model/base-aemva-common.sh"
diff --git a/model/base-aemv8a-quad.sh b/model/base-aemv8a-quad.sh
new file mode 100644
index 0000000..9dfeb4b
--- /dev/null
+++ b/model/base-aemv8a-quad.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+#
+# Copyright (c) 2019, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_AEMv8A-AEMv8A-AEMv8A-AEMv8A-CCN502"
+
+default_var cluster_0_num_cores 4
+default_var cluster_1_num_cores 4
+default_var cluster_2_num_cores 4
+default_var cluster_3_num_cores 4
+
+reset_var gicv3_gicv2_only
+
+reset_var aarch64_only
+
+source "$ci_root/model/fvp_common.sh"
+
+cat <<EOF >>"$model_param_file"
+
+${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
+${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
+${cluster_2_num_cores+-C cluster2.NUM_CORES=$cluster_2_num_cores}
+${cluster_3_num_cores+-C cluster3.NUM_CORES=$cluster_3_num_cores}
+
+${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster2.cpu0.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster2.cpu1.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster2.cpu2.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster2.cpu3.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster3.cpu0.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster3.cpu1.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster3.cpu2.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster3.cpu3.RVBAR=${bl31_addr:?}}
+
+${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
+
+${aarch64_only+-C cluster2.max_32bit_el=-1}
+${aarch64_only+-C cluster3.max_32bit_el=-1}
+
+${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
+
+EOF
diff --git a/model/base-aemv8a-revb.sh b/model/base-aemv8a-revb.sh
index 01bf771..3e9a174 100644
--- a/model/base-aemv8a-revb.sh
+++ b/model/base-aemv8a-revb.sh
@@ -6,8 +6,10 @@
#
# Use revb model
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_AEMv8A-AEMv8A"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_AEMv8A-AEMv8A"
-default_var sve_plugin_path "$warehouse/SysGen/ShojiPlugin/$model_version/$model_build/hpc-00rel4_1/Linux64_GCC-4.9/ScalableVectorExtension.so"
+default_var sve_plugin_path "$warehouse/SysGen/ShojiPlugin/$model_version/$model_build/v9.0-00bet4/$model_flavour/ScalableVectorExtension.so"
-source "$ci_root/model/base-aemv8a-common.sh"
+default_var is_dual_cluster 1
+
+source "$ci_root/model/base-aemva-common.sh"
diff --git a/model/base-aemv8a.sh b/model/base-aemv8a.sh
index bf4d7d1..305613f 100644
--- a/model/base-aemv8a.sh
+++ b/model/base-aemv8a.sh
@@ -1,13 +1,23 @@
#!/bin/bash
#
-# Copyright (c) 2019, Arm Limited. All rights reserved.
+# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# Use revc model
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_RevC-2xAEMv8A"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_RevC-2xAEMv8A"
-default_var sve_plugin_path "$warehouse/SysGen/ShojiPlugin/$model_version/$model_build/hpc-00rel5/Linux64_GCC-4.9/ScalableVectorExtension.so"
+default_var sve_plugin_path "$warehouse/SysGen/ShojiPlugin/$model_version/$model_build/v9.0-00bet4/$model_flavour/ScalableVectorExtension.so"
-source "$ci_root/model/base-aemv8a-common.sh"
+default_var is_dual_cluster 1
+
+source "$ci_root/model/base-aemva-common.sh"
+
+# Base address for each redistributor
+if [ "$gicd_virtual_lpi" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+-C gic_distributor.reg-base-per-redistributor=0.0.0.0=0x2f100000,0.0.1.0=0x2f140000,0.0.2.0=0x2f180000,0.0.3.0=0x2f1c0000,0.1.0.0=0x2f200000,0.1.1.0=0x2f240000,0.1.2.0=0x2f280000,0.1.3.0=0x2f2c0000
+-C gic_distributor.print-memory-map=1
+EOF
+fi
diff --git a/model/base-aemva-common.sh b/model/base-aemva-common.sh
new file mode 100644
index 0000000..00cc756
--- /dev/null
+++ b/model/base-aemva-common.sh
@@ -0,0 +1,241 @@
+#!/bin/bash
+#
+# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+reset_var cluster_0_has_el2
+reset_var cluster_1_has_el2
+
+reset_var cluster_0_reg_reset
+reset_var cluster_1_reg_reset
+
+reset_var cluster_0_num_cores
+reset_var cluster_1_num_cores
+
+reset_var aarch64_only
+reset_var aarch32
+
+#------------ GIC configuration --------------
+
+# GICv2 compatibility is not supported and GICD_CTLR.ARE_* is always one
+reset_var gicd_are_fixed_one
+
+# Number of extended PPI supported: Default 0, Maximum 64
+reset_var gicd_ext_ppi_count
+
+# Number of extended SPI supported: Default 0, Maximum 1024
+reset_var gicd_ext_spi_count
+
+# Number of Interrupt Translation Services to be instantiated (0=none)
+reset_var gicd_its_count
+
+# GICv4 Virtual LPIs and Direct injection of Virtual LPIs supported
+reset_var gicd_virtual_lpi
+
+# Device has support for extended SPI/PPI ID ranges
+reset_var gicv3_ext_interrupt_range
+
+# When using the GICv3 model, pretend to be a GICv2 system
+reset_var gicv3_gicv2_only
+
+# Number of SPIs that are implemented: Default 224, Maximum 988
+reset_var gicv3_spi_count
+
+# Enable GICv4.1 functionality
+reset_var has_gicv4_1
+
+reset_var sve_plugin
+
+reset_var bmcov_plugin
+
+reset_var retain_flash
+
+reset_var nvcounter_version
+reset_var nvcounter_diag
+
+source "$ci_root/model/fvp_common.sh"
+
+#------------ Common configuration --------------
+
+cat <<EOF >>"$model_param_file"
+${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
+${gicv3_spi_count+-C gic_distributor.SPI-count=$gicv3_spi_count}
+${gicd_are_fixed_one+-C gic_distributor.ARE-fixed-to-one=$gicd_are_fixed_one}
+${gicd_ext_ppi_count+-C gic_distributor.extended-ppi-count=$gicd_ext_ppi_count}
+${gicd_ext_spi_count+-C gic_distributor.extended-spi-count=$gicd_ext_spi_count}
+${gicd_its_count+-C gic_distributor.ITS-count=$gicd_its_count}
+${gicd_virtual_lpi+-C gic_distributor.virtual-lpi-support=$gicd_virtual_lpi}
+${has_gicv4_1+-C has-gicv4.1=$has_gicv4_1}
+
+${sve_plugin+--plugin=$sve_plugin_path}
+${sve_plugin+-C SVE.ScalableVectorExtension.enable_at_reset=0}
+${sve_plugin+-C SVE.ScalableVectorExtension.veclen=$((128 / 8))}
+
+${bmcov_plugin+--plugin=$bmcov_plugin_path}
+
+${nvcounter_version+-C bp.trusted_nv_counter.version=$nvcounter_version}
+${nvcounter_diag+-C bp.trusted_nv_counter.diagnostics=$nvcounter_diag}
+EOF
+
+# TFTF Reboot/Shutdown tests
+if [ "$retain_flash" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+-C bp.flashloader1.fname=$flashloader1_fwrite
+-C bp.flashloader1.fnameWrite=$flashloader1_fwrite
+-C bp.flashloader0.fnameWrite=$flashloader0_fwrite
+-C bp.pl011_uart0.untimed_fifos=1
+-C bp.ve_sysregs.mmbSiteDefault=0
+EOF
+fi
+
+#------------ Cluster0 configuration --------------
+
+cat <<EOF >>"$model_param_file"
+${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
+
+${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
+
+${amu_present+-C cluster0.has_amu=$amu_present}
+
+${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
+
+${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
+${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
+${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
+${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
+
+${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
+
+${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
+
+${aarch64_only+-C cluster0.max_32bit_el=-1}
+
+${aarch32+-C cluster0.cpu0.CONFIG64=0}
+${aarch32+-C cluster0.cpu1.CONFIG64=0}
+${aarch32+-C cluster0.cpu2.CONFIG64=0}
+${aarch32+-C cluster0.cpu3.CONFIG64=0}
+
+
+${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
+${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
+${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
+${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
+
+${memory_tagging_support_level+-C cluster0.memory_tagging_support_level=$memory_tagging_support_level}
+
+${gicv3_ext_interrupt_range+-C cluster0.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
+EOF
+
+# Parameters to select architecture version
+if [ "$arch_version" = "8.3" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster0.has_arm_v8-3=1
+EOF
+fi
+
+if [ "$arch_version" = "8.4" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster0.has_arm_v8-4=1
+EOF
+fi
+
+if [ "$arch_version" = "8.5" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster0.has_arm_v8-5=1
+EOF
+fi
+
+if [ "$arch_version" = "8.6" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster0.has_arm_v8-6=1
+EOF
+fi
+
+# Parameters for fault injection
+if [ "$fault_inject" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster0.number_of_error_records=2
+-C cluster0.has_ras=2
+-C cluster0.error_record_feature_register='{"INJ":0x1,"ED":0x1,"UI":0x0,"FI":0x0,"UE":0x1,"CFI":0x0,"CEC":0x0,"RP":0x0,"DUI":0x0,"CEO":0x0}'
+-C cluster0.pseudo_fault_generation_feature_register='{"OF":false,"CI":false,"ER":false,"PN":false,"AV":false,"MV":false,"SYN":false,"UC":true,"UEU":true,"UER":false,"UEO":false,"DE":false,"CE":0,"R":false}'
+EOF
+fi
+
+#------------ Cluster1 configuration (if exists) --------------
+if [ "$is_dual_cluster" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
+
+${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
+
+${amu_present+-C cluster1.has_amu=$amu_present}
+
+${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
+${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
+
+${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
+${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
+${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
+${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
+
+${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
+
+${aarch64_only+-C cluster1.max_32bit_el=-1}
+
+${aarch32+-C cluster1.cpu0.CONFIG64=0}
+${aarch32+-C cluster1.cpu1.CONFIG64=0}
+${aarch32+-C cluster1.cpu2.CONFIG64=0}
+${aarch32+-C cluster1.cpu3.CONFIG64=0}
+
+${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
+${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
+${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
+${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
+
+${memory_tagging_support_level+-C cluster1.memory_tagging_support_level=$memory_tagging_support_level}
+
+${gicv3_ext_interrupt_range+-C cluster1.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
+EOF
+
+# Parameters to select architecture version
+if [ "$arch_version" = "8.3" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster1.has_arm_v8-3=1
+EOF
+fi
+
+if [ "$arch_version" = "8.4" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster1.has_arm_v8-4=1
+EOF
+fi
+
+if [ "$arch_version" = "8.5" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster1.has_arm_v8-5=1
+EOF
+fi
+
+if [ "$arch_version" = "8.6" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster1.has_arm_v8-6=1
+EOF
+fi
+
+# Parameters for fault injection
+if [ "$fault_inject" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+-C cluster1.number_of_error_records=2
+-C cluster1.has_ras=2
+-C cluster1.error_record_feature_register='{"INJ":0x1,"ED":0x1,"UI":0x0,"FI":0x0,"UE":0x1,"CFI":0x0,"CEC":0x0,"RP":0x0,"DUI":0x0,"CEO":0x0}'
+-C cluster1.pseudo_fault_generation_feature_register='{"OF":false,"CI":false,"ER":false,"PN":false,"AV":false,"MV":false,"SYN":false,"UC":true,"UEU":true,"UER":false,"UEO":false,"DE":false,"CE":0,"R":false}'
+EOF
+fi
+fi
diff --git a/model/base-aemva.sh b/model/base-aemva.sh
new file mode 100644
index 0000000..7bea9cc
--- /dev/null
+++ b/model/base-aemva.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+#
+# Copyright (c) 2019, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_AEMvA"
+
+default_var sve_plugin_path "$warehouse/SysGen/ShojiPlugin/$model_version/$model_build/v9.0-00bet4/$model_flavour/ScalableVectorExtension.so"
+
+default_var is_dual_cluster 0
+
+source "$ci_root/model/base-aemva-common.sh"
diff --git a/model/cortex-a32x4.sh b/model/cortex-a32x4.sh
index d7d49e8..3296b16 100644
--- a/model/cortex-a32x4.sh
+++ b/model/cortex-a32x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A32x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A32x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a35x4.sh b/model/cortex-a35x4.sh
index ac4d93b..5f95339 100644
--- a/model/cortex-a35x4.sh
+++ b/model/cortex-a35x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A35x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A35x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a53x4.sh b/model/cortex-a53x4.sh
index 844ed02..c953437 100644
--- a/model/cortex-a53x4.sh
+++ b/model/cortex-a53x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A53x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A53x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a55x4-a75x4.sh b/model/cortex-a55x4-a75x4.sh
index ba751d4..707e9ff 100644
--- a/model/cortex-a55x4-a75x4.sh
+++ b/model/cortex-a55x4-a75x4.sh
@@ -5,6 +5,6 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A55x4+Cortex-A75x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A55x4+Cortex-A75x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a55x4-a76x2.sh b/model/cortex-a55x4-a76x2.sh
new file mode 100644
index 0000000..770987a
--- /dev/null
+++ b/model/cortex-a55x4-a76x2.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+#
+# Copyright (c) 2019, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A55x4+Cortex-A76x2"
+
+source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a55x4.sh b/model/cortex-a55x4.sh
index 90979a9..0a4b619 100644
--- a/model/cortex-a55x4.sh
+++ b/model/cortex-a55x4.sh
@@ -5,6 +5,6 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A55x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A55x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a57x1-a53x1.sh b/model/cortex-a57x1-a53x1.sh
index e698245..f046b2a 100644
--- a/model/cortex-a57x1-a53x1.sh
+++ b/model/cortex-a57x1-a53x1.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A57x1-A53x1"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A57x1-A53x1"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a57x2-a53x4.sh b/model/cortex-a57x2-a53x4.sh
index b814ed3..024c8de 100644
--- a/model/cortex-a57x2-a53x4.sh
+++ b/model/cortex-a57x2-a53x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A57x2-A53x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A57x2-A53x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a57x4-a53x4.sh b/model/cortex-a57x4-a53x4.sh
index b641285..fd5e277 100644
--- a/model/cortex-a57x4-a53x4.sh
+++ b/model/cortex-a57x4-a53x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A57x4-A53x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A57x4-A53x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a57x4.sh b/model/cortex-a57x4.sh
index 16ad9aa..2b5b73c 100644
--- a/model/cortex-a57x4.sh
+++ b/model/cortex-a57x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A57x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A57x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a65aex8.sh b/model/cortex-a65aex8.sh
new file mode 100644
index 0000000..5ae60bf
--- /dev/null
+++ b/model/cortex-a65aex8.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+#
+# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A65AEx8"
+
+source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a65x4.sh b/model/cortex-a65x4.sh
new file mode 100644
index 0000000..dd0dc30
--- /dev/null
+++ b/model/cortex-a65x4.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+#
+# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "/$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A65x4"
+
+source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a72x4-a53x4.sh b/model/cortex-a72x4-a53x4.sh
index c7524bc..d0d0c7c 100644
--- a/model/cortex-a72x4-a53x4.sh
+++ b/model/cortex-a72x4-a53x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A72x4-A53x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A72x4-A53x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a72x4.sh b/model/cortex-a72x4.sh
index 0c69ad2..609c183 100644
--- a/model/cortex-a72x4.sh
+++ b/model/cortex-a72x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A72x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A72x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a73x4-a53x4.sh b/model/cortex-a73x4-a53x4.sh
index c4490fa..9ce32cd 100644
--- a/model/cortex-a73x4-a53x4.sh
+++ b/model/cortex-a73x4-a53x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A73x4-A53x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A73x4-A53x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a73x4.sh b/model/cortex-a73x4.sh
index 2cbb7af..802def2 100644
--- a/model/cortex-a73x4.sh
+++ b/model/cortex-a73x4.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A73x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A73x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a75x4.sh b/model/cortex-a75x4.sh
index b4629fb..b075d9f 100644
--- a/model/cortex-a75x4.sh
+++ b/model/cortex-a75x4.sh
@@ -5,6 +5,6 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A75x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A75x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a76aex4.sh b/model/cortex-a76aex4.sh
new file mode 100644
index 0000000..4de43bb
--- /dev/null
+++ b/model/cortex-a76aex4.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+#
+# Copyright (c) 2019, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A76AEx4"
+
+source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a76x4.sh b/model/cortex-a76x4.sh
index 2d9dc40..635fbf0 100644
--- a/model/cortex-a76x4.sh
+++ b/model/cortex-a76x4.sh
@@ -5,6 +5,6 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Cortex-A76x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A76x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/cortex-a77x4.sh b/model/cortex-a77x4.sh
new file mode 100644
index 0000000..3173abe
--- /dev/null
+++ b/model/cortex-a77x4.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+#
+# Copyright (c) 2019, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Cortex-A77x4"
+
+source "$ci_root/model/fvp_common.sh"
diff --git a/model/css-rde1edge.sh b/model/css-rde1edge.sh
index e397b75..84c0a12 100644
--- a/model/css-rde1edge.sh
+++ b/model/css-rde1edge.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "/arm/projectscratch/ssg/trusted-fw/models/0.0_5137/FVP_RD_E1_edge"
+set_model_path "$warehouse/SysGen/SubSystemModels/$model_version/$model_build/models/$model_flavour/FVP_RD_E1_edge"
cat <<EOF >"$model_param_file"
-C board.flashloader0.fname=$fip_bin
diff --git a/model/css-rdn1edge.sh b/model/css-rdn1edge.sh
index 9221ddd..3c994ee 100644
--- a/model/css-rdn1edge.sh
+++ b/model/css-rdn1edge.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/SubSystemModels/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_RD_N1_edge"
+set_model_path "$warehouse/SysGen/SubSystemModels/11.10/36/models/Linux64_GCC-6.4/FVP_RD_N1_edge"
cat <<EOF >"$model_param_file"
-C board.flashloader0.fname=$fip_bin
diff --git a/model/css-sgi575.sh b/model/css-sgi575.sh
index 23566ba..89bbc78 100644
--- a/model/css-sgi575.sh
+++ b/model/css-sgi575.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "${pinned_css:?}/FVP_CSS_SGI-575"
+set_model_path "$warehouse/SysGen/SubSystemModels/11.10/36/models/Linux64_GCC-6.4/FVP_CSS_SGI-575"
cat <<EOF >"$model_param_file"
-C board.flashloader0.fname=$fip_bin
diff --git a/model/css-sgm775.sh b/model/css-sgm775.sh
index ba5bcc2..e8fa9f5 100644
--- a/model/css-sgm775.sh
+++ b/model/css-sgm775.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "${pinned_css:?}/FVP_CSS_SGM-775"
+set_model_path "$warehouse/SysGen/SubSystemModels/$model_version/$model_build/models/$model_flavour/FVP_CSS_SGM-775"
cat <<EOF >"$model_param_file"
${bl1_bin+-C css.trustedBootROMloader.fname=$bl1_bin}
@@ -20,4 +20,5 @@
${uart1_out+-C soc.pl011_uart1.unbuffered_output=1}
-C config_id=0
-C displayController=2
+-C css.cache_state_modelled=1
EOF
diff --git a/model/foundationv8.sh b/model/foundationv8.sh
index d4b8def..40b41e8 100644
--- a/model/foundationv8.sh
+++ b/model/foundationv8.sh
@@ -5,7 +5,7 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/Foundation_Platform"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/Foundation_Platform"
default_var ncores 4
default_var quantum 1000
@@ -24,4 +24,5 @@
--gicv3
--quantum=$quantum
${arch_version+--arm-v$arch_version}
+${bmcov_plugin+--plugin=$bmcov_plugin_path}
EOF
diff --git a/model/fvp_common.sh b/model/fvp_common.sh
index eb92f65..f2baf40 100644
--- a/model/fvp_common.sh
+++ b/model/fvp_common.sh
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2019, Arm Limited. All rights reserved.
+# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
@@ -9,8 +9,10 @@
default_var pctl_startup 0.0.0.0
default_var quantum 1000
+default_var data_instance cluster0.cpu0
+default_var cache_state_modelled 1
+default_var print_stat 1
-reset_var cache_state_modelled
reset_var has_bl1
reset_var has_fip
reset_var preload_bl33
@@ -38,39 +40,46 @@
${secure_ram_fill+-C bp.secureSRAM.fill1=0x00000000}
${secure_ram_fill+-C bp.secureSRAM.fill2=0x00000000}
-${bl2_at_el3+--data cluster0.cpu0=$bl2_bin@${bl2_addr:?}}
+${bl2_at_el3+--data ${data_instance}=$bl2_bin@${bl2_addr:?}}
-${reset_to_bl31+--data cluster0.cpu0=$bl31_bin@${bl31_addr:?}}
-${preload_bl33+--data cluster0.cpu0=$preload_bl33_bin@${bl33_addr:?}}
+${reset_to_bl31+--data ${data_instance}=$bl31_bin@${bl31_addr:?}}
+${preload_bl33+--data ${data_instance}=$preload_bl33_bin@${bl33_addr:?}}
-${reset_to_spmin+--data cluster0.cpu0=$bl32_bin@${bl32_addr:?}}
-${reset_to_spmin+--data cluster0.cpu0=$uboot_bin@${bl33_addr:?}}
+${reset_to_spmin+--data ${data_instance}=$bl32_bin@${bl32_addr:?}}
+${reset_to_spmin+--data ${data_instance}=$uboot_bin@${bl33_addr:?}}
-${memprotect+--data cluster0.cpu0=$memprotect@${memprotect_addr:?}}
-${romlib_bin+--data cluster0.cpu0=$romlib_bin@${romlib_addr:?}}
+${memprotect+--data ${data_instance}=$memprotect@${memprotect_addr:?}}
+${romlib_bin+--data ${data_instance}=$romlib_bin@${romlib_addr:?}}
${has_bl1+-C bp.secureflashloader.fname=$bl1_bin}
${has_fip+-C bp.flashloader0.fname=$fip_bin}
-${dtb_bin+--data cluster0.cpu0=$dtb_bin@${dtb_addr:?}}
-${kernel_bin+--data cluster0.cpu0=$kernel_bin@${kernel_addr:?}}
-${initrd_bin+--data cluster0.cpu0=$initrd_bin@${initrd_addr:?}}
+${dtb_bin+--data ${data_instance}=$dtb_bin@${dtb_addr:?}}
+${kernel_bin+--data ${data_instance}=$kernel_bin@${kernel_addr:?}}
+${initrd_bin+--data ${data_instance}=$initrd_bin@${initrd_addr:?}}
${spm_bin+--data ${data_instance}=$spm_bin@${spm_addr:?}}
${spmc_manifest+--data ${data_instance}=$spmc_manifest@${spmc_manifest_addr:?}}
${sp1_pkg+--data ${data_instance}=$sp1_pkg@${sp1_addr:?}}
${sp2_pkg+--data ${data_instance}=$sp2_pkg@${sp2_addr:?}}
-${ns_bl1u_bin+--data cluster0.cpu0=$ns_bl1u_bin@$ns_bl1u_addr}
-${fwu_fip_bin+--data cluster0.cpu0=$fwu_fip_bin@$fwu_fip_addr}
-${backup_fip_bin+--data cluster0.cpu0=$backup_fip_bin@$backup_fip_addr}
+${ns_bl1u_bin+--data ${data_instance}=$ns_bl1u_bin@$ns_bl1u_addr}
+${fwu_fip_bin+--data ${data_instance}=$fwu_fip_bin@$fwu_fip_addr}
+${backup_fip_bin+--data ${data_instance}=$backup_fip_bin@$backup_fip_addr}
${flashloader1_bin+-C bp.flashloader1.fname=$flashloader1_bin}
${rootfs_bin+-C bp.virtioblockdevice.image_path=$rootfs_bin}
${uart0_out+-C bp.pl011_uart0.out_file=$uart0_out}
${uart0_out+-C bp.pl011_uart0.unbuffered_output=1}
+${uart1_out+-C bp.pl011_uart1.out_file=$uart1_out}
${no_quantum--Q ${quantum}}
EOF
+
+if [ "$print_stat" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+--stat
+EOF
+fi
diff --git a/model/hercules.sh b/model/hercules.sh
new file mode 100644
index 0000000..dadb4c0
--- /dev/null
+++ b/model/hercules.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Herculesx4"
+
+# Option not supported on Hercules FVP yet.
+export no_quantum=""
+
+source "$ci_root/model/fvp_common.sh"
diff --git a/model/neoverse_e1x1.sh b/model/neoverse_e1x1.sh
new file mode 100644
index 0000000..4d3c354
--- /dev/null
+++ b/model/neoverse_e1x1.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Neoverse-E1x1"
+
+source "$ci_root/model/fvp_common.sh"
+
+# Base address for each redistributor
+if [ "$gicd_virtual_lpi" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+-C gic_distributor.reg-base-per-redistributor=0.0.0.0=0x2f100000,0.0.0.1=0x2f140000
+-C gic_distributor.print-memory-map=1
+EOF
+fi
diff --git a/model/neoverse_e1x2.sh b/model/neoverse_e1x2.sh
new file mode 100644
index 0000000..175db2c
--- /dev/null
+++ b/model/neoverse_e1x2.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Neoverse-E1x2"
+
+source "$ci_root/model/fvp_common.sh"
+
+# Base address for each redistributor
+if [ "$gicd_virtual_lpi" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+-C gic_distributor.reg-base-per-redistributor=0.0.0.0=0x2f100000,0.0.0.1=0x2f140000,0.0.1.0=0x2f180000,0.0.1.1=0x2f1c0000
+-C gic_distributor.print-memory-map=1
+EOF
+fi
diff --git a/model/neoverse_e1x4.sh b/model/neoverse_e1x4.sh
new file mode 100644
index 0000000..261595f
--- /dev/null
+++ b/model/neoverse_e1x4.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Neoverse-E1x4"
+
+source "$ci_root/model/fvp_common.sh"
+
+# Base address for each redistributor
+if [ "$gicd_virtual_lpi" = "1" ]; then
+ cat <<EOF >>"$model_param_file"
+-C gic_distributor.reg-base-per-redistributor=0.0.0.0=0x2f100000,0.0.0.1=0x2f140000,0.0.1.0=0x2f180000,0.0.1.1=0x2f1c0000,0.0.2.0=0x2f200000,0.0.2.1=0x2f240000,0.0.3.0=0x2f280000,0.0.3.1=0x2f2c0000
+-C gic_distributor.print-memory-map=1
+EOF
+fi
diff --git a/model/neoverse_n1.sh b/model/neoverse_n1.sh
index 8f77e74..cbe655b 100644
--- a/model/neoverse_n1.sh
+++ b/model/neoverse_n1.sh
@@ -5,6 +5,6 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/Linux64_GCC-4.9/FVP_Base_Neoverse-N1x4"
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Neoverse-N1x4"
source "$ci_root/model/fvp_common.sh"
diff --git a/model/tc0-ports.awk b/model/tc0-ports.awk
new file mode 100644
index 0000000..56ca128
--- /dev/null
+++ b/model/tc0-ports.awk
@@ -0,0 +1,15 @@
+#
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+/terminal_s0/ { ports[0] = $NF }
+/terminal_s1/ { ports[1] = $NF }
+/terminal_uart_aon/ { ports[2] = $NF }
+END {
+ for (i = 0; i < num_uarts; i++) {
+ if (ports[i] != "")
+ print "ports[" i "]=" ports[i]
+ }
+}
diff --git a/model/tc0.sh b/model/tc0.sh
new file mode 100644
index 0000000..04576b3
--- /dev/null
+++ b/model/tc0.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright (c) 2020, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/SubSystemModels/0.0/5903/models/$model_flavour/FVP_RD_TC_2020"
+
+cat <<EOF >"$model_param_file"
+${bl1_bin+-C css.trustedBootROMloader.fname=$bl1_bin}
+${scp_romfw_bin+-C css.scp.ROMloader.fname=$scp_romfw_bin}
+${fip_bin+-C board.flashloader0.fname=$fip_bin}
+${initrd_bin+--data board.cpu=$initrd_bin@${initrd_addr:?}}
+${kernel_bin+--data board.cpu=$kernel_bin@${kernel_addr:?}}
+${uart0_out+-C soc.pl011_uart0.out_file=$uart0_out}
+${uart0_out+-C soc.pl011_uart0.unbuffered_output=1}
+${uart1_out+-C soc.pl011_uart1.out_file=$uart1_out}
+${uart1_out+-C soc.pl011_uart1.unbuffered_output=1}
+EOF
diff --git a/model/zeus.sh b/model/zeus.sh
new file mode 100644
index 0000000..2cb8b12
--- /dev/null
+++ b/model/zeus.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+#
+# Copyright (c) 2019, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+set_model_path "$warehouse/SysGen/Models/$model_version/$model_build/models/$model_flavour/FVP_Base_Zeusx4"
+
+# Option not supported on Zeus FVP yet.
+export no_quantum=""
+
+source "$ci_root/model/fvp_common.sh"