28#ifndef __ARCH_ARM_FASTMODEL_CORTEXR52_EVS_HH__
29#define __ARCH_ARM_FASTMODEL_CORTEXR52_EVS_HH__
41#include "params/FastModelScxEvsCortexR52x1.hh"
42#include "params/FastModelScxEvsCortexR52x2.hh"
43#include "params/FastModelScxEvsCortexR52x3.hh"
44#include "params/FastModelScxEvsCortexR52x4.hh"
45#include "scx_evs_CortexR52x1.h"
46#include "scx_evs_CortexR52x2.h"
47#include "scx_evs_CortexR52x3.h"
48#include "scx_evs_CortexR52x4.h"
69 using Base =
typename Types::Base;
70 using Params =
typename Types::Params;
94 evs->signalInterrupt->ppi(
cpu, num,
true);
100 evs->signalInterrupt->ppi(
cpu, num,
false);
142 this->signalInterrupt->spi(num,
true);
148 this->signalInterrupt->spi(num,
false);
156 Base::end_of_elaboration();
157 Base::start_of_simulation();
172 using Base = scx_evs_CortexR52x1;
173 using Params = FastModelScxEvsCortexR52x1Params;
181 using Base = scx_evs_CortexR52x2;
182 using Params = FastModelScxEvsCortexR52x2Params;
190 using Base = scx_evs_CortexR52x3;
191 using Params = FastModelScxEvsCortexR52x3Params;
199 using Base = scx_evs_CortexR52x4;
200 using Params = FastModelScxEvsCortexR52x4Params;
Ports are used to interface objects to each other.
Abstract superclass for simulation objects.
void raiseInterruptPin(int num)
IntSinkPin< ScxEvsCortexR52 > ClstrInt
static const int SpiCount
void setSysCounterFrq(uint64_t sys_counter_frq) override
static const int PpiCount
SignalSinkPort< bool > model_reset
std::vector< std::unique_ptr< ClstrInt > > spis
void lowerInterruptPin(int num)
ScxEvsCortexR52(const sc_core::sc_module_name &mod_name, const Params &p)
CortexR52Cluster * gem5CpuCluster
typename Types::Base Base
void end_of_elaboration() override
Port & gem5_getPort(const std::string &if_name, int idx) override
SC_HAS_PROCESS(ScxEvsCortexR52)
void setCluster(SimObject *cluster) override
void setClkPeriod(Tick clk_period) override
std::vector< std::unique_ptr< CorePins > > corePins
SignalInterruptInitiatorSocket signalInterrupt
typename Types::Params Params
ScxEvsCortexR52< Types > Evs
void setResetAddr(int core, Addr addr, bool secure) override
static const int CoreCount
ScxEvsCortexR52(const Params &p)
void start_of_simulation() override
ClockRateControlInitiatorSocket clockRateControl
ScxEvsCortexR52< ScxEvsCortexR52x3Types > ScxEvsCortexR52x3
ScxEvsCortexR52< ScxEvsCortexR52x1Types > ScxEvsCortexR52x1
sc_gem5::TlmInitiatorWrapper< 64, amba_pv::amba_pv_protocol_types > AmbaInitiator
sc_gem5::TlmTargetWrapper< 64, amba_pv::amba_pv_protocol_types > AmbaTarget
ScxEvsCortexR52< ScxEvsCortexR52x4Types > ScxEvsCortexR52x4
ScxEvsCortexR52< ScxEvsCortexR52x2Types > ScxEvsCortexR52x2
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.
IntSinkPinBase IntSinkPin
PortProxy Object Declaration.
amba_pv::signal_master_port< T > SignalInitiator
IntSinkPin< CorePins > CoreInt
std::vector< std::unique_ptr< CoreInt > > ppis
SignalSender poweron_reset
SignalInitiator< uint64_t > cfgvectable
void lowerInterruptPin(int num)
CorePins(Evs *_evs, int _cpu)
SignalReceiverInt standbywfi
void raiseInterruptPin(int num)
static const int CoreCount
FastModelScxEvsCortexR52x1Params Params
static const int CoreCount
FastModelScxEvsCortexR52x2Params Params
FastModelScxEvsCortexR52x3Params Params
static const int CoreCount
FastModelScxEvsCortexR52x4Params Params
static const int CoreCount
const std::string & name()