Go to the documentation of this file.
40 template <
class Types>
47 template <
class Types>
73 Base::cnthpirq[
i].bind(
cnthpirq[
i]->signal_in);
74 Base::cnthvirq[
i].bind(
cnthvirq[
i]->signal_in);
75 Base::cntpsirq[
i].bind(
cntpsirq[
i]->signal_in);
76 Base::cntvirq[
i].bind(
cntvirq[
i]->signal_in);
77 Base::commirq[
i].bind(
commirq[
i]->signal_in);
79 Base::pmuirq[
i].bind(
pmuirq[
i]->signal_in);
89 this->dont_initialize();
96 template <
class Types>
101 panic_if(Base::amba->transport_dbg(*trans) != trans->get_data_length(),
102 "Didn't send entire functional packet!");
106 template <
class Types>
110 Base::before_end_of_elaboration();
112 auto *cluster = gem5CpuCluster.value;
114 auto set_on_change = [cluster](
117 auto *pin = gen->get(cluster->getCore(num)->getContext(0));
118 auto handler = [pin](
bool status)
120 status ? pin->raise() : pin->clear();
125 for (
int i = 0;
i < CoreCount;
i++) {
126 set_on_change(*cnthpirq[
i], cluster->params().cnthpirq,
i);
127 set_on_change(*cnthvirq[
i], cluster->params().cnthvirq,
i);
128 set_on_change(*cntpsirq[
i], cluster->params().cntpsirq,
i);
129 set_on_change(*cntvirq[
i], cluster->params().cntvirq,
i);
130 set_on_change(*commirq[
i], cluster->params().commirq,
i);
131 set_on_change(*ctidbgirq[
i], cluster->params().ctidbgirq,
i);
132 set_on_change(*pmuirq[
i], cluster->params().pmuirq,
i);
133 set_on_change(*vcpumntirq[
i], cluster->params().vcpumntirq,
i);
134 set_on_change(*cntpnsirq[
i], cluster->params().cntpnsirq,
i);
138 template <
class Types>
142 if (if_name ==
"redistributor")
143 return *redist.at(idx);
144 else if (if_name ==
"amba")
147 return Base::gem5_getPort(if_name, idx);
158 FastModelScxEvsCortexA76x1Params::create()
164 FastModelScxEvsCortexA76x2Params::create()
170 FastModelScxEvsCortexA76x3Params::create()
176 FastModelScxEvsCortexA76x4Params::create()
std::vector< std::unique_ptr< SignalReceiver > > cnthpirq
std::vector< std::unique_ptr< SignalReceiver > > cntpnsirq
static const int CoreCount
ScxEvsCortexA76< ScxEvsCortexA76x1Types > ScxEvsCortexA76x1
std::vector< std::unique_ptr< SignalReceiver > > ctidbgirq
std::vector< std::unique_ptr< SignalReceiver > > commirq
std::vector< std::unique_ptr< SignalReceiver > > cnthvirq
static const std::string PeriodAttributeName
Port & gem5_getPort(const std::string &if_name, int idx) override
ScxEvsCortexA76< ScxEvsCortexA76x4Types > ScxEvsCortexA76x4
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.
static const std::string ClockEventName
static const std::string Gem5CpuClusterAttributeName
ClockRateControlInitiatorSocket clockRateControl
ScxEvsCortexA76< ScxEvsCortexA76x2Types > ScxEvsCortexA76x2
sc_core::sc_attribute< CortexA76Cluster * > gem5CpuCluster
sc_core::sc_attribute< Tick > clockPeriod
Ports are used to interface objects to each other.
sc_core::sc_event clockChanged
This SimObject is instantiated in the python world and serves as an ArmInterruptPin generator.
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
sc_core::sc_attribute< PortProxy::SendFunctionalFunc > sendFunctional
ScxEvsCortexA76(const sc_core::sc_module_name &mod_name, const Params &p)
void before_end_of_elaboration() override
std::vector< std::unique_ptr< TlmGicTarget > > redist
const std::string & name()
void onChange(OnChangeFunc func)
typename Types::Base Base
void sendFunc(PacketPtr pkt)
std::vector< std::unique_ptr< SignalReceiver > > cntpsirq
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
std::vector< std::unique_ptr< SignalReceiver > > vcpumntirq
virtual void bind(base_target_socket_type &s)
void clockChangeHandler()
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
static const std::string SendFunctionalAttributeName
typename Types::Params Params
std::vector< std::unique_ptr< SignalReceiver > > cntvirq
std::vector< std::unique_ptr< SignalReceiver > > pmuirq
std::string csprintf(const char *format, const Args &...args)
ScxEvsCortexA76< ScxEvsCortexA76x3Types > ScxEvsCortexA76x3
Generated on Wed Sep 30 2020 14:01:58 for gem5 by doxygen 1.8.17