blob: 4cbff801e7748332139ab29c5283dda571218939 [file] [log] [blame]
Leonardo Sandoval9dfdd1b2020-08-06 17:08:11 -05001#!/usr/bin/env bash
Zelalemeb9c1bb2020-08-04 12:40:46 -05002#
Igor Podgainõic6f4ae22024-12-11 13:35:24 +01003# Copyright (c) 2019-2025, 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
Govindraj Raja4d54f7a2025-02-20 12:03:26 -060050reset_var has_ete
51
Zelalemeb9c1bb2020-08-04 12:40:46 -050052# Enable GICv4.1 functionality
53reset_var has_gicv4_1
54
Govindraj Raja700a3df2024-06-12 15:10:52 -050055reset_var has_sve
Zelalemeb9c1bb2020-08-04 12:40:46 -050056
Boyan Karatotev1cc60a62022-11-01 17:00:15 +000057reset_var has_sme
58
Olivier Deprez674dcbf2024-02-15 11:30:51 +010059reset_var has_sme_fa64
60
Olivier Deprezdd0e3d12024-02-15 11:38:03 +010061reset_var sme_only
62
Jayanth Dodderi Chidanand65bb8b82023-01-12 15:18:16 +000063reset_var has_sme2
64
Zelalemeb9c1bb2020-08-04 12:40:46 -050065reset_var bmcov_plugin
66
67reset_var retain_flash
68
69reset_var nvcounter_version
70reset_var nvcounter_diag
71
Arvind Ram Prakashc0421882024-01-05 16:35:42 -060072# Enable FEAT_MPAM
73reset_var has_mpam
74
Madhukar Pappireddy024efd52020-12-31 16:45:52 -060075# Enable SMMUv3 functionality
76reset_var has_smmuv3_params
77
Zelalem Aweke773e19b2021-08-20 17:41:00 -050078# Enable FEAT_RME
79reset_var has_rme
80
Juan Pablo Conded0b527c2022-07-25 16:48:17 -040081# Enable FEAT_RNG
82reset_var has_rng
83
84# Enable FEAT_RNG_TRAP
85reset_var has_rng_trap
86
Manish Pandeye11b6592024-03-11 13:10:46 +000087# Enable FEAT_ECV
88reset_var has_ecv
89
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +010090# Enable FEAT_S1PIE
91reset_var has_s1pie
92
93# Enable FEAT_S2PIE
94reset_var has_s2pie
95
96# Enable FEAT_S1POE
97reset_var has_s1poe
98
99# Enable FEAT_S2POE
100reset_var has_s2poe
101
102# Enable FEAT_TCR2
103reset_var has_tcr2
104
105# Enable FEAT_CSV2_2
106reset_var has_csv2_2
107
108# Enable FEAT_GCS
109reset_var has_gcs
110
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200111# Enable FEAT_FGT2
112reset_var has_fgt2
113
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000114# Layout of MPIDR. 0=AFF0 is CPUID, 1=AFF1 is CPUID
115reset_var mpidr_layout
116
117# Sets the MPIDR.MT bit. Setting this to true hints the cluster
118# is multi-threading compatible
119reset_var supports_multi_threading
120
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100121# ETM plugin to access ETM trace system registers
122reset_var etm_plugin
123
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100124# Trace filter register support
125reset_var supports_trace_filter_regs
126
127# Trace buffer control register support
128reset_var supports_trace_buffer_control_regs
129
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100130# CRC32 support
131reset_var supports_crc32
132
Juan Pablo Condedce97602024-02-28 16:46:13 -0600133# Accelerator instruction support level (none, FEAT_LS64,
134# FEAT_LS64_V, FEAT_LS64_ACCDATA)
135reset_var accelerator_support_level
136
Zelalemeb9c1bb2020-08-04 12:40:46 -0500137source "$ci_root/model/fvp_common.sh"
138
139#------------ Common configuration --------------
140
141cat <<EOF >>"$model_param_file"
142${gicv3_gicv2_only+-C gicv3.gicv2-only=$gicv3_gicv2_only}
143${gicv3_spi_count+-C gic_distributor.SPI-count=$gicv3_spi_count}
144${gicd_are_fixed_one+-C gic_distributor.ARE-fixed-to-one=$gicd_are_fixed_one}
145${gicd_ext_ppi_count+-C gic_distributor.extended-ppi-count=$gicd_ext_ppi_count}
146${gicd_ext_spi_count+-C gic_distributor.extended-spi-count=$gicd_ext_spi_count}
147${gicd_its_count+-C gic_distributor.ITS-count=$gicd_its_count}
148${gicd_virtual_lpi+-C gic_distributor.virtual-lpi-support=$gicd_virtual_lpi}
149${has_gicv4_1+-C has-gicv4.1=$has_gicv4_1}
150
Govindraj Raja4d54f7a2025-02-20 12:03:26 -0600151${has_ete+-C cluster0.has_ete=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500152${has_sve+-C cluster0.has_sve=1}
153${has_sve+-C cluster0.sve.veclen=$((128 / 8))}
154${has_sme+-C cluster0.sve.has_sme=1}
155${has_sme2+-C cluster0.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100156${has_sme_fa64+-C cluster0.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100157${sme_only+-C cluster0.sve.sme_only=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500158
Govindraj Raja4d54f7a2025-02-20 12:03:26 -0600159${has_ete+-C cluster1.has_ete=1}
Govindraj Raja700a3df2024-06-12 15:10:52 -0500160${has_sve+-C cluster1.has_sve=1}
161${has_sve+-C cluster1.sve.veclen=$((128 / 8))}
162${has_sme+-C cluster1.sve.has_sme=1}
163${has_sme2+-C cluster1.sve.has_sme2=1}
Olivier Deprez674dcbf2024-02-15 11:30:51 +0100164${has_sme_fa64+-C cluster1.sve.has_sme_fa64=1}
Olivier Deprezdd0e3d12024-02-15 11:38:03 +0100165${sme_only+-C cluster1.sve.sme_only=1}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500166
167${bmcov_plugin+--plugin=$bmcov_plugin_path}
168
169${nvcounter_version+-C bp.trusted_nv_counter.version=$nvcounter_version}
170${nvcounter_diag+-C bp.trusted_nv_counter.diagnostics=$nvcounter_diag}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100171
172${etm_plugin+--plugin=$etm_plugin_path}
Zelalemeb9c1bb2020-08-04 12:40:46 -0500173EOF
174
175# TFTF Reboot/Shutdown tests
176if [ "$retain_flash" = "1" ]; then
177 cat <<EOF >>"$model_param_file"
178-C bp.flashloader1.fname=$flashloader1_fwrite
179-C bp.flashloader1.fnameWrite=$flashloader1_fwrite
180-C bp.flashloader0.fnameWrite=$flashloader0_fwrite
181-C bp.pl011_uart0.untimed_fifos=1
182-C bp.ve_sysregs.mmbSiteDefault=0
183EOF
184fi
185
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200186# Enable RME at the system level
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500187if [ "$has_rme" = "1" ]; then
188 cat <<EOF >>"$model_param_file"
189-C bp.refcounter.non_arch_start_at_default=1
190-C bp.refcounter.use_real_time=0
Manish V Badarkhe2176c4c2022-12-20 19:21:12 +0000191-C bp.has_rme=1
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500192EOF
193fi
194
Maksims Svecovsc2e24752022-03-24 13:52:31 +0000195# MTE is enabled
196if [[ -n $memory_tagging_support_level ]]; then
197 cat <<EOF >>"$model_param_file"
198-C bp.dram_metadata.is_enabled=1
199EOF
200fi
201
Juan Pablo Condedce97602024-02-28 16:46:13 -0600202# If accelerator support level enabled, disable bitwise negation
203# for values stored/read using FEAT_LS64* instructions.
204if [ "$accelerator_support_level" != "0" ]; then
205 cat <<EOF >>"$model_param_file"
206-C bp.ls64_testing_fifo.op_type=0
207EOF
208fi
209
Zelalemeb9c1bb2020-08-04 12:40:46 -0500210#------------ Cluster0 configuration --------------
211
212cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100213${pa_size+-C cluster0.PA_SIZE=$pa_size}
214
Zelalemeb9c1bb2020-08-04 12:40:46 -0500215${cluster_0_reg_reset+-C cluster0.register_reset_data=$cluster_0_reg_reset}
216
217${cluster_0_has_el2+-C cluster0.has_el2=$cluster_0_has_el2}
218
219${amu_present+-C cluster0.has_amu=$amu_present}
220
221${reset_to_bl31+-C cluster0.cpu0.RVBAR=${bl31_addr:?}}
222${reset_to_bl31+-C cluster0.cpu1.RVBAR=${bl31_addr:?}}
223${reset_to_bl31+-C cluster0.cpu2.RVBAR=${bl31_addr:?}}
224${reset_to_bl31+-C cluster0.cpu3.RVBAR=${bl31_addr:?}}
225
226${reset_to_spmin+-C cluster0.cpu0.RVBAR=${bl32_addr:?}}
227${reset_to_spmin+-C cluster0.cpu1.RVBAR=${bl32_addr:?}}
228${reset_to_spmin+-C cluster0.cpu2.RVBAR=${bl32_addr:?}}
229${reset_to_spmin+-C cluster0.cpu3.RVBAR=${bl32_addr:?}}
230
231${cluster_0_num_cores+-C cluster0.NUM_CORES=$cluster_0_num_cores}
232
233${el3_payload_bin+--data cluster0.cpu0=$el3_payload_bin@${el3_payload_addr:?}}
234
235${aarch64_only+-C cluster0.max_32bit_el=-1}
236
237${aarch32+-C cluster0.cpu0.CONFIG64=0}
238${aarch32+-C cluster0.cpu1.CONFIG64=0}
239${aarch32+-C cluster0.cpu2.CONFIG64=0}
240${aarch32+-C cluster0.cpu3.CONFIG64=0}
241
242
243${bl2_at_el3+-C cluster0.cpu0.RVBAR=${bl2_addr:?}}
244${bl2_at_el3+-C cluster0.cpu1.RVBAR=${bl2_addr:?}}
245${bl2_at_el3+-C cluster0.cpu2.RVBAR=${bl2_addr:?}}
246${bl2_at_el3+-C cluster0.cpu3.RVBAR=${bl2_addr:?}}
247
248${memory_tagging_support_level+-C cluster0.memory_tagging_support_level=$memory_tagging_support_level}
249
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000250${has_branch_target_exception+-C cluster0.has_branch_target_exception=$has_branch_target_exception}
251
Olivier Deprez18101ca2021-04-23 19:42:04 +0200252${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution=$restriction_on_speculative_execution}
253
Zelalem Aweke52aad162021-10-25 17:28:03 -0500254${restriction_on_speculative_execution+-C cluster0.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
255
Zelalemeb9c1bb2020-08-04 12:40:46 -0500256${gicv3_ext_interrupt_range+-C cluster0.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600257
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000258${mpidr_layout+-C cluster0.mpidr_layout=$mpidr_layout}
259
260${supports_multi_threading+-C cluster0.supports_multi_threading=$supports_multi_threading}
261
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500262${has_v8_9_debug_extension+-C cluster0.has_v8_9_debug_extension=$has_v8_9_debug_extension}
263
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100264${etm_present+-C cluster0.cpu0.etm-present=$etm_present}
265${etm_present+-C cluster0.cpu1.etm-present=$etm_present}
266${etm_present+-C cluster0.cpu2.etm-present=$etm_present}
267${etm_present+-C cluster0.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100268${supports_trace_filter_regs+-C cluster0.has_self_hosted_trace_extension=$supports_trace_filter_regs}
269${supports_trace_buffer_control_regs+-C cluster0.has_trbe=$supports_trace_buffer_control_regs}
John Powell3ced4082022-04-26 17:12:50 -0500270${supports_branch_record_buffer_control_regs+-C cluster0.has_brbe=$supports_branch_record_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100271${supports_crc32+-C cluster0.cpu0.enable_crc32=$supports_crc32}
272${supports_crc32+-C cluster0.cpu1.enable_crc32=$supports_crc32}
273${supports_crc32+-C cluster0.cpu2.enable_crc32=$supports_crc32}
274${supports_crc32+-C cluster0.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100275
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100276${cache_state_modelled+-C cluster0.stage12_tlb_size=1024}
277${cache_state_modelled+-C cluster0.check_memory_attributes=0}
278
Zelalemeb9c1bb2020-08-04 12:40:46 -0500279EOF
280
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600281if [ "$has_smmuv3_params" = "1" ]; then
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500282 cat <<EOF >>"$model_param_file"
283-C pci.pci_smmuv3.mmu.SMMU_AIDR=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500284-C pci.pci_smmuv3.mmu.SMMU_IDR1=0x00600002
285-C pci.pci_smmuv3.mmu.SMMU_IDR3=0x1714
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600286-C pci.pci_smmuv3.mmu.SMMU_S_IDR1=0xA0000002
287-C pci.pci_smmuv3.mmu.SMMU_S_IDR2=0
288-C pci.pci_smmuv3.mmu.SMMU_S_IDR3=0
289-C pci.smmulogger.trace_debug=1
290-C pci.smmulogger.trace_snoops=1
291-C pci.tbu0_pre_smmu_logger.trace_snoops=1
292-C pci.tbu0_pre_smmu_logger.trace_debug=1
293-C pci.pci_smmuv3.mmu.all_error_messages_through_trace=1
Olivier Deprez498873e2022-03-09 17:46:36 +0100294-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 -0600295--plugin $warehouse/SysGen/PVModelLib/$model_version/$model_build/external/plugins/$model_flavour/GenericTrace.so
Madhukar Pappireddy3e680902024-02-07 10:16:20 -0600296-C cci550.force_on_from_start=1
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600297EOF
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100298
299# If RME is implemented:
300# * pci.pci_smmuv3.mmu.SMMU_IDR5 defines 48 bit physical address size aligned
301# with the model configuration for the PE.
302# * pci.pci_smmuv3.mmu.root_register_page_offset defines the (platform
303# dependent) SMMU Root register page offset.
304# * SMMU_IDR0.RME_IMPL=1: RME features supported for non-secure and secure
305# programming interface.
306# * pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3: ROOT_IMPL=1/BGPTM=1.
307# * pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B: JEP106 Arm implementer code.
308 if [ "$has_rme" = "1" ]; then
309 cat <<EOF >>"$model_param_file"
310-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x4046123b
311-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
312-C pci.pci_smmuv3.mmu.SMMU_ROOT_IDR0=3
313-C pci.pci_smmuv3.mmu.SMMU_ROOT_IIDR=0x43B
314-C pci.pci_smmuv3.mmu.root_register_page_offset=0x20000
315EOF
316 else
317 cat <<EOF >>"$model_param_file"
318-C pci.pci_smmuv3.mmu.SMMU_IDR0=0x0046123B
Federico Recanatiedf25d92022-03-02 20:54:19 +0100319EOF
320
321 # Align pci.pci_smmuv3.mmu.SMMU_IDR5 to define 48 bit physical
322 # address size as for the PE.
323 if [ "$pa_size" = "48" ]; then
324 cat <<EOF >>"$model_param_file"
325-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0475
326EOF
327 else
328 cat <<EOF >>"$model_param_file"
Olivier Deprezc3c572e2022-03-16 10:54:45 +0100329-C pci.pci_smmuv3.mmu.SMMU_IDR5=0xFFFF0472
330EOF
Federico Recanatiedf25d92022-03-02 20:54:19 +0100331 fi
332 fi
Madhukar Pappireddy024efd52020-12-31 16:45:52 -0600333fi
334
Zelalemeb9c1bb2020-08-04 12:40:46 -0500335# Parameters to select architecture version
336if [ "$arch_version" = "8.3" ]; then
337 cat <<EOF >>"$model_param_file"
338-C cluster0.has_arm_v8-3=1
339EOF
340fi
341
342if [ "$arch_version" = "8.4" ]; then
343 cat <<EOF >>"$model_param_file"
344-C cluster0.has_arm_v8-4=1
345EOF
346fi
347
348if [ "$arch_version" = "8.5" ]; then
349 cat <<EOF >>"$model_param_file"
350-C cluster0.has_arm_v8-5=1
351EOF
352fi
353
354if [ "$arch_version" = "8.6" ]; then
355 cat <<EOF >>"$model_param_file"
356-C cluster0.has_arm_v8-6=1
357EOF
358fi
359
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000360if [ "$arch_version" = "8.7" ]; then
361 cat <<EOF >>"$model_param_file"
362-C cluster0.has_arm_v8-7=1
363EOF
364fi
365
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400366if [ "$arch_version" = "8.8" ]; then
367 cat <<EOF >>"$model_param_file"
368-C cluster0.has_arm_v8-8=1
369EOF
370fi
371
Arvind Ram Prakashc6420cd2024-07-10 13:31:21 -0500372if [ "$arch_version" = "8.9" ]; then
373 cat <<EOF >>"$model_param_file"
374-C cluster0.has_arm_v8-9=1
375-C cluster1.has_arm_v8-9=1
376EOF
377fi
378
Boyan Karatotev1cc60a62022-11-01 17:00:15 +0000379if [ "$arch_version" = "9.2" ]; then
380 cat <<EOF >>"$model_param_file"
381-C cluster0.has_arm_v9-2=1
382-C cluster1.has_arm_v9-2=1
383EOF
384fi
385
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200386if [ "$arch_version" = "9.3" ]; then
387 cat <<EOF >>"$model_param_file"
388-C cluster0.has_arm_v9-3=1
389-C cluster1.has_arm_v9-3=1
390EOF
391fi
392
Govindraj Raja93be6f22024-10-16 18:38:27 -0500393if [ "$arch_version" = "9.4" ]; then
394 cat <<EOF >>"$model_param_file"
395-C cluster0.has_arm_v9-4=1
396-C cluster1.has_arm_v9-4=1
397EOF
398fi
399
Zelalemeb9c1bb2020-08-04 12:40:46 -0500400# Parameters for fault injection
401if [ "$fault_inject" = "1" ]; then
402 cat <<EOF >>"$model_param_file"
403-C cluster0.number_of_error_records=2
404-C cluster0.has_ras=2
405-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}'
406-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}'
407EOF
408fi
409
Arvind Ram Prakashc0421882024-01-05 16:35:42 -0600410if [ "$has_mpam" = "1" ]; then
411 cat <<EOF >>"$model_param_file"
412-C cluster0.has_mpam=2
413-C cluster1.has_mpam=2
414EOF
415fi
416
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200417# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500418if [ "$has_rme" = "1" ]; then
419 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200420-C cluster0.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500421-C cluster0.gicv3.cpuintf-mmap-access-level=2
422-C cluster0.gicv4.mask-virtual-interrupt=1
423-C cluster0.gicv3.without-DS-support=1
424-C cluster0.max_32bit_el=-1
425-C cluster0.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200426-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 -0500427EOF
428fi
429
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100430# FEAT_BRBE is enabled
431if [ "$has_brbe" = "1" ]; then
432 cat <<EOF >>"$model_param_file"
433-C cluster0.has_brbe=1
434EOF
435fi
436
437# FEAT_TRBE is enabled
438if [ "$has_trbe" = "1" ]; then
439 cat <<EOF >>"$model_param_file"
440-C cluster0.has_trbe=1
441EOF
442fi
443
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400444# FEAT_PACQARMA3 is enabled
445if [ "$has_pacqarma3" = "1" ]; then
446 cat <<EOF >>"$model_param_file"
447-C cluster0.has_qarma3_pac=1
448EOF
449fi
450
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400451# FEAT_RNG is enabled
452if [ "$has_rng" = "1" ]; then
453 cat <<EOF >>"$model_param_file"
454-C cluster0.has_rndr=1
455EOF
456fi
457
458# FEAT_RNG_TRAP is enabled
459if [ "$has_rng_trap" = "1" ]; then
460 cat <<EOF >>"$model_param_file"
461-C cluster0.has_rndr_trap=1
462EOF
463fi
464
Igor Podgainõidca1f2c2024-09-27 16:12:53 +0200465if [ "$has_fgt2" = "1" ]; then
466 cat <<EOF >>"$model_param_file"
467-C cluster0.has_fgt2=2
468-C cluster1.has_fgt2=2
469EOF
470fi
471
Manish Pandeye11b6592024-03-11 13:10:46 +0000472if [ "$has_ecv" = "1" ]; then
473 cat <<EOF >>"$model_param_file"
474-C cluster0.ecv_support_level=2
475-C cluster1.ecv_support_level=2
476EOF
477fi
478
Jayanth Dodderi Chidanandddd0a4b2024-08-20 17:46:03 +0100479if [ "$has_s1pie" = "1" ]; then
480 cat <<EOF >>"$model_param_file"
481-C cluster0.has_permission_indirection_s1=2
482-C cluster1.has_permission_indirection_s1=2
483EOF
484fi
485
486if [ "$has_s2pie" = "1" ]; then
487 cat <<EOF >>"$model_param_file"
488-C cluster0.has_permission_indirection_s2=2
489-C cluster1.has_permission_indirection_s2=2
490EOF
491fi
492
493if [ "$has_s1poe" = "1" ]; then
494 cat <<EOF >>"$model_param_file"
495-C cluster0.has_permission_overlay_s1=2
496-C cluster1.has_permission_overlay_s1=2
497EOF
498fi
499
500if [ "$has_s2poe" = "1" ]; then
501 cat <<EOF >>"$model_param_file"
502-C cluster0.has_permission_overlay_s2=2
503-C cluster1.has_permission_overlay_s2=2
504EOF
505fi
506
507if [ "$has_tcr2" = "1" ]; then
508 cat <<EOF >>"$model_param_file"
509-C cluster0.has_tcr2=2
510-C cluster1.has_tcr2=2
511EOF
512fi
513
514if [ "$has_csv2_2" = "1" ]; then
515 cat <<EOF >>"$model_param_file"
516-C cluster0.restriction_on_speculative_execution=2
517-C cluster1.restriction_on_speculative_execution=2
518EOF
519fi
520
521if [ "$has_gcs" = "1" ]; then
522 cat <<EOF >>"$model_param_file"
523-C cluster0.has_gcs=2
524-C cluster1.has_gcs=2
525EOF
526fi
527
Juan Pablo Condedce97602024-02-28 16:46:13 -0600528# Accelerator support level enabled
529if [ "$accelerator_support_level" != "0" ]; then
530 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000531-C cluster0.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600532EOF
533fi
534
Govindraj Raja93be6f22024-10-16 18:38:27 -0500535# FEAT_THE is enabled
536if [ "$has_translation_hardening" = "1" ]; then
537 cat <<EOF >>"$model_param_file"
Igor Podgainõic6f4ae22024-12-11 13:35:24 +0100538-C cluster0.has_translation_hardening=2
539-C cluster1.has_translation_hardening=2
Govindraj Raja93be6f22024-10-16 18:38:27 -0500540EOF
541fi
542
543# FEAT_D128 is enabled
544if [ "$has_d128" = "1" ]; then
545 cat <<EOF >>"$model_param_file"
Igor Podgainõic6f4ae22024-12-11 13:35:24 +0100546-C cluster0.has_128_bit_tt_descriptors=2
547-C cluster1.has_128_bit_tt_descriptors=2
Govindraj Raja93be6f22024-10-16 18:38:27 -0500548EOF
549fi
550
Arvind Ram Prakashe4602402024-11-19 10:19:02 -0600551# FEAT_FPMR support
552if [ "$has_fpmr" = "1" ]; then
553 cat <<EOF >>"$model_param_file"
554-C cluster0.has_fpmr="1"
555-C cluster1.has_fpmr="1"
556EOF
557fi
558
Boyan Karatotev7b4ff312025-02-27 11:38:49 +0000559if [ "$has_pmuv3p7" != "0" ]; then
560 cat <<EOF >>"$model_param_file"
561-C cluster0.has_v8_7_pmu_extension=2
562-C cluster1.has_v8_7_pmu_extension=2
563EOF
564fi
565
566if [ "$has_mops" != "0" ]; then
567 cat <<EOF >>"$model_param_file"
568-C cluster0.has_mops_option=1
569-C cluster1.has_mops_option=1
570EOF
571fi
572
Zelalemeb9c1bb2020-08-04 12:40:46 -0500573#------------ Cluster1 configuration (if exists) --------------
574if [ "$is_dual_cluster" = "1" ]; then
575 cat <<EOF >>"$model_param_file"
Federico Recanatiedf25d92022-03-02 20:54:19 +0100576${pa_size+-C cluster1.PA_SIZE=$pa_size}
577
Zelalemeb9c1bb2020-08-04 12:40:46 -0500578${cluster_1_reg_reset+-C cluster1.register_reset_data=$cluster_1_reg_reset}
579
580${cluster_1_has_el2+-C cluster1.has_el2=$cluster_1_has_el2}
581
582${amu_present+-C cluster1.has_amu=$amu_present}
583
584${reset_to_bl31+-C cluster1.cpu0.RVBAR=${bl31_addr:?}}
585${reset_to_bl31+-C cluster1.cpu1.RVBAR=${bl31_addr:?}}
586${reset_to_bl31+-C cluster1.cpu2.RVBAR=${bl31_addr:?}}
587${reset_to_bl31+-C cluster1.cpu3.RVBAR=${bl31_addr:?}}
588
589${reset_to_spmin+-C cluster1.cpu0.RVBAR=${bl32_addr:?}}
590${reset_to_spmin+-C cluster1.cpu1.RVBAR=${bl32_addr:?}}
591${reset_to_spmin+-C cluster1.cpu2.RVBAR=${bl32_addr:?}}
592${reset_to_spmin+-C cluster1.cpu3.RVBAR=${bl32_addr:?}}
593
594${cluster_1_num_cores+-C cluster1.NUM_CORES=$cluster_1_num_cores}
595
596${aarch64_only+-C cluster1.max_32bit_el=-1}
597
598${aarch32+-C cluster1.cpu0.CONFIG64=0}
599${aarch32+-C cluster1.cpu1.CONFIG64=0}
600${aarch32+-C cluster1.cpu2.CONFIG64=0}
601${aarch32+-C cluster1.cpu3.CONFIG64=0}
602
603${bl2_at_el3+-C cluster1.cpu0.RVBAR=${bl2_addr:?}}
604${bl2_at_el3+-C cluster1.cpu1.RVBAR=${bl2_addr:?}}
605${bl2_at_el3+-C cluster1.cpu2.RVBAR=${bl2_addr:?}}
606${bl2_at_el3+-C cluster1.cpu3.RVBAR=${bl2_addr:?}}
607
608${memory_tagging_support_level+-C cluster1.memory_tagging_support_level=$memory_tagging_support_level}
609
Alexei Fedorovc20018b2020-12-18 14:29:56 +0000610${has_branch_target_exception+-C cluster1.has_branch_target_exception=$has_branch_target_exception}
611
Olivier Deprez18101ca2021-04-23 19:42:04 +0200612${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution=$restriction_on_speculative_execution}
613
Zelalem Aweke52aad162021-10-25 17:28:03 -0500614${restriction_on_speculative_execution+-C cluster1.restriction_on_speculative_execution_aarch32=$restriction_on_speculative_execution}
615
Zelalemeb9c1bb2020-08-04 12:40:46 -0500616${gicv3_ext_interrupt_range+-C cluster1.gicv3.extended-interrupt-range-support=$gicv3_ext_interrupt_range}
Manish V Badarkhe43bb6312021-01-04 08:55:05 +0000617
618${mpidr_layout+-C cluster1.mpidr_layout=$mpidr_layout}
619
620${supports_multi_threading+-C cluster1.supports_multi_threading=$supports_multi_threading}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100621
Arvind Ram Prakashe756e0e2024-07-10 13:38:52 -0500622${has_v8_9_debug_extension+-C cluster1.has_v8_9_debug_extension=$has_v8_9_debug_extension}
623
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100624${etm_present+-C cluster1.cpu0.etm-present=$etm_present}
625${etm_present+-C cluster1.cpu1.etm-present=$etm_present}
626${etm_present+-C cluster1.cpu2.etm-present=$etm_present}
627${etm_present+-C cluster1.cpu3.etm-present=$etm_present}
Manish V Badarkhef32cad02021-07-19 18:43:58 +0100628${supports_system_trace_filter_regs+-C cluster1.has_self_hosted_trace_extension=$supports_system_trace_filter_regs}
629${supports_trace_buffer_control_regs+-C cluster1.has_trbe=$supports_trace_buffer_control_regs}
Manish V Badarkhebb2cdf02022-05-18 16:23:35 +0100630${supports_crc32+-C cluster1.cpu0.enable_crc32=$supports_crc32}
631${supports_crc32+-C cluster1.cpu1.enable_crc32=$supports_crc32}
632${supports_crc32+-C cluster1.cpu2.enable_crc32=$supports_crc32}
633${supports_crc32+-C cluster1.cpu3.enable_crc32=$supports_crc32}
Manish V Badarkhe970bc182021-07-19 10:28:12 +0100634
Harrison Mutai8b8cd3e2022-06-06 12:40:13 +0100635${cache_state_modelled+-C cluster1.stage12_tlb_size=1024}
636${cache_state_modelled+-C cluster1.check_memory_attributes=0}
637
Zelalemeb9c1bb2020-08-04 12:40:46 -0500638EOF
639
640# Parameters to select architecture version
641if [ "$arch_version" = "8.3" ]; then
642 cat <<EOF >>"$model_param_file"
643-C cluster1.has_arm_v8-3=1
644EOF
645fi
646
647if [ "$arch_version" = "8.4" ]; then
648 cat <<EOF >>"$model_param_file"
649-C cluster1.has_arm_v8-4=1
650EOF
651fi
652
653if [ "$arch_version" = "8.5" ]; then
654 cat <<EOF >>"$model_param_file"
655-C cluster1.has_arm_v8-5=1
656EOF
657fi
658
659if [ "$arch_version" = "8.6" ]; then
660 cat <<EOF >>"$model_param_file"
661-C cluster1.has_arm_v8-6=1
662EOF
663fi
664
Manish V Badarkhe59b56942021-12-31 17:34:09 +0000665if [ "$arch_version" = "8.7" ]; then
666 cat <<EOF >>"$model_param_file"
667-C cluster1.has_arm_v8-7=1
668EOF
669fi
670
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400671if [ "$arch_version" = "8.8" ]; then
672 cat <<EOF >>"$model_param_file"
673-C cluster1.has_arm_v8-8=1
674EOF
675fi
676
Zelalemeb9c1bb2020-08-04 12:40:46 -0500677# Parameters for fault injection
678if [ "$fault_inject" = "1" ]; then
679 cat <<EOF >>"$model_param_file"
680-C cluster1.number_of_error_records=2
681-C cluster1.has_ras=2
682-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}'
683-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}'
684EOF
685fi
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500686
Jayanth Dodderi Chidanand369f3592022-05-19 14:24:15 +0100687# FEAT_BRBE is enabled
688if [ "$has_brbe" = "1" ]; then
689 cat <<EOF >>"$model_param_file"
690-C cluster1.has_brbe=1
691EOF
692fi
693
694# FEAT_TRBE is enabled
695if [ "$has_trbe" = "1" ]; then
696 cat <<EOF >>"$model_param_file"
697-C cluster1.has_trbe=1
698EOF
699fi
700
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200701# FEAT_RME is enabled for the PE, plus additional arch options
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500702if [ "$has_rme" = "1" ]; then
703 cat <<EOF >>"$model_param_file"
Olivier Deprez5dc34ee2024-05-27 17:45:35 +0200704-C cluster1.rme_support_level=2
Zelalem Aweke773e19b2021-08-20 17:41:00 -0500705-C cluster1.gicv3.cpuintf-mmap-access-level=2
706-C cluster1.gicv4.mask-virtual-interrupt=1
707-C cluster1.gicv3.without-DS-support=1
708-C cluster1.max_32bit_el=-1
709-C cluster1.PA_SIZE=48
Olivier Deprez05476552024-05-27 17:54:49 +0200710-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 -0500711EOF
712fi
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400713
Juan Pablo Conde418e8b62022-08-25 11:34:58 -0400714# FEAT_PACQARMA3 is enabled
715if [ "$has_pacqarma3" = "1" ]; then
716 cat <<EOF >>"$model_param_file"
717-C cluster1.has_qarma3_pac=1
718EOF
719fi
720
Juan Pablo Conded0b527c2022-07-25 16:48:17 -0400721# FEAT_RNG is enabled
722if [ "$has_rng" = "1" ]; then
723 cat <<EOF >>"$model_param_file"
724-C cluster1.has_rndr=1
725EOF
726fi
727
728# FEAT_RNG_TRAP is enabled
729if [ "$has_rng_trap" = "1" ]; then
730 cat <<EOF >>"$model_param_file"
731-C cluster1.has_rndr_trap=1
732EOF
733fi
734
Juan Pablo Condedce97602024-02-28 16:46:13 -0600735# Accelerator support level enabled
736if [ "$accelerator_support_level" != "0" ]; then
737 cat <<EOF >>"$model_param_file"
Andre Przywara7e369dc2024-11-04 18:13:06 +0000738-C cluster1.arm_v8_7_accelerator_support_level="$accelerator_support_level"
Juan Pablo Condedce97602024-02-28 16:46:13 -0600739EOF
740fi
741
Zelalemeb9c1bb2020-08-04 12:40:46 -0500742fi
Federico Recanatiedf25d92022-03-02 20:54:19 +0100743
744# 48bit PA size: in order to access memory in high address ranges the
745# model must declare and the interconnect has to be configured to
746# support such address width.
747if [ "$pa_size" = "48" ]; then
748cat <<EOF >>"$model_param_file"
749-C bp.dram_size=4000000
750-C cci550.addr_width=48
751EOF
752fi