63 params().enable_trace_special_hlt_imm16);
66 params().l2cache_maintenance_latency);
69 params().l2cache_read_access_latency);
73 params().l2cache_snoop_data_transfer_latency);
75 params().l2cache_snoop_issue_latency);
77 params().l2cache_write_access_latency);
106 if (if_name ==
"redistributor" || if_name ==
"core_reset" ||
107 if_name ==
"poweron_reset")
116 for (
int i = 0;
i <
p.cores.size();
i++)
117 p.cores[
i]->setCluster(
this,
i);
120 panic_if(!
e,
"EVS should be of type Iris::BaseCpuEvs");
133 p.dcache_maintenance_latency);
136 p.dcache_prefetch_enabled);
138 p.dcache_read_access_latency);
141 p.dcache_snoop_data_transfer_latency);
142 set_evs_param(
"core.dcache-state_modelled",
p.dcache_state_modelled);
144 p.dcache_write_access_latency);
145 set_evs_param(
"core.dcache-write_latency",
p.dcache_write_latency);
148 set_evs_param(
"core.enable_simulation_performance_optimizations",
149 p.enable_simulation_performance_optimizations);
151 p.ext_abort_device_read_is_sync);
153 p.ext_abort_device_write_is_sync);
155 p.ext_abort_so_read_is_sync);
157 p.ext_abort_so_write_is_sync);
159 p.gicv3_cpuintf_mmap_access_level);
162 p.has_statistical_profiling);
165 p.icache_maintenance_latency);
168 p.icache_prefetch_enabled);
170 p.icache_read_access_latency);
172 set_evs_param(
"core.icache-state_modelled",
p.icache_state_modelled);
175 p.l3cache_maintenance_latency);
176 set_evs_param(
"core.l3cache-miss_latency",
p.l3cache_miss_latency);
178 p.l3cache_read_access_latency);
179 set_evs_param(
"core.l3cache-read_latency",
p.l3cache_read_latency);
182 p.l3cache_snoop_data_transfer_latency);
184 p.l3cache_snoop_issue_latency);
186 p.l3cache_write_access_latency);
187 set_evs_param(
"core.l3cache-write_latency",
p.l3cache_write_latency);
189 p.pchannel_treat_simreset_as_poreset);
191 set_evs_param(
"core.periph_address_start",
p.periph_address_start);
195 p.treat_dcache_cmos_to_pou_as_nop);
202 if (if_name ==
"amba" || if_name ==
"top_reset" ||
203 if_name ==
"dbg_reset" || if_name ==
"model_reset") {
Base class for ARM GIC implementations.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port on this CPU.
std::vector< ThreadContext * > threadContexts
Iris::BaseCpuEvs * evs_base_cpu
virtual void setSysCounterFrq(uint64_t sys_counter_frq)=0
virtual void setResetAddr(int core, Addr addr, bool secure)=0
Ports are used to interface objects to each other.
Abstract superclass for simulation objects.
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
void set_evs_param(const std::string &n, T val)
CortexA76Cluster(const Params &p)
sc_core::sc_module * getEvs() const
void setCluster(CortexA76Cluster *_cluster, int _num)
void set_evs_param(const std::string &n, T val)
void initState() override
initState() is called on each SimObject when not restoring from a checkpoint.
void setResetAddr(Addr addr, bool secure=false) override
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port on this CPU.
CortexA76Cluster * cluster
virtual gem5::Port & gem5_getPort(const std::string &if_name, int idx=-1)
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
const Params & params() const
virtual Port & getPort(const std::string &if_name, PortID idx=InvalidPortID)
Get a port with a given name and index.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.