Skip to content

Class simtix::AtomicLoadStoreUnit

ClassList > simtix > AtomicLoadStoreUnit

Inherits the following classes: simtix::BaseLoadStoreUnit, simtix::sim::Clocked

Classes

Type Name
struct Request

Public Types inherited from simtix::BaseLoadStoreUnit

See simtix::BaseLoadStoreUnit

Type Name
typedef mem::MemoryInterface::OnResp OnResp
typedef mem::MemoryInterface::Payload Payload
typedef mem::MemoryInterface::RespStatus RespStatus

Public Functions

Type Name
AtomicLoadStoreUnit (const std::string & name, uint32_t num_outstanding_requests, const ArchParam & p=kDefaultArchParam)
virtual bool Busy () override
virtual std::optional< InstrPtr > Get () override
virtual void PushReadRequest (uint32_t tid, Payload payload, OnResp on_resp) override
virtual void PushWriteRequest (uint32_t tid, Payload payload, OnResp on_resp) override
virtual bool Put (InstrPtr instr) override
~AtomicLoadStoreUnit ()

Public Functions inherited from simtix::BaseLoadStoreUnit

See simtix::BaseLoadStoreUnit

Type Name
virtual void AttachDMem (mem::MemoryInterface * dmem_port)
BaseLoadStoreUnit (const std::string & name, const ArchParam & p=kDefaultArchParam)
virtual void PushReadRequest (uint32_t tid, Payload payload, OnResp on_resp) = 0
virtual void PushWriteRequest (uint32_t tid, Payload payload, OnResp on_resp) = 0

Public Functions inherited from simtix::BaseFunctionUnit

See simtix::BaseFunctionUnit

Type Name
virtual bool Busy () = 0
virtual std::optional< InstrPtr > Get () = 0
virtual bool Put (InstrPtr instr) = 0
virtual ~BaseFunctionUnit () = default

Public Functions inherited from simtix::sim::Clocked

See simtix::sim::Clocked

Type Name
Clocked (const std::string & name, TickPri pri=kDefaultPri)
Constructor for clocled.
const std::string & name () const
Get the name of the clocked object.
virtual ~Clocked ()

Protected Attributes

Type Name
std::vector< Request > outstanding_requests_
bool requesting_ = false

Protected Attributes inherited from simtix::BaseLoadStoreUnit

See simtix::BaseLoadStoreUnit

Type Name
mem::MemoryInterface * dmem_port_ = nullptr

Protected Attributes inherited from simtix::sim::Clocked

See simtix::sim::Clocked

Type Name
std::string name_
TickPri pri_

Protected Static Attributes inherited from simtix::sim::Clocked

See simtix::sim::Clocked

Type Name
bool busy_ = true
std::map< TickPri, std::vector< Clocked * > > clocked_objs_map_
uint64_t cur_tick_ = 0

Protected Functions

Type Name
virtual bool HasPendingTasks () override
Checks if any registered clocked objects have pending tasks at the current tick.
virtual void Tick () override
Global tick function that advances the simulation by one cycle.

Protected Functions inherited from simtix::sim::Clocked

See simtix::sim::Clocked

Type Name
virtual bool HasPendingTasks () = 0
Checks if any registered clocked objects have pending tasks at the current tick.
virtual void Tick () = 0
Global tick function that advances the simulation by one cycle.

Protected Static Functions inherited from simtix::sim::Clocked

See simtix::sim::Clocked

Type Name
void Register (Clocked * c)
Register a clocked object to participate in tick-driven simulation.
void Unregister (Clocked * c)
Unregister a clocked object from tick-driven simulation.

Public Functions Documentation

function AtomicLoadStoreUnit

inline explicit simtix::AtomicLoadStoreUnit::AtomicLoadStoreUnit (
    const std::string & name,
    uint32_t num_outstanding_requests,
    const ArchParam & p=kDefaultArchParam
) 

function Busy

virtual bool simtix::AtomicLoadStoreUnit::Busy () override

Implements simtix::BaseFunctionUnit::Busy


function Get

virtual std::optional< InstrPtr > simtix::AtomicLoadStoreUnit::Get () override

Implements simtix::BaseFunctionUnit::Get


function PushReadRequest

virtual void simtix::AtomicLoadStoreUnit::PushReadRequest (
    uint32_t tid,
    Payload payload,
    OnResp on_resp
) override

Implements simtix::BaseLoadStoreUnit::PushReadRequest


function PushWriteRequest

virtual void simtix::AtomicLoadStoreUnit::PushWriteRequest (
    uint32_t tid,
    Payload payload,
    OnResp on_resp
) override

Implements simtix::BaseLoadStoreUnit::PushWriteRequest


function Put

virtual bool simtix::AtomicLoadStoreUnit::Put (
    InstrPtr instr
) override

Implements simtix::BaseFunctionUnit::Put


function ~AtomicLoadStoreUnit

inline simtix::AtomicLoadStoreUnit::~AtomicLoadStoreUnit () 

Protected Attributes Documentation

variable outstanding_requests_

std::vector<Request> simtix::AtomicLoadStoreUnit::outstanding_requests_;

variable requesting_

bool simtix::AtomicLoadStoreUnit::requesting_;

Protected Functions Documentation

function HasPendingTasks

Checks if any registered clocked objects have pending tasks at the current tick.

virtual bool simtix::AtomicLoadStoreUnit::HasPendingTasks () override

Returns:

True if there are pending tasks, false otherwise.

Implements simtix::sim::Clocked::HasPendingTasks


function Tick

Global tick function that advances the simulation by one cycle.

virtual void simtix::AtomicLoadStoreUnit::Tick () override

Call this function to drive all registered tick-driven objects.

Implements simtix::sim::Clocked::Tick



The documentation for this class was generated from the following file projects/simtix/src/simtix/sm/fu/lsu/atomic.h