blob: bd206c021f0af1ffbb45dbf811b86143e83d25aa [file] [log] [blame]
Leonardo Sandoval9dfdd1b2020-08-06 17:08:11 -05001#!/usr/bin/env bash
Zelalemeb9c1bb2020-08-04 12:40:46 -05002#
Arvind Ram Prakashc0421882024-01-05 16:35:42 -06003# Copyright (c) 2019-2024, Arm Limited. All rights reserved.
Zelalemeb9c1bb2020-08-04 12:40:46 -05004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8reset_var cluster_0_has_el2
9reset_var cluster_1_has_el2
10
11reset_var cluster_0_reg_reset
12reset_var cluster_1_reg_reset
13
14reset_var cluster_0_num_cores
15reset_var cluster_1_num_cores
16
17reset_var aarch64_only
18reset_var aarch32
19
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -050020reset_var plat_variant
21
Federico Recanatiedf25d92022-03-02 20:54:19 +010022reset_var pa_size
23
Zelalemeb9c1bb2020-08-04 12:40:46 -050024#------------ GIC configuration --------------
25
26# GICv2 compatibility is not supported and GICD_CTLR.ARE_* is always one
27reset_var gicd_are_fixed_one
28
29# Number of extended PPI supported: Default 0, Maximum 64
30reset_var gicd_ext_ppi_count
31
32# Number of extended SPI supported: Default 0, Maximum 1024
33reset_var gicd_ext_spi_count
34
35# Number of Interrupt Translation Services to be instantiated (0=none)
36reset_var gicd_its_count
37
38# GICv4 Virtual LPIs and Direct injection of Virtual LPIs supported
39reset_var gicd_virtual_lpi
40
41# Device has support for extended SPI/PPI ID ranges
42reset_var gicv3_ext_interrupt_range
43
44# When using the GICv3 model, pretend to be a GICv2 system
45reset_var gicv3_gicv2_only
46
47# Number of SPIs that are implemented: Default 224, Maximum 988
48reset_var gicv3_spi_count
49
50# Enable GICv4.1 functionality
51reset_var has_gicv4_1
52
Govindraj Raja700a3df2024-06-12 15:10:52 -050053reset_var has_sve
Zelalemeb9c1bb2020-08-04 12:40:46 -050054
Boyan Karatotev1cc60a62022-11-01 17:00:15 +000055reset_var has_sme
56
Olivier Deprez674dcbf2024-02-15 11:30:51 +010057reset_var has_sme_fa64
58
Olivier Deprezdd0e3d12024-02-15 11:38:03 +010059reset_var sme_only
60
Jayanth Dodderi Chidanand65bb8b82023-01-12 15:18:16 +000061reset_var has_sme2
62
Zelalemeb9c1bb2020-08-04 12:40:46 -050063reset_var bmcov_plugin
64
65reset_var retain_flash
66
67reset_var nvcounter_version
68reset_var nvcounter_diag
69
Arvind Ram Prakashc0421882024-01-05 16:35:42 -060070# Enable FEAT_MPAM
71reset_var has_mpam
72
Madhukar Pappireddy024efd52020-12-31 16:45:52 -060073# Enable SMMUv3 functionality
74reset_var has_smmuv3_params
75
Zelalem Aweke773e19b2021-08-20 17:41:00 -050076# Enable FEAT_RME
77reset_var has_rme
78
Juan Pablo Conded0b527c2022-07-25 16:48:17 -040079# Enable FEAT_RNG
80reset_var has_rng
81
82# Enable FEAT_RNG_TRAP
83reset_var has_rng_trap
84
Manish Pandeye11b6592024-03-11 13:10:46 +000085# Enable FEAT_ECV
86reset_var has_ecv
87
Manish V Badarkhe43bb6312021-01-04 08:55:05 +000088# Layout of MPIDR. 0=AFF0 is CPUID, 1=AFF1 is CPUID
89reset_var mpidr_layout
90
91# Sets the MPIDR.MT bit. Setting this to true hints the cluster
92# is multi-threading compatible
93reset_var supports_multi_threading
94
Manish V Badarkhef32cad02021-07-19 18:43:58 +010095# ETM plugin to access ETM trace system registers
96reset_var etm_plugin
97
98# ETE plugin to access ETE trace system registers
99reset_var ete_plugin
100
101# Trace filter register support
102reset_var supports_trace_filter_regs
103
104# Trace buffer control register support
105reset_var supports_trace_buffer_control_regs
106
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100107# CRC32 support
108reset_var supports_crc32
109
Juan Pablo Condedce97602024-02-28 16:46:13 -0600110# Accelerator instruction support level (none, FEAT_LS64,
111# FEAT_LS64_V, FEAT_LS64_ACCDATA)
112reset_var accelerator_support_level
113
Zelalemeb9c1bb2020-08-04 12:40:46 -0500114source "$ci_root/model/fvp_common.sh"
115
116#------------ Common configuration --------------
117
118cat <<EOF >>"$model_param_file"
119${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
120${gicv3_spi_count+-C gic_distributor.SPI-count=$gicv3_spi_count}
121${gicd_are_fixed_one+-C gic_distributor.ARE-fixed-to-one=$gicd_are_fixed_one}
122${gicd_ext_ppi_count+-C gic_distributor.extended-ppi-count=$gicd_ext_ppi_count}
123${gicd_ext_spi_count+-C gic_distributor.extended-spi-count=$gicd_ext_spi_count}
124${gicd_its_count+-C gic_distributor.ITS-count=$gicd_its_count}
125${gicd_virtual_lpi+-C gic_distributor.virtual-lpi-support=$gicd_virtual_lpi}
126${has_gicv4_1+-C has-gicv4.1=$has_gicv4_1}
127
Govindraj Raja700a3df2024-06-12 15:10:52 -0500128${has_sve+-C cluster0.has_sve=1}
129${has_sve+-C cluster0.sve.veclen=$((128 / 8))}
130${has_sme+-C cluster0.sve.has_sme=1}
131${has_sme2+-C cluster0.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100132${has_sme_fa64+-C cluster0.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100133${sme_only+-C cluster0.sve.sme_only=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500134
135${has_sve+-C cluster1.has_sve=1}
136${has_sve+-C cluster1.sve.veclen=$((128 / 8))}
137${has_sme+-C cluster1.sve.has_sme=1}
138${has_sme2+-C cluster1.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100139${has_sme_fa64+-C cluster1.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100140${sme_only+-C cluster1.sve.sme_only=1}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500141
142${bmcov_plugin+--plugin=$bmcov_plugin_path}
143
144${nvcounter_version+-C bp.trusted_nv_counter.version=$nvcounter_version}
145${nvcounter_diag+-C bp.trusted_nv_counter.diagnostics=$nvcounter_diag}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100146
147${etm_plugin+--plugin=$etm_plugin_path}
148${ete_plugin+--plugin=$ete_plugin_path}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500149EOF
150
151# TFTF Reboot/Shutdown tests
152if [ "$retain_flash" = "1" ]; then
153 cat <<EOF >>"$model_param_file"
154-C bp.flashloader1.fname=$flashloader1_fwrite
155-C bp.flashloader1.fnameWrite=$flashloader1_fwrite
156-C bp.flashloader0.fnameWrite=$flashloader0_fwrite
157-C bp.pl011_uart0.untimed_fifos=1
158-C bp.ve_sysregs.mmbSiteDefault=0
159EOF
160fi
161
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200162# Enable RME at the system level
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500163if [ "$has_rme" = "1" ]; then
164 cat <<EOF >>"$model_param_file"
165-C bp.refcounter.non_arch_start_at_default=1
166-C bp.refcounter.use_real_time=0
Manish V Badarkhe2176c4c2022-12-20 19:21:12 +0000167-C bp.has_rme=1
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500168EOF
169fi
170
Maksims Svecovsc2e24752022-03-24 13:52:31 +0000171# MTE is enabled
172if [[ -n $memory_tagging_support_level ]]; then
173 cat <<EOF >>"$model_param_file"
174-C bp.dram_metadata.is_enabled=1
175EOF
176fi
177
Juan Pablo Condedce97602024-02-28 16:46:13 -0600178# If accelerator support level enabled, disable bitwise negation
179# for values stored/read using FEAT_LS64* instructions.
180if [ "$accelerator_support_level" != "0" ]; then
181 cat <<EOF >>"$model_param_file"
182-C bp.ls64_testing_fifo.op_type=0
183EOF
184fi
185
Zelalemeb9c1bb2020-08-04 12:40:46 -0500186#------------ Cluster0 configuration --------------
187
188cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100189${pa_size+-C cluster0.PA_SIZE=$pa_size}
190
Zelalemeb9c1bb2020-08-04 12:40:46 -0500191${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
192
193${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
194
195${amu_present+-C cluster0.has_amu=$amu_present}
196
197${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
198${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
199${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
200${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
201
202${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
203${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
204${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
205${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
206
207${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
208
209${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
210
211${aarch64_only+-C cluster0.max_32bit_el=-1}
212
213${aarch32+-C cluster0.cpu0.CONFIG64=0}
214${aarch32+-C cluster0.cpu1.CONFIG64=0}
215${aarch32+-C cluster0.cpu2.CONFIG64=0}
216${aarch32+-C cluster0.cpu3.CONFIG64=0}
217
218
219${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
220${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
221${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
222${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
223
224${memory_tagging_support_level+-C cluster0.memory_tagging_support_level=$memory_tagging_support_level}
225
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000226${has_branch_target_exception+-C cluster0.has_branch_target_exception=$has_branch_target_exception}
227
Olivier Deprez18101ca2021-04-23 19:42:04 +0200228${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution=$restriction_on_speculative_execution}
229
Zelalem Aweke52aad162021-10-25 17:28:03 -0500230${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
231
Zelalemeb9c1bb2020-08-04 12:40:46 -0500232${gicv3_ext_interrupt_range+-C cluster0.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600233
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000234${mpidr_layout+-C cluster0.mpidr_layout=$mpidr_layout}
235
236${supports_multi_threading+-C cluster0.supports_multi_threading=$supports_multi_threading}
237
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500238${has_v8_9_debug_extension+-C cluster0.has_v8_9_debug_extension=$has_v8_9_debug_extension}
239
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100240${etm_present+-C cluster0.cpu0.etm-present=$etm_present}
241${etm_present+-C cluster0.cpu1.etm-present=$etm_present}
242${etm_present+-C cluster0.cpu2.etm-present=$etm_present}
243${etm_present+-C cluster0.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100244${supports_trace_filter_regs+-C cluster0.has_self_hosted_trace_extension=$supports_trace_filter_regs}
245${supports_trace_buffer_control_regs+-C cluster0.has_trbe=$supports_trace_buffer_control_regs}
John Powell3ced4082022-04-26 17:12:50 -0500246${supports_branch_record_buffer_control_regs+-C cluster0.has_brbe=$supports_branch_record_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100247${supports_crc32+-C cluster0.cpu0.enable_crc32=$supports_crc32}
248${supports_crc32+-C cluster0.cpu1.enable_crc32=$supports_crc32}
249${supports_crc32+-C cluster0.cpu2.enable_crc32=$supports_crc32}
250${supports_crc32+-C cluster0.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100251
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100252${cache_state_modelled+-C cluster0.stage12_tlb_size=1024}
253${cache_state_modelled+-C cluster0.check_memory_attributes=0}
254
Zelalemeb9c1bb2020-08-04 12:40:46 -0500255EOF
256
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600257if [ "$has_smmuv3_params" = "1" ]; then
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500258 cat <<EOF >>"$model_param_file"
259-C pci.pci_smmuv3.mmu.SMMU_AIDR=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500260-C pci.pci_smmuv3.mmu.SMMU_IDR1=0x00600002
261-C pci.pci_smmuv3.mmu.SMMU_IDR3=0x1714
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600262-C pci.pci_smmuv3.mmu.SMMU_S_IDR1=0xA0000002
263-C pci.pci_smmuv3.mmu.SMMU_S_IDR2=0
264-C pci.pci_smmuv3.mmu.SMMU_S_IDR3=0
265-C pci.smmulogger.trace_debug=1
266-C pci.smmulogger.trace_snoops=1
267-C pci.tbu0_pre_smmu_logger.trace_snoops=1
268-C pci.tbu0_pre_smmu_logger.trace_debug=1
269-C pci.pci_smmuv3.mmu.all_error_messages_through_trace=1
Olivier Deprez498873e2022-03-09 17:46:36 +0100270-C TRACE.GenericTrace.trace-sources=verbose_commentary,smmu_initial_transaction,smmu_final_transaction,*.pci.pci_smmuv3.mmu.*,*.pci.smmulogger.*,*.pci.tbu0_pre_smmu_logger.*,smmu_poison_tw_data
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600271--plugin $warehouse/SysGen/PVModelLib/$model_version/$model_build/external/plugins/$model_flavour/GenericTrace.so
Madhukar Pappireddy3e680902024-02-07 10:16:20 -0600272-C cci550.force_on_from_start=1
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600273EOF
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100274
275# If RME is implemented:
276# * pci.pci_smmuv3.mmu.SMMU_IDR5 defines 48 bit physical address size aligned
277# with the model configuration for the PE.
278# * pci.pci_smmuv3.mmu.root_register_page_offset defines the (platform
279# dependent) SMMU Root register page offset.
280# * SMMU_IDR0.RME_IMPL=1: RME features supported for non-secure and secure
281# programming interface.
282# * pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3: ROOT_IMPL=1/BGPTM=1.
283# * pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B: JEP106 Arm implementer code.
284 if [ "$has_rme" = "1" ]; then
285 cat <<EOF >>"$model_param_file"
286-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x4046123b
287-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
288-C pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3
289-C pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B
290-C pci.pci_smmuv3.mmu.root_register_page_offset=0x20000
291EOF
292 else
293 cat <<EOF >>"$model_param_file"
294-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x0046123B
Federico Recanatiedf25d92022-03-02 20:54:19 +0100295EOF
296
297 # Align pci.pci_smmuv3.mmu.SMMU_IDR5 to define 48 bit physical
298 # address size as for the PE.
299 if [ "$pa_size" = "48" ]; then
300 cat <<EOF >>"$model_param_file"
301-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
302EOF
303 else
304 cat <<EOF >>"$model_param_file"
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100305-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0472
306EOF
Federico Recanatiedf25d92022-03-02 20:54:19 +0100307 fi
308 fi
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600309fi
310
Zelalemeb9c1bb2020-08-04 12:40:46 -0500311# Parameters to select architecture version
312if [ "$arch_version" = "8.3" ]; then
313 cat <<EOF >>"$model_param_file"
314-C cluster0.has_arm_v8-3=1
315EOF
316fi
317
318if [ "$arch_version" = "8.4" ]; then
319 cat <<EOF >>"$model_param_file"
320-C cluster0.has_arm_v8-4=1
321EOF
322fi
323
324if [ "$arch_version" = "8.5" ]; then
325 cat <<EOF >>"$model_param_file"
326-C cluster0.has_arm_v8-5=1
327EOF
328fi
329
330if [ "$arch_version" = "8.6" ]; then
331 cat <<EOF >>"$model_param_file"
332-C cluster0.has_arm_v8-6=1
333EOF
334fi
335
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000336if [ "$arch_version" = "8.7" ]; then
337 cat <<EOF >>"$model_param_file"
338-C cluster0.has_arm_v8-7=1
339EOF
340fi
341
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400342if [ "$arch_version" = "8.8" ]; then
343 cat <<EOF >>"$model_param_file"
344-C cluster0.has_arm_v8-8=1
345EOF
346fi
347
Arvind Ram Prakashc6420cd2024-07-10 13:31:21 -0500348if [ "$arch_version" = "8.9" ]; then
349 cat <<EOF >>"$model_param_file"
350-C cluster0.has_arm_v8-9=1
351-C cluster1.has_arm_v8-9=1
352EOF
353fi
354
Boyan Karatotev1cc60a62022-11-01 17:00:15 +0000355if [ "$arch_version" = "9.2" ]; then
356 cat <<EOF >>"$model_param_file"
357-C cluster0.has_arm_v9-2=1
358-C cluster1.has_arm_v9-2=1
359EOF
360fi
361
Zelalemeb9c1bb2020-08-04 12:40:46 -0500362# Parameters for fault injection
363if [ "$fault_inject" = "1" ]; then
364 cat <<EOF >>"$model_param_file"
365-C cluster0.number_of_error_records=2
366-C cluster0.has_ras=2
367-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}'
368-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}'
369EOF
370fi
371
Arvind Ram Prakashc0421882024-01-05 16:35:42 -0600372if [ "$has_mpam" = "1" ]; then
373 cat <<EOF >>"$model_param_file"
374-C cluster0.has_mpam=2
375-C cluster1.has_mpam=2
376EOF
377fi
378
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200379# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500380if [ "$has_rme" = "1" ]; then
381 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200382-C cluster0.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500383-C cluster0.has_rndr=1
384-C cluster0.has_v8_7_pmu_extension=2
385-C cluster0.ecv_support_level=2
386-C cluster0.gicv3.cpuintf-mmap-access-level=2
387-C cluster0.gicv4.mask-virtual-interrupt=1
388-C cluster0.gicv3.without-DS-support=1
389-C cluster0.max_32bit_el=-1
390-C cluster0.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200391-C cluster0.output_attributes=ExtendedID[62:55]=MPAM_PMG,ExtendedID[54:39]=MPAM_PARTID,ExtendedID[38:37]=MPAM_SP
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500392EOF
393fi
394
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100395# FEAT_BRBE is enabled
396if [ "$has_brbe" = "1" ]; then
397 cat <<EOF >>"$model_param_file"
398-C cluster0.has_brbe=1
399EOF
400fi
401
402# FEAT_TRBE is enabled
403if [ "$has_trbe" = "1" ]; then
404 cat <<EOF >>"$model_param_file"
405-C cluster0.has_trbe=1
406EOF
407fi
408
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400409# FEAT_PACQARMA3 is enabled
410if [ "$has_pacqarma3" = "1" ]; then
411 cat <<EOF >>"$model_param_file"
412-C cluster0.has_qarma3_pac=1
413EOF
414fi
415
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400416# FEAT_RNG is enabled
417if [ "$has_rng" = "1" ]; then
418 cat <<EOF >>"$model_param_file"
419-C cluster0.has_rndr=1
420EOF
421fi
422
423# FEAT_RNG_TRAP is enabled
424if [ "$has_rng_trap" = "1" ]; then
425 cat <<EOF >>"$model_param_file"
426-C cluster0.has_rndr_trap=1
427EOF
428fi
429
Manish Pandeye11b6592024-03-11 13:10:46 +0000430if [ "$has_ecv" = "1" ]; then
431 cat <<EOF >>"$model_param_file"
432-C cluster0.ecv_support_level=2
433-C cluster1.ecv_support_level=2
434EOF
435fi
436
Juan Pablo Condedce97602024-02-28 16:46:13 -0600437# Accelerator support level enabled
438if [ "$accelerator_support_level" != "0" ]; then
439 cat <<EOF >>"$model_param_file"
440-C cluster0.arm_v8_7_accelerator_support_level=1
441EOF
442fi
443
Zelalemeb9c1bb2020-08-04 12:40:46 -0500444#------------ Cluster1 configuration (if exists) --------------
445if [ "$is_dual_cluster" = "1" ]; then
446 cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100447${pa_size+-C cluster1.PA_SIZE=$pa_size}
448
Zelalemeb9c1bb2020-08-04 12:40:46 -0500449${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
450
451${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
452
453${amu_present+-C cluster1.has_amu=$amu_present}
454
455${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
456${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
457${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
458${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
459
460${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
461${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
462${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
463${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
464
465${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
466
467${aarch64_only+-C cluster1.max_32bit_el=-1}
468
469${aarch32+-C cluster1.cpu0.CONFIG64=0}
470${aarch32+-C cluster1.cpu1.CONFIG64=0}
471${aarch32+-C cluster1.cpu2.CONFIG64=0}
472${aarch32+-C cluster1.cpu3.CONFIG64=0}
473
474${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
475${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
476${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
477${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
478
479${memory_tagging_support_level+-C cluster1.memory_tagging_support_level=$memory_tagging_support_level}
480
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000481${has_branch_target_exception+-C cluster1.has_branch_target_exception=$has_branch_target_exception}
482
Olivier Deprez18101ca2021-04-23 19:42:04 +0200483${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution=$restriction_on_speculative_execution}
484
Zelalem Aweke52aad162021-10-25 17:28:03 -0500485${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
486
Zelalemeb9c1bb2020-08-04 12:40:46 -0500487${gicv3_ext_interrupt_range+-C cluster1.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000488
489${mpidr_layout+-C cluster1.mpidr_layout=$mpidr_layout}
490
491${supports_multi_threading+-C cluster1.supports_multi_threading=$supports_multi_threading}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100492
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500493${has_v8_9_debug_extension+-C cluster1.has_v8_9_debug_extension=$has_v8_9_debug_extension}
494
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100495${etm_present+-C cluster1.cpu0.etm-present=$etm_present}
496${etm_present+-C cluster1.cpu1.etm-present=$etm_present}
497${etm_present+-C cluster1.cpu2.etm-present=$etm_present}
498${etm_present+-C cluster1.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100499${supports_system_trace_filter_regs+-C cluster1.has_self_hosted_trace_extension=$supports_system_trace_filter_regs}
500${supports_trace_buffer_control_regs+-C cluster1.has_trbe=$supports_trace_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100501${supports_crc32+-C cluster1.cpu0.enable_crc32=$supports_crc32}
502${supports_crc32+-C cluster1.cpu1.enable_crc32=$supports_crc32}
503${supports_crc32+-C cluster1.cpu2.enable_crc32=$supports_crc32}
504${supports_crc32+-C cluster1.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100505
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100506${cache_state_modelled+-C cluster1.stage12_tlb_size=1024}
507${cache_state_modelled+-C cluster1.check_memory_attributes=0}
508
Zelalemeb9c1bb2020-08-04 12:40:46 -0500509EOF
510
511# Parameters to select architecture version
512if [ "$arch_version" = "8.3" ]; then
513 cat <<EOF >>"$model_param_file"
514-C cluster1.has_arm_v8-3=1
515EOF
516fi
517
518if [ "$arch_version" = "8.4" ]; then
519 cat <<EOF >>"$model_param_file"
520-C cluster1.has_arm_v8-4=1
521EOF
522fi
523
524if [ "$arch_version" = "8.5" ]; then
525 cat <<EOF >>"$model_param_file"
526-C cluster1.has_arm_v8-5=1
527EOF
528fi
529
530if [ "$arch_version" = "8.6" ]; then
531 cat <<EOF >>"$model_param_file"
532-C cluster1.has_arm_v8-6=1
533EOF
534fi
535
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000536if [ "$arch_version" = "8.7" ]; then
537 cat <<EOF >>"$model_param_file"
538-C cluster1.has_arm_v8-7=1
539EOF
540fi
541
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400542if [ "$arch_version" = "8.8" ]; then
543 cat <<EOF >>"$model_param_file"
544-C cluster1.has_arm_v8-8=1
545EOF
546fi
547
Zelalemeb9c1bb2020-08-04 12:40:46 -0500548# Parameters for fault injection
549if [ "$fault_inject" = "1" ]; then
550 cat <<EOF >>"$model_param_file"
551-C cluster1.number_of_error_records=2
552-C cluster1.has_ras=2
553-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}'
554-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}'
555EOF
556fi
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500557
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100558# FEAT_BRBE is enabled
559if [ "$has_brbe" = "1" ]; then
560 cat <<EOF >>"$model_param_file"
561-C cluster1.has_brbe=1
562EOF
563fi
564
565# FEAT_TRBE is enabled
566if [ "$has_trbe" = "1" ]; then
567 cat <<EOF >>"$model_param_file"
568-C cluster1.has_trbe=1
569EOF
570fi
571
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200572# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500573if [ "$has_rme" = "1" ]; then
574 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200575-C cluster1.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500576-C cluster1.has_rndr=1
577-C cluster1.has_v8_7_pmu_extension=2
578-C cluster1.ecv_support_level=2
579-C cluster1.gicv3.cpuintf-mmap-access-level=2
580-C cluster1.gicv4.mask-virtual-interrupt=1
581-C cluster1.gicv3.without-DS-support=1
582-C cluster1.max_32bit_el=-1
583-C cluster1.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200584-C cluster1.output_attributes=ExtendedID[62:55]=MPAM_PMG,ExtendedID[54:39]=MPAM_PARTID,ExtendedID[38:37]=MPAM_SP
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500585EOF
586fi
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400587
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400588# FEAT_PACQARMA3 is enabled
589if [ "$has_pacqarma3" = "1" ]; then
590 cat <<EOF >>"$model_param_file"
591-C cluster1.has_qarma3_pac=1
592EOF
593fi
594
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400595# FEAT_RNG is enabled
596if [ "$has_rng" = "1" ]; then
597 cat <<EOF >>"$model_param_file"
598-C cluster1.has_rndr=1
599EOF
600fi
601
602# FEAT_RNG_TRAP is enabled
603if [ "$has_rng_trap" = "1" ]; then
604 cat <<EOF >>"$model_param_file"
605-C cluster1.has_rndr_trap=1
606EOF
607fi
608
Juan Pablo Condedce97602024-02-28 16:46:13 -0600609# Accelerator support level enabled
610if [ "$accelerator_support_level" != "0" ]; then
611 cat <<EOF >>"$model_param_file"
612-C cluster1.arm_v8_7_accelerator_support_level=1
613EOF
614fi
615
Zelalemeb9c1bb2020-08-04 12:40:46 -0500616fi
Federico Recanatiedf25d92022-03-02 20:54:19 +0100617
618# 48bit PA size: in order to access memory in high address ranges the
619# model must declare and the interconnect has to be configured to
620# support such address width.
621if [ "$pa_size" = "48" ]; then
622cat <<EOF >>"$model_param_file"
623-C bp.dram_size=4000000
624-C cci550.addr_width=48
625EOF
626fi