58 params().enable_trace_special_hlt_imm16);
61 params().l2cache_maintenance_latency);
64 params().l2cache_read_access_latency);
68 params().l2cache_snoop_data_transfer_latency);
70 params().l2cache_snoop_issue_latency);
72 params().l2cache_write_access_latency);
95 if (if_name ==
"redistributor")
104 for (
int i = 0;
i < p.cores.size();
i++)
105 p.cores[
i]->setCluster(
this,
i);
110 auto *gem5_cluster_attr =
112 panic_if(base && !gem5_cluster_attr,
113 "The EVS gem5 CPU cluster attribute was not of type " 114 "sc_attribute<FastModel::CortexA76Cluster *>.");
115 if (gem5_cluster_attr)
116 gem5_cluster_attr->value =
this;
119 set_evs_param(
"core.BROADCASTCACHEMAINT", p.BROADCASTCACHEMAINT);
126 set_evs_param(
"core.dcache-hit_latency", p.dcache_hit_latency);
128 p.dcache_maintenance_latency);
129 set_evs_param(
"core.dcache-miss_latency", p.dcache_miss_latency);
131 p.dcache_prefetch_enabled);
133 p.dcache_read_access_latency);
134 set_evs_param(
"core.dcache-read_latency", p.dcache_read_latency);
136 p.dcache_snoop_data_transfer_latency);
137 set_evs_param(
"core.dcache-state_modelled", p.dcache_state_modelled);
139 p.dcache_write_access_latency);
140 set_evs_param(
"core.dcache-write_latency", p.dcache_write_latency);
143 set_evs_param(
"core.enable_simulation_performance_optimizations",
144 p.enable_simulation_performance_optimizations);
146 p.ext_abort_device_read_is_sync);
148 p.ext_abort_device_write_is_sync);
150 p.ext_abort_so_read_is_sync);
152 p.ext_abort_so_write_is_sync);
154 p.gicv3_cpuintf_mmap_access_level);
155 set_evs_param(
"core.has_peripheral_port", p.has_peripheral_port);
157 p.has_statistical_profiling);
158 set_evs_param(
"core.icache-hit_latency", p.icache_hit_latency);
160 p.icache_maintenance_latency);
161 set_evs_param(
"core.icache-miss_latency", p.icache_miss_latency);
163 p.icache_prefetch_enabled);
165 p.icache_read_access_latency);
166 set_evs_param(
"core.icache-read_latency", p.icache_read_latency);
167 set_evs_param(
"core.icache-state_modelled", p.icache_state_modelled);
168 set_evs_param(
"core.l3cache-hit_latency", p.l3cache_hit_latency);
170 p.l3cache_maintenance_latency);
171 set_evs_param(
"core.l3cache-miss_latency", p.l3cache_miss_latency);
173 p.l3cache_read_access_latency);
174 set_evs_param(
"core.l3cache-read_latency", p.l3cache_read_latency);
177 p.l3cache_snoop_data_transfer_latency);
179 p.l3cache_snoop_issue_latency);
181 p.l3cache_write_access_latency);
182 set_evs_param(
"core.l3cache-write_latency", p.l3cache_write_latency);
184 p.pchannel_treat_simreset_as_poreset);
185 set_evs_param(
"core.periph_address_end", p.periph_address_end);
186 set_evs_param(
"core.periph_address_start", p.periph_address_start);
190 p.treat_dcache_cmos_to_pou_as_nop);
191 set_evs_param(
"core.walk_cache_latency", p.walk_cache_latency);
197 if (if_name ==
"amba") {
207 FastModelCortexA76Params::create()
213 FastModelCortexA76ClusterParams::create()
sc_attr_base * get_attribute(const std::string &)
Ports are used to interface objects to each other.
void set_evs_param(const std::string &n, T val)
CortexA76Cluster * cluster
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port on this CPU.
CortexA76Cluster(Params &p)
std::vector< ThreadContext * > threadContexts
virtual Port & getPort(const std::string &if_name, PortID idx=InvalidPortID)
Get a port with a given name and index.
sc_core::sc_module * getEvs()
void setCluster(CortexA76Cluster *_cluster, int _num)
void set_evs_param(const std::string &n, T val)
Base class for ARM GIC implementations.
static const std::string Gem5CpuClusterAttributeName
virtual ::Port & gem5_getPort(const std::string &if_name, int idx=-1)
void initState() override
initState() is called on each SimObject when not restoring from a checkpoint.
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
FastModelCortexA76ClusterParams Params
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
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.