blob: 00f1bf5a88dbf8c063c46148ba707fe6709dc0c0 [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
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +010088# Enable FEAT_S1PIE
89reset_var has_s1pie
90
91# Enable FEAT_S2PIE
92reset_var has_s2pie
93
94# Enable FEAT_S1POE
95reset_var has_s1poe
96
97# Enable FEAT_S2POE
98reset_var has_s2poe
99
100# Enable FEAT_TCR2
101reset_var has_tcr2
102
103# Enable FEAT_CSV2_2
104reset_var has_csv2_2
105
106# Enable FEAT_GCS
107reset_var has_gcs
108
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000109# Layout of MPIDR. 0=AFF0 is CPUID, 1=AFF1 is CPUID
110reset_var mpidr_layout
111
112# Sets the MPIDR.MT bit. Setting this to true hints the cluster
113# is multi-threading compatible
114reset_var supports_multi_threading
115
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100116# ETM plugin to access ETM trace system registers
117reset_var etm_plugin
118
119# ETE plugin to access ETE trace system registers
120reset_var ete_plugin
121
122# Trace filter register support
123reset_var supports_trace_filter_regs
124
125# Trace buffer control register support
126reset_var supports_trace_buffer_control_regs
127
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100128# CRC32 support
129reset_var supports_crc32
130
Juan Pablo Condedce97602024-02-28 16:46:13 -0600131# Accelerator instruction support level (none, FEAT_LS64,
132# FEAT_LS64_V, FEAT_LS64_ACCDATA)
133reset_var accelerator_support_level
134
Zelalemeb9c1bb2020-08-04 12:40:46 -0500135source "$ci_root/model/fvp_common.sh"
136
137#------------ Common configuration --------------
138
139cat <<EOF >>"$model_param_file"
140${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
141${gicv3_spi_count+-C gic_distributor.SPI-count=$gicv3_spi_count}
142${gicd_are_fixed_one+-C gic_distributor.ARE-fixed-to-one=$gicd_are_fixed_one}
143${gicd_ext_ppi_count+-C gic_distributor.extended-ppi-count=$gicd_ext_ppi_count}
144${gicd_ext_spi_count+-C gic_distributor.extended-spi-count=$gicd_ext_spi_count}
145${gicd_its_count+-C gic_distributor.ITS-count=$gicd_its_count}
146${gicd_virtual_lpi+-C gic_distributor.virtual-lpi-support=$gicd_virtual_lpi}
147${has_gicv4_1+-C has-gicv4.1=$has_gicv4_1}
148
Govindraj Raja700a3df2024-06-12 15:10:52 -0500149${has_sve+-C cluster0.has_sve=1}
150${has_sve+-C cluster0.sve.veclen=$((128 / 8))}
151${has_sme+-C cluster0.sve.has_sme=1}
152${has_sme2+-C cluster0.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100153${has_sme_fa64+-C cluster0.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100154${sme_only+-C cluster0.sve.sme_only=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500155
156${has_sve+-C cluster1.has_sve=1}
157${has_sve+-C cluster1.sve.veclen=$((128 / 8))}
158${has_sme+-C cluster1.sve.has_sme=1}
159${has_sme2+-C cluster1.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100160${has_sme_fa64+-C cluster1.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100161${sme_only+-C cluster1.sve.sme_only=1}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500162
163${bmcov_plugin+--plugin=$bmcov_plugin_path}
164
165${nvcounter_version+-C bp.trusted_nv_counter.version=$nvcounter_version}
166${nvcounter_diag+-C bp.trusted_nv_counter.diagnostics=$nvcounter_diag}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100167
168${etm_plugin+--plugin=$etm_plugin_path}
169${ete_plugin+--plugin=$ete_plugin_path}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500170EOF
171
172# TFTF Reboot/Shutdown tests
173if [ "$retain_flash" = "1" ]; then
174 cat <<EOF >>"$model_param_file"
175-C bp.flashloader1.fname=$flashloader1_fwrite
176-C bp.flashloader1.fnameWrite=$flashloader1_fwrite
177-C bp.flashloader0.fnameWrite=$flashloader0_fwrite
178-C bp.pl011_uart0.untimed_fifos=1
179-C bp.ve_sysregs.mmbSiteDefault=0
180EOF
181fi
182
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200183# Enable RME at the system level
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500184if [ "$has_rme" = "1" ]; then
185 cat <<EOF >>"$model_param_file"
186-C bp.refcounter.non_arch_start_at_default=1
187-C bp.refcounter.use_real_time=0
Manish V Badarkhe2176c4c2022-12-20 19:21:12 +0000188-C bp.has_rme=1
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500189EOF
190fi
191
Maksims Svecovsc2e24752022-03-24 13:52:31 +0000192# MTE is enabled
193if [[ -n $memory_tagging_support_level ]]; then
194 cat <<EOF >>"$model_param_file"
195-C bp.dram_metadata.is_enabled=1
196EOF
197fi
198
Juan Pablo Condedce97602024-02-28 16:46:13 -0600199# If accelerator support level enabled, disable bitwise negation
200# for values stored/read using FEAT_LS64* instructions.
201if [ "$accelerator_support_level" != "0" ]; then
202 cat <<EOF >>"$model_param_file"
203-C bp.ls64_testing_fifo.op_type=0
204EOF
205fi
206
Zelalemeb9c1bb2020-08-04 12:40:46 -0500207#------------ Cluster0 configuration --------------
208
209cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100210${pa_size+-C cluster0.PA_SIZE=$pa_size}
211
Zelalemeb9c1bb2020-08-04 12:40:46 -0500212${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
213
214${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
215
216${amu_present+-C cluster0.has_amu=$amu_present}
217
218${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
219${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
220${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
221${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
222
223${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
224${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
225${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
226${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
227
228${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
229
230${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
231
232${aarch64_only+-C cluster0.max_32bit_el=-1}
233
234${aarch32+-C cluster0.cpu0.CONFIG64=0}
235${aarch32+-C cluster0.cpu1.CONFIG64=0}
236${aarch32+-C cluster0.cpu2.CONFIG64=0}
237${aarch32+-C cluster0.cpu3.CONFIG64=0}
238
239
240${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
241${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
242${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
243${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
244
245${memory_tagging_support_level+-C cluster0.memory_tagging_support_level=$memory_tagging_support_level}
246
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000247${has_branch_target_exception+-C cluster0.has_branch_target_exception=$has_branch_target_exception}
248
Olivier Deprez18101ca2021-04-23 19:42:04 +0200249${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution=$restriction_on_speculative_execution}
250
Zelalem Aweke52aad162021-10-25 17:28:03 -0500251${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
252
Zelalemeb9c1bb2020-08-04 12:40:46 -0500253${gicv3_ext_interrupt_range+-C cluster0.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600254
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000255${mpidr_layout+-C cluster0.mpidr_layout=$mpidr_layout}
256
257${supports_multi_threading+-C cluster0.supports_multi_threading=$supports_multi_threading}
258
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500259${has_v8_9_debug_extension+-C cluster0.has_v8_9_debug_extension=$has_v8_9_debug_extension}
260
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100261${etm_present+-C cluster0.cpu0.etm-present=$etm_present}
262${etm_present+-C cluster0.cpu1.etm-present=$etm_present}
263${etm_present+-C cluster0.cpu2.etm-present=$etm_present}
264${etm_present+-C cluster0.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100265${supports_trace_filter_regs+-C cluster0.has_self_hosted_trace_extension=$supports_trace_filter_regs}
266${supports_trace_buffer_control_regs+-C cluster0.has_trbe=$supports_trace_buffer_control_regs}
John Powell3ced4082022-04-26 17:12:50 -0500267${supports_branch_record_buffer_control_regs+-C cluster0.has_brbe=$supports_branch_record_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100268${supports_crc32+-C cluster0.cpu0.enable_crc32=$supports_crc32}
269${supports_crc32+-C cluster0.cpu1.enable_crc32=$supports_crc32}
270${supports_crc32+-C cluster0.cpu2.enable_crc32=$supports_crc32}
271${supports_crc32+-C cluster0.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100272
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100273${cache_state_modelled+-C cluster0.stage12_tlb_size=1024}
274${cache_state_modelled+-C cluster0.check_memory_attributes=0}
275
Zelalemeb9c1bb2020-08-04 12:40:46 -0500276EOF
277
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600278if [ "$has_smmuv3_params" = "1" ]; then
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500279 cat <<EOF >>"$model_param_file"
280-C pci.pci_smmuv3.mmu.SMMU_AIDR=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500281-C pci.pci_smmuv3.mmu.SMMU_IDR1=0x00600002
282-C pci.pci_smmuv3.mmu.SMMU_IDR3=0x1714
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600283-C pci.pci_smmuv3.mmu.SMMU_S_IDR1=0xA0000002
284-C pci.pci_smmuv3.mmu.SMMU_S_IDR2=0
285-C pci.pci_smmuv3.mmu.SMMU_S_IDR3=0
286-C pci.smmulogger.trace_debug=1
287-C pci.smmulogger.trace_snoops=1
288-C pci.tbu0_pre_smmu_logger.trace_snoops=1
289-C pci.tbu0_pre_smmu_logger.trace_debug=1
290-C pci.pci_smmuv3.mmu.all_error_messages_through_trace=1
Olivier Deprez498873e2022-03-09 17:46:36 +0100291-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 -0600292--plugin $warehouse/SysGen/PVModelLib/$model_version/$model_build/external/plugins/$model_flavour/GenericTrace.so
Madhukar Pappireddy3e680902024-02-07 10:16:20 -0600293-C cci550.force_on_from_start=1
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600294EOF
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100295
296# If RME is implemented:
297# * pci.pci_smmuv3.mmu.SMMU_IDR5 defines 48 bit physical address size aligned
298# with the model configuration for the PE.
299# * pci.pci_smmuv3.mmu.root_register_page_offset defines the (platform
300# dependent) SMMU Root register page offset.
301# * SMMU_IDR0.RME_IMPL=1: RME features supported for non-secure and secure
302# programming interface.
303# * pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3: ROOT_IMPL=1/BGPTM=1.
304# * pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B: JEP106 Arm implementer code.
305 if [ "$has_rme" = "1" ]; then
306 cat <<EOF >>"$model_param_file"
307-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x4046123b
308-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
309-C pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3
310-C pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B
311-C pci.pci_smmuv3.mmu.root_register_page_offset=0x20000
312EOF
313 else
314 cat <<EOF >>"$model_param_file"
315-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x0046123B
Federico Recanatiedf25d92022-03-02 20:54:19 +0100316EOF
317
318 # Align pci.pci_smmuv3.mmu.SMMU_IDR5 to define 48 bit physical
319 # address size as for the PE.
320 if [ "$pa_size" = "48" ]; then
321 cat <<EOF >>"$model_param_file"
322-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
323EOF
324 else
325 cat <<EOF >>"$model_param_file"
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100326-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0472
327EOF
Federico Recanatiedf25d92022-03-02 20:54:19 +0100328 fi
329 fi
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600330fi
331
Zelalemeb9c1bb2020-08-04 12:40:46 -0500332# Parameters to select architecture version
333if [ "$arch_version" = "8.3" ]; then
334 cat <<EOF >>"$model_param_file"
335-C cluster0.has_arm_v8-3=1
336EOF
337fi
338
339if [ "$arch_version" = "8.4" ]; then
340 cat <<EOF >>"$model_param_file"
341-C cluster0.has_arm_v8-4=1
342EOF
343fi
344
345if [ "$arch_version" = "8.5" ]; then
346 cat <<EOF >>"$model_param_file"
347-C cluster0.has_arm_v8-5=1
348EOF
349fi
350
351if [ "$arch_version" = "8.6" ]; then
352 cat <<EOF >>"$model_param_file"
353-C cluster0.has_arm_v8-6=1
354EOF
355fi
356
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000357if [ "$arch_version" = "8.7" ]; then
358 cat <<EOF >>"$model_param_file"
359-C cluster0.has_arm_v8-7=1
360EOF
361fi
362
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400363if [ "$arch_version" = "8.8" ]; then
364 cat <<EOF >>"$model_param_file"
365-C cluster0.has_arm_v8-8=1
366EOF
367fi
368
Arvind Ram Prakashc6420cd2024-07-10 13:31:21 -0500369if [ "$arch_version" = "8.9" ]; then
370 cat <<EOF >>"$model_param_file"
371-C cluster0.has_arm_v8-9=1
372-C cluster1.has_arm_v8-9=1
373EOF
374fi
375
Boyan Karatotev1cc60a62022-11-01 17:00:15 +0000376if [ "$arch_version" = "9.2" ]; then
377 cat <<EOF >>"$model_param_file"
378-C cluster0.has_arm_v9-2=1
379-C cluster1.has_arm_v9-2=1
380EOF
381fi
382
Govindraj Raja93be6f22024-10-16 18:38:27 -0500383if [ "$arch_version" = "9.4" ]; then
384 cat <<EOF >>"$model_param_file"
385-C cluster0.has_arm_v9-4=1
386-C cluster1.has_arm_v9-4=1
387EOF
388fi
389
Zelalemeb9c1bb2020-08-04 12:40:46 -0500390# Parameters for fault injection
391if [ "$fault_inject" = "1" ]; then
392 cat <<EOF >>"$model_param_file"
393-C cluster0.number_of_error_records=2
394-C cluster0.has_ras=2
395-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}'
396-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}'
397EOF
398fi
399
Arvind Ram Prakashc0421882024-01-05 16:35:42 -0600400if [ "$has_mpam" = "1" ]; then
401 cat <<EOF >>"$model_param_file"
402-C cluster0.has_mpam=2
403-C cluster1.has_mpam=2
404EOF
405fi
406
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200407# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500408if [ "$has_rme" = "1" ]; then
409 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200410-C cluster0.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500411-C cluster0.has_rndr=1
412-C cluster0.has_v8_7_pmu_extension=2
413-C cluster0.ecv_support_level=2
414-C cluster0.gicv3.cpuintf-mmap-access-level=2
415-C cluster0.gicv4.mask-virtual-interrupt=1
416-C cluster0.gicv3.without-DS-support=1
417-C cluster0.max_32bit_el=-1
418-C cluster0.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200419-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 -0500420EOF
421fi
422
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100423# FEAT_BRBE is enabled
424if [ "$has_brbe" = "1" ]; then
425 cat <<EOF >>"$model_param_file"
426-C cluster0.has_brbe=1
427EOF
428fi
429
430# FEAT_TRBE is enabled
431if [ "$has_trbe" = "1" ]; then
432 cat <<EOF >>"$model_param_file"
433-C cluster0.has_trbe=1
434EOF
435fi
436
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400437# FEAT_PACQARMA3 is enabled
438if [ "$has_pacqarma3" = "1" ]; then
439 cat <<EOF >>"$model_param_file"
440-C cluster0.has_qarma3_pac=1
441EOF
442fi
443
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400444# FEAT_RNG is enabled
445if [ "$has_rng" = "1" ]; then
446 cat <<EOF >>"$model_param_file"
447-C cluster0.has_rndr=1
448EOF
449fi
450
451# FEAT_RNG_TRAP is enabled
452if [ "$has_rng_trap" = "1" ]; then
453 cat <<EOF >>"$model_param_file"
454-C cluster0.has_rndr_trap=1
455EOF
456fi
457
Manish Pandeye11b6592024-03-11 13:10:46 +0000458if [ "$has_ecv" = "1" ]; then
459 cat <<EOF >>"$model_param_file"
460-C cluster0.ecv_support_level=2
461-C cluster1.ecv_support_level=2
462EOF
463fi
464
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +0100465if [ "$has_s1pie" = "1" ]; then
466 cat <<EOF >>"$model_param_file"
467-C cluster0.has_permission_indirection_s1=2
468-C cluster1.has_permission_indirection_s1=2
469EOF
470fi
471
472if [ "$has_s2pie" = "1" ]; then
473 cat <<EOF >>"$model_param_file"
474-C cluster0.has_permission_indirection_s2=2
475-C cluster1.has_permission_indirection_s2=2
476EOF
477fi
478
479if [ "$has_s1poe" = "1" ]; then
480 cat <<EOF >>"$model_param_file"
481-C cluster0.has_permission_overlay_s1=2
482-C cluster1.has_permission_overlay_s1=2
483EOF
484fi
485
486if [ "$has_s2poe" = "1" ]; then
487 cat <<EOF >>"$model_param_file"
488-C cluster0.has_permission_overlay_s2=2
489-C cluster1.has_permission_overlay_s2=2
490EOF
491fi
492
493if [ "$has_tcr2" = "1" ]; then
494 cat <<EOF >>"$model_param_file"
495-C cluster0.has_tcr2=2
496-C cluster1.has_tcr2=2
497EOF
498fi
499
500if [ "$has_csv2_2" = "1" ]; then
501 cat <<EOF >>"$model_param_file"
502-C cluster0.restriction_on_speculative_execution=2
503-C cluster1.restriction_on_speculative_execution=2
504EOF
505fi
506
507if [ "$has_gcs" = "1" ]; then
508 cat <<EOF >>"$model_param_file"
509-C cluster0.has_gcs=2
510-C cluster1.has_gcs=2
511EOF
512fi
513
Juan Pablo Condedce97602024-02-28 16:46:13 -0600514# Accelerator support level enabled
515if [ "$accelerator_support_level" != "0" ]; then
516 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000517-C cluster0.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600518EOF
519fi
520
Govindraj Raja93be6f22024-10-16 18:38:27 -0500521# FEAT_THE is enabled
522if [ "$has_translation_hardening" = "1" ]; then
523 cat <<EOF >>"$model_param_file"
524-C cluster0.has_translation_hardening=1
525-C cluster1.has_translation_hardening=1
526EOF
527fi
528
529# FEAT_D128 is enabled
530if [ "$has_d128" = "1" ]; then
531 cat <<EOF >>"$model_param_file"
532-C cluster0.has_128_bit_tt_descriptors="1"
533-C cluster1.has_128_bit_tt_descriptors="1"
534EOF
535fi
536
Zelalemeb9c1bb2020-08-04 12:40:46 -0500537#------------ Cluster1 configuration (if exists) --------------
538if [ "$is_dual_cluster" = "1" ]; then
539 cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100540${pa_size+-C cluster1.PA_SIZE=$pa_size}
541
Zelalemeb9c1bb2020-08-04 12:40:46 -0500542${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
543
544${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
545
546${amu_present+-C cluster1.has_amu=$amu_present}
547
548${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
549${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
550${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
551${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
552
553${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
554${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
555${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
556${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
557
558${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
559
560${aarch64_only+-C cluster1.max_32bit_el=-1}
561
562${aarch32+-C cluster1.cpu0.CONFIG64=0}
563${aarch32+-C cluster1.cpu1.CONFIG64=0}
564${aarch32+-C cluster1.cpu2.CONFIG64=0}
565${aarch32+-C cluster1.cpu3.CONFIG64=0}
566
567${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
568${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
569${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
570${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
571
572${memory_tagging_support_level+-C cluster1.memory_tagging_support_level=$memory_tagging_support_level}
573
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000574${has_branch_target_exception+-C cluster1.has_branch_target_exception=$has_branch_target_exception}
575
Olivier Deprez18101ca2021-04-23 19:42:04 +0200576${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution=$restriction_on_speculative_execution}
577
Zelalem Aweke52aad162021-10-25 17:28:03 -0500578${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
579
Zelalemeb9c1bb2020-08-04 12:40:46 -0500580${gicv3_ext_interrupt_range+-C cluster1.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000581
582${mpidr_layout+-C cluster1.mpidr_layout=$mpidr_layout}
583
584${supports_multi_threading+-C cluster1.supports_multi_threading=$supports_multi_threading}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100585
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500586${has_v8_9_debug_extension+-C cluster1.has_v8_9_debug_extension=$has_v8_9_debug_extension}
587
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100588${etm_present+-C cluster1.cpu0.etm-present=$etm_present}
589${etm_present+-C cluster1.cpu1.etm-present=$etm_present}
590${etm_present+-C cluster1.cpu2.etm-present=$etm_present}
591${etm_present+-C cluster1.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100592${supports_system_trace_filter_regs+-C cluster1.has_self_hosted_trace_extension=$supports_system_trace_filter_regs}
593${supports_trace_buffer_control_regs+-C cluster1.has_trbe=$supports_trace_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100594${supports_crc32+-C cluster1.cpu0.enable_crc32=$supports_crc32}
595${supports_crc32+-C cluster1.cpu1.enable_crc32=$supports_crc32}
596${supports_crc32+-C cluster1.cpu2.enable_crc32=$supports_crc32}
597${supports_crc32+-C cluster1.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100598
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100599${cache_state_modelled+-C cluster1.stage12_tlb_size=1024}
600${cache_state_modelled+-C cluster1.check_memory_attributes=0}
601
Zelalemeb9c1bb2020-08-04 12:40:46 -0500602EOF
603
604# Parameters to select architecture version
605if [ "$arch_version" = "8.3" ]; then
606 cat <<EOF >>"$model_param_file"
607-C cluster1.has_arm_v8-3=1
608EOF
609fi
610
611if [ "$arch_version" = "8.4" ]; then
612 cat <<EOF >>"$model_param_file"
613-C cluster1.has_arm_v8-4=1
614EOF
615fi
616
617if [ "$arch_version" = "8.5" ]; then
618 cat <<EOF >>"$model_param_file"
619-C cluster1.has_arm_v8-5=1
620EOF
621fi
622
623if [ "$arch_version" = "8.6" ]; then
624 cat <<EOF >>"$model_param_file"
625-C cluster1.has_arm_v8-6=1
626EOF
627fi
628
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000629if [ "$arch_version" = "8.7" ]; then
630 cat <<EOF >>"$model_param_file"
631-C cluster1.has_arm_v8-7=1
632EOF
633fi
634
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400635if [ "$arch_version" = "8.8" ]; then
636 cat <<EOF >>"$model_param_file"
637-C cluster1.has_arm_v8-8=1
638EOF
639fi
640
Zelalemeb9c1bb2020-08-04 12:40:46 -0500641# Parameters for fault injection
642if [ "$fault_inject" = "1" ]; then
643 cat <<EOF >>"$model_param_file"
644-C cluster1.number_of_error_records=2
645-C cluster1.has_ras=2
646-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}'
647-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}'
648EOF
649fi
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500650
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100651# FEAT_BRBE is enabled
652if [ "$has_brbe" = "1" ]; then
653 cat <<EOF >>"$model_param_file"
654-C cluster1.has_brbe=1
655EOF
656fi
657
658# FEAT_TRBE is enabled
659if [ "$has_trbe" = "1" ]; then
660 cat <<EOF >>"$model_param_file"
661-C cluster1.has_trbe=1
662EOF
663fi
664
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200665# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500666if [ "$has_rme" = "1" ]; then
667 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200668-C cluster1.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500669-C cluster1.has_rndr=1
670-C cluster1.has_v8_7_pmu_extension=2
671-C cluster1.ecv_support_level=2
672-C cluster1.gicv3.cpuintf-mmap-access-level=2
673-C cluster1.gicv4.mask-virtual-interrupt=1
674-C cluster1.gicv3.without-DS-support=1
675-C cluster1.max_32bit_el=-1
676-C cluster1.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200677-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 -0500678EOF
679fi
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400680
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400681# FEAT_PACQARMA3 is enabled
682if [ "$has_pacqarma3" = "1" ]; then
683 cat <<EOF >>"$model_param_file"
684-C cluster1.has_qarma3_pac=1
685EOF
686fi
687
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400688# FEAT_RNG is enabled
689if [ "$has_rng" = "1" ]; then
690 cat <<EOF >>"$model_param_file"
691-C cluster1.has_rndr=1
692EOF
693fi
694
695# FEAT_RNG_TRAP is enabled
696if [ "$has_rng_trap" = "1" ]; then
697 cat <<EOF >>"$model_param_file"
698-C cluster1.has_rndr_trap=1
699EOF
700fi
701
Juan Pablo Condedce97602024-02-28 16:46:13 -0600702# Accelerator support level enabled
703if [ "$accelerator_support_level" != "0" ]; then
704 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000705-C cluster1.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600706EOF
707fi
708
Zelalemeb9c1bb2020-08-04 12:40:46 -0500709fi
Federico Recanatiedf25d92022-03-02 20:54:19 +0100710
711# 48bit PA size: in order to access memory in high address ranges the
712# model must declare and the interconnect has to be configured to
713# support such address width.
714if [ "$pa_size" = "48" ]; then
715cat <<EOF >>"$model_param_file"
716-C bp.dram_size=4000000
717-C cci550.addr_width=48
718EOF
719fi