C++ Device API Reference Manual
Reference documentation for the Simics C++ Device API.
 
Loading...
Searching...
No Matches
simics::HierarchicalObject Class Reference

Base class for Bank, Register, and Field classes. More...

#include <hierarchical-object.h>

Inheritance diagram for simics::HierarchicalObject:
simics::HierarchicalObjectInterface simics::Bank simics::Field simics::Register simics::PortBank<> simics::BigEndianBank simics::MissPatternBank simics::PortBank< TBank, Args > simics::SharedMemoryBank simics::ClearOnReadField simics::ConstantField simics::DesignLimitationField simics::IgnoreWriteField simics::Read0Field simics::ReadConstantField simics::ReadOnlyField simics::ReadUnimplField simics::RegisterField< TField, Args > simics::ReservedField simics::SilentUnimplField simics::UndocumentedField simics::UnimplField simics::Write0OnlyField simics::Write1ClearsField simics::Write1OnlyField simics::WriteOnceField simics::WriteUnimplField simics::AliasRegister simics::BankRegister< TRegister, Args > simics::ClearOnReadRegister simics::ConstantRegister simics::DesignLimitationRegister simics::IgnoreWriteRegister simics::Read0Register simics::ReadConstantRegister simics::ReadOnlyRegister simics::ReadUnimplRegister simics::ReservedRegister simics::SilentConstantRegister simics::SilentUnimplRegister simics::UndocumentedRegister simics::UnimplRegister simics::UnmappedRegister simics::Write0OnlyRegister simics::Write1ClearsRegister simics::Write1OnlyRegister simics::WriteOnceRegister simics::WriteOnlyRegister simics::WriteUnimplRegister

Public Member Functions

 HierarchicalObject (MappableConfObject *dev_obj, const std::string &name)
 Constructor for HierarchicalObject.
 
virtual ~HierarchicalObject ()
 
 HierarchicalObject (const HierarchicalObject &)=delete
 
HierarchicalObjectoperator= (const HierarchicalObject &)=delete
 
 HierarchicalObject (HierarchicalObject &&rhs) noexcept
 
HierarchicalObjectoperator= (HierarchicalObject &&rhs) noexcept
 
template<typename T >
T * dev_ptr ()
 
const std::string & hierarchical_name () const override
 
std::string_view name () const override
 
const std::string & description () const override
 
void set_description (std::string_view desc) override
 
Level hierarchy_level () const override
 
std::string_view bank_name () const override
 
MappableConfObjectdev_obj () const override
 
ConfObjectRef bank_obj_ref () const override
 
std::string_view parent_name () const override
 
FieldInterfacelookup_field (const std::string &name) const override
 
RegisterInterfacelookup_register (const std::string &name) const override
 
BankInterfacelookup_bank (const std::string &name) const override
 
virtual const std::string & hierarchical_name () const =0
 
virtual std::string_view name () const =0
 
virtual const std::string & description () const =0
 
virtual void set_description (std::string_view desc)=0
 
virtual Level hierarchy_level () const =0
 
virtual std::string_view bank_name () const =0
 
virtual MappableConfObjectdev_obj () const =0
 
virtual ConfObjectRef bank_obj_ref () const =0
 
virtual std::string_view parent_name () const =0
 
virtual FieldInterfacelookup_field (const std::string &name) const =0
 
virtual RegisterInterfacelookup_register (const std::string &name) const =0
 
virtual BankInterfacelookup_bank (const std::string &name) const =0
 

Static Public Member Functions

static bool is_valid_hierarchical_name (std::string_view name)
 
static std::string_view::size_type level_of_hierarchical_name (std::string_view name)
 

Static Public Attributes

static const uint64_t Register_Read {1}
 Log group ID for Register_Read and Register_Write is fixed.
 
static const uint64_t Register_Write {2}
 
static const uint64_t Register_Read_Exception {3}
 
static const uint64_t Register_Write_Exception {4}
 

Detailed Description

Base class for Bank, Register, and Field classes.

The HierarchicalObject class serves as a base class for objects used in bank register modeling. A register bank contains registers, and each register can contain fields. This class provides common functionality and interfaces for these hierarchical objects.

Constructor & Destructor Documentation

◆ HierarchicalObject() [1/3]

simics::HierarchicalObject::HierarchicalObject ( MappableConfObject dev_obj,
const std::string &  name 
)

Constructor for HierarchicalObject.

Parameters
dev_objPointer to the device object.
nameUnique hierarchical name of a bank/register/field.

◆ ~HierarchicalObject()

virtual simics::HierarchicalObject::~HierarchicalObject ( )
virtual

◆ HierarchicalObject() [2/3]

simics::HierarchicalObject::HierarchicalObject ( const HierarchicalObject )
delete

◆ HierarchicalObject() [3/3]

simics::HierarchicalObject::HierarchicalObject ( HierarchicalObject &&  rhs)
noexcept

Member Function Documentation

◆ bank_name()

std::string_view simics::HierarchicalObject::bank_name ( ) const
overridevirtual
Returns
the name of the bank where the hierarchical object starts with

Implements simics::HierarchicalObjectInterface.

◆ bank_obj_ref()

ConfObjectRef simics::HierarchicalObject::bank_obj_ref ( ) const
overridevirtual
Returns
the bank ConfObjectRef that the hierarchical object associated with

Implements simics::HierarchicalObjectInterface.

Reimplemented in simics::Register.

◆ description()

const std::string & simics::HierarchicalObject::description ( ) const
overridevirtual
Returns
the description of the object

Implements simics::HierarchicalObjectInterface.

Reimplemented in simics::Register.

◆ dev_obj()

MappableConfObject * simics::HierarchicalObject::dev_obj ( ) const
overridevirtual
Returns
the device object holds the bank

Implements simics::HierarchicalObjectInterface.

Reimplemented in simics::Register.

◆ dev_ptr()

template<typename T >
T * simics::HierarchicalObject::dev_ptr ( )
inline
Returns
Pointer to the device object

◆ hierarchical_name()

const std::string & simics::HierarchicalObject::hierarchical_name ( ) const
overridevirtual
Returns
the full name of the object starts with the bank name

Implements simics::HierarchicalObjectInterface.

Reimplemented in simics::Register.

◆ hierarchy_level()

Level simics::HierarchicalObject::hierarchy_level ( ) const
overridevirtual
Returns
the hierarchy level of the object

Implements simics::HierarchicalObjectInterface.

◆ is_valid_hierarchical_name()

static bool simics::HierarchicalObject::is_valid_hierarchical_name ( std::string_view  name)
static
Returns
If the hierarchical name is valid

◆ level_of_hierarchical_name()

static std::string_view::size_type simics::HierarchicalObject::level_of_hierarchical_name ( std::string_view  name)
static
Returns
The level of the hierarchical name throws an exception if level is greater than 2

◆ lookup_bank()

BankInterface * simics::HierarchicalObject::lookup_bank ( const std::string &  name) const
overridevirtual
Returns
the bank interface according to a bank name

Implements simics::HierarchicalObjectInterface.

◆ lookup_field()

FieldInterface * simics::HierarchicalObject::lookup_field ( const std::string &  name) const
overridevirtual
Returns
the field interface according to a field name

Implements simics::HierarchicalObjectInterface.

◆ lookup_register()

RegisterInterface * simics::HierarchicalObject::lookup_register ( const std::string &  name) const
overridevirtual
Returns
the register interface according to a register name

Implements simics::HierarchicalObjectInterface.

◆ name()

std::string_view simics::HierarchicalObject::name ( ) const
overridevirtual
Returns
the name of the object only

Implements simics::HierarchicalObjectInterface.

Reimplemented in simics::Register.

◆ operator=() [1/2]

HierarchicalObject & simics::HierarchicalObject::operator= ( const HierarchicalObject )
delete

◆ operator=() [2/2]

HierarchicalObject & simics::HierarchicalObject::operator= ( HierarchicalObject &&  rhs)
noexcept

◆ parent_name()

std::string_view simics::HierarchicalObject::parent_name ( ) const
overridevirtual
Returns
the parent's hierarchical name

Implements simics::HierarchicalObjectInterface.

◆ set_description()

void simics::HierarchicalObject::set_description ( std::string_view  desc)
overridevirtual

Member Data Documentation

◆ Register_Read

const uint64_t simics::HierarchicalObject::Register_Read {1}
static

Log group ID for Register_Read and Register_Write is fixed.

◆ Register_Read_Exception

const uint64_t simics::HierarchicalObject::Register_Read_Exception {3}
static

◆ Register_Write

const uint64_t simics::HierarchicalObject::Register_Write {2}
static

◆ Register_Write_Exception

const uint64_t simics::HierarchicalObject::Register_Write_Exception {4}
static

The documentation for this class was generated from the following file: