ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
|
Generated on Thu, 24 Oct 2024 10:16:12 +0200. More...
#include <RV64IMACFDArchSpecificImp.h>
Public Member Functions | |
RegField_RV64IMACFD (etiss::VirtualStruct &parent, unsigned gprid) | |
RegField_RV64IMACFD (etiss::VirtualStruct &parent, std::string name, unsigned gprid) | |
virtual | ~RegField_RV64IMACFD () |
![]() | |
Field (VirtualStruct &parent, const std::string &name, const std::string &prettyname, int flags, size_t width, size_t bitwidth=0) | |
Field (VirtualStruct &parent, const std::string &name, const std::string &prettyname, int flags, size_t width, bool virtual_enabled, std::function< uint64_t()> lread, std::function< void(uint64_t)> lwrite, size_t bitwidth=0) | |
virtual | ~Field () |
uint64_t | read () const |
function to read bits/a value from the Field. | |
void | write (uint64_t) |
function to write bits/a value to the Field. | |
bool | applyBitflip (unsigned position, uint64_t fault_id) |
function to write a bitflip to a field | |
bool | applyAction (const etiss::fault::Fault &f, const etiss::fault::Action &a, std::string &errormsg) |
advanced fault injection. Field must have the A flag to use this. | |
void | signalWrite () |
this function should be called if the listener flag is set and the field changed without using the write() function. | |
Field * | setDeleteP (std::function< void(Field *)> del) |
Field & | setDelete (std::function< void(Field *)> del) |
bool | addListener (Listener *listener, std::shared_ptr< Listener > ref=nullptr) |
void | removeListener (Listener *listener, std::shared_ptr< Listener > ref=nullptr) |
Protected Member Functions | |
virtual uint64_t | _read () const |
override this function to implement reads in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA | |
virtual void | _write (uint64_t val) |
override this function to implement writes in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA | |
![]() | |
virtual bool | _applyBitflip (unsigned position, uint64_t fault_id) |
override this function to implement bitflip applying to a field | |
virtual bool | _applyAction (const etiss::fault::Fault &f, const etiss::fault::Action &a, std::string &errormsg) |
override this function to implement advanced action handling | |
Private Attributes | |
const unsigned | gprid_ |
Additional Inherited Members | |
![]() | |
enum | AccessMode { VIRTUAL , LAMBDA , PREFER_LAMBDA } |
defines how a field should perform reads/writes. More... | |
![]() | |
VirtualStruct & | parent_ |
reference to parent virtual struct | |
const std::string | name_ |
name of the field. | |
const std::string | prettyname_ |
alternative/human readable name of the field. | |
const int | flags_ |
read write flags as specified by the static const int parameters of Field: R,W,L | |
const size_t | width_ |
width in bytes (rounded up if neccessary) | |
const size_t | bitwidth_ |
width in bits | |
const AccessMode | accessMode_ |
std::function< bool(unsigned position, uint64_t fault_id)> | lapplyBitflip |
if this function is set the the default implementation of applyBitflip will use it | |
std::function< void(Field *)> | delete_ |
![]() | |
static const int | R = 1 |
read flag | |
static const int | W = 2 |
write flag | |
static const int | RW = R | W |
flags to signal that a field supports read and write operations | |
static const int | L = 4 |
supports listener plugins; used for etiss::RegisterDevicePlugins to determine access to a variable/field | |
static const int | F = 8 |
supports fault injection/tracing | |
static const int | A = 16 |
supports advanced fault injection/tracing with the applyAction function | |
static const int | P = 32 |
private field: this flag indicates that this field is an implementation specific field that e.g. | |
![]() | |
std::function< uint64_t()> | lread |
set this function for reads in case of AccessMode::LAMBDA / AccessMode::PREFER_LAMBDA | |
std::function< void(uint64_t)> | lwrite |
set this function for writes in case of AccessMode::LAMBDA / AccessMode::PREFER_LAMBDA | |
Generated on Thu, 24 Oct 2024 10:16:12 +0200.
This file contains the architecture specific header for the RV64IMACFD core architecture.
WARNING: This file contains user-added code, be mindful when overwriting this with generated code!
VirtualStruct for RV64IMACFD architecture to faciliate register acess
VirtualStruct enables user to access certain register via their name without knowning ETISS hierarchy of a core. Further fiels might be needed to enable gdbserver etc.
Definition at line 21 of file RV64IMACFDArchSpecificImp.h.
|
inline |
Definition at line 25 of file RV64IMACFDArchSpecificImp.h.
|
inline |
Definition at line 35 of file RV64IMACFDArchSpecificImp.h.
|
inlinevirtual |
Definition at line 45 of file RV64IMACFDArchSpecificImp.h.
|
inlineprotectedvirtual |
override this function to implement reads in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA
Reimplemented from etiss::VirtualStruct::Field.
Definition at line 48 of file RV64IMACFDArchSpecificImp.h.
References gprid_, etiss::VirtualStruct::Field::parent_, etiss::VirtualStruct::structure_, and uint64_t.
|
inlineprotectedvirtual |
override this function to implement writes in case of AccessMode::VIRTUAL / AccessMode::PREFER_LAMBDA
Reimplemented from etiss::VirtualStruct::Field.
Definition at line 52 of file RV64IMACFDArchSpecificImp.h.
References gprid_, etiss::log(), etiss::VirtualStruct::Field::name_, etiss::VirtualStruct::Field::parent_, etiss::VirtualStruct::structure_, and etiss::VERBOSE.
|
private |
Definition at line 23 of file RV64IMACFDArchSpecificImp.h.