87 top_reset.signal_out.set_state(0, new_val);
89 dbg_reset.signal_out.set_state(0, new_val);
114 Base::cnthpirq[
i].bind(
cnthpirq[
i]->signal_in);
115 Base::cnthvirq[
i].bind(
cnthvirq[
i]->signal_in);
116 Base::cntpsirq[
i].bind(
cntpsirq[
i]->signal_in);
117 Base::cntvirq[
i].bind(
cntvirq[
i]->signal_in);
118 Base::commirq[
i].bind(
commirq[
i]->signal_in);
120 Base::pmuirq[
i].bind(
pmuirq[
i]->signal_in);
129 dbg_reset.signal_out.bind(Base::dbg_reset);
135template <
class Types>
139 Base::before_end_of_elaboration();
141 auto set_on_change = [
this](
144 auto *pin = gen->get(
gem5CpuCluster->getCore(num)->getContext(0));
145 auto handler = [pin](
bool status)
147 status ? pin->raise() : pin->clear();
165template <
class Types>
169 if (if_name ==
"redistributor")
171 else if (if_name ==
"core_reset")
173 else if (if_name ==
"poweron_reset")
175 else if (if_name ==
"amba")
177 else if (if_name ==
"top_reset")
179 else if (if_name ==
"dbg_reset")
181 else if (if_name ==
"model_reset")
184 return Base::gem5_getPort(if_name, idx);
Base class for ARM GIC implementations.
This SimObject is instantiated in the python world and serves as an ArmInterruptPin generator.
Ports are used to interface objects to each other.
Abstract superclass for simulation objects.
std::vector< std::unique_ptr< SignalReceiver > > cntvirq
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
typename Types::Base Base
amba_pv::signal_master_port< T > SignalInitiator
std::vector< std::unique_ptr< SignalReceiver > > cntpnsirq
std::vector< std::unique_ptr< SignalReceiver > > pmuirq
void setResetAddr(int core, Addr addr, bool secure) override
std::vector< std::unique_ptr< SignalInitiator< uint64_t > > > rvbaraddr
static const int CoreCount
SignalSinkPort< bool > model_reset
void setCluster(SimObject *cluster) override
std::vector< std::unique_ptr< TlmGicTarget > > redist
std::vector< std::unique_ptr< SignalSender > > poweron_reset
CortexA76Cluster * gem5CpuCluster
std::vector< std::unique_ptr< SignalReceiver > > cnthpirq
std::vector< std::unique_ptr< SignalReceiver > > ctidbgirq
std::vector< std::unique_ptr< SignalSender > > core_reset
std::vector< std::unique_ptr< SignalReceiver > > cnthvirq
void before_end_of_elaboration() override
typename Types::Params Params
ClockRateControlInitiatorSocket clockRateControl
ClockRateControlInitiatorSocket periphClockRateControl
ScxEvsCortexA76(const Params &p)
void setClkPeriod(Tick clk_period) override
std::vector< std::unique_ptr< SignalReceiver > > cntpsirq
std::vector< std::unique_ptr< SignalReceiver > > vcpumntirq
std::vector< std::unique_ptr< SignalReceiver > > commirq
Port & gem5_getPort(const std::string &if_name, int idx) override
void setSysCounterFrq(uint64_t sys_counter_frq) override
void onChange(OnChangeFunc func)
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
std::string csprintf(const char *format, const Args &...args)
const std::string & name()