Go to the documentation of this file.
44 template <
class Types>
51 template <
class Types>
55 periphClockRateControl->set_mul_div(sys_counter_frq, 1);
58 template <
class Types>
63 panic_if(!gem5CpuCluster,
"Cluster should be of type CortexA76Cluster");
66 template <
class Types>
70 this->rvbaraddr[core]->set_state(0,
addr);
73 template <
class Types>
97 Base::cnthpirq[
i].bind(
cnthpirq[
i]->signal_in);
98 Base::cnthvirq[
i].bind(
cnthvirq[
i]->signal_in);
99 Base::cntpsirq[
i].bind(
cntpsirq[
i]->signal_in);
100 Base::cntvirq[
i].bind(
cntvirq[
i]->signal_in);
101 Base::commirq[
i].bind(
commirq[
i]->signal_in);
103 Base::pmuirq[
i].bind(
pmuirq[
i]->signal_in);
113 template <
class Types>
118 panic_if(Base::amba->transport_dbg(*trans) != trans->get_data_length(),
119 "Didn't send entire functional packet!");
123 template <
class Types>
127 Base::before_end_of_elaboration();
129 auto set_on_change = [
this](
132 auto *pin = gen->get(gem5CpuCluster->getCore(num)->getContext(0));
133 auto handler = [pin](
bool status)
135 status ? pin->raise() : pin->clear();
140 for (
int i = 0;
i < CoreCount;
i++) {
141 set_on_change(*cnthpirq[
i], gem5CpuCluster->params().cnthpirq,
i);
142 set_on_change(*cnthvirq[
i], gem5CpuCluster->params().cnthvirq,
i);
143 set_on_change(*cntpsirq[
i], gem5CpuCluster->params().cntpsirq,
i);
144 set_on_change(*cntvirq[
i], gem5CpuCluster->params().cntvirq,
i);
145 set_on_change(*commirq[
i], gem5CpuCluster->params().commirq,
i);
146 set_on_change(*ctidbgirq[
i], gem5CpuCluster->params().ctidbgirq,
i);
147 set_on_change(*pmuirq[
i], gem5CpuCluster->params().pmuirq,
i);
148 set_on_change(*vcpumntirq[
i], gem5CpuCluster->params().vcpumntirq,
i);
149 set_on_change(*cntpnsirq[
i], gem5CpuCluster->params().cntpnsirq,
i);
153 template <
class Types>
157 if (if_name ==
"redistributor")
158 return *redist.at(idx);
159 else if (if_name ==
"amba")
162 return Base::gem5_getPort(if_name, idx);
std::vector< std::unique_ptr< SignalInitiator< uint64_t > > > rvbaraddr
std::vector< std::unique_ptr< SignalReceiver > > cntpsirq
ClockRateControlInitiatorSocket periphClockRateControl
void setResetAddr(int core, Addr addr, bool secure) override
tlm::tlm_generic_payload * packet2payload(PacketPtr packet)
Convert a gem5 packet to a TLM payload by copying all the relevant information to new tlm payload.
std::vector< std::unique_ptr< SignalReceiver > > pmuirq
std::vector< std::unique_ptr< SignalReceiver > > cnthpirq
std::string csprintf(const char *format, const Args &...args)
std::vector< std::unique_ptr< SignalReceiver > > commirq
void setCluster(SimObject *cluster) override
std::vector< std::unique_ptr< SignalReceiver > > cntpnsirq
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void before_end_of_elaboration() override
uint64_t Tick
Tick count type.
static const int CoreCount
std::vector< std::unique_ptr< SignalReceiver > > cntvirq
Abstract superclass for simulation objects.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
GEM5_DEPRECATED_NAMESPACE(GuestABI, guest_abi)
const std::string & name()
ScxEvsCortexA76(const Params &p)
void setSysCounterFrq(uint64_t sys_counter_frq) override
sc_gem5::TlmTargetBaseWrapper< 64, svp_gicv3_comms::gicv3_comms_fw_if, svp_gicv3_comms::gicv3_comms_bw_if, 1, sc_core::SC_ONE_OR_MORE_BOUND > TlmGicTarget
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
virtual void bind(base_target_socket_type &s)
void onChange(OnChangeFunc func)
std::vector< std::unique_ptr< TlmGicTarget > > redist
void setClkPeriod(Tick clk_period) override
Ports are used to interface objects to each other.
typename Types::Base Base
std::vector< std::unique_ptr< SignalReceiver > > vcpumntirq
void sendFunc(PacketPtr pkt) override
ClockRateControlInitiatorSocket clockRateControl
amba_pv::signal_master_port< T > SignalInitiator
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
typename Types::Params Params
Port & gem5_getPort(const std::string &if_name, int idx) override
std::vector< std::unique_ptr< SignalReceiver > > cnthvirq
std::vector< std::unique_ptr< SignalReceiver > > ctidbgirq
This SimObject is instantiated in the python world and serves as an ArmInterruptPin generator.
Generated on Wed May 4 2022 12:13:46 for gem5 by doxygen 1.8.17