Transaction-Level Modeling Framework for Space Applications
Top-level class of the memory sub-system for the TrapGen LEON3 simulator. More...
#include <mmu_cache_base.h>
Public Member Functions | |
GC_HAS_CALLBACKS () | |
SC_HAS_PROCESS (mmu_cache_base) | |
SR_HAS_SIGNALS (mmu_cache_base) | |
mmu_cache_base (ModuleName name="", bool icen=true, uint32_t irepl=1, uint32_t isets=4, uint32_t ilinesize=8, uint32_t isetsize=8, uint32_t isetlock=true, uint32_t dcen=true, uint32_t drepl=1, uint32_t dsets=2, uint32_t dlinesize=4, uint32_t dsetsize=8, bool dsetlock=true, bool dsnoop=true, bool ilram=false, uint32_t ilramsize=0x000, uint32_t ilramstart=0x000, uint32_t dlram=false, uint32_t dlramsize=0x000, uint32_t dlramstart=0x000, uint32_t cached=0, bool mmu_en=true, uint32_t itlb_num=8, uint32_t dtlb_num=8, uint32_t tlb_type=0, uint32_t tlb_rep=1, uint32_t mmupgsz=0, uint32_t hindex=0, bool pow_mon=false, AbstractionLayer ambaLayer=amba::amba_LT) | |
Constructor of the top-level class of the memory sub-system (caches and mmu). More... | |
~mmu_cache_base () | |
virtual void | exec_instr (const unsigned int &addr, unsigned char *ptr, unsigned int asi, unsigned int *debug, const unsigned int &flush, sc_core::sc_time &delay, bool is_dbg) |
Instruction interface to functional part of the model. More... | |
virtual void | exec_data (const tlm::tlm_command cmd, const unsigned int &addr, unsigned char *ptr, unsigned int len, unsigned int asi, unsigned int *debug, unsigned int flush, unsigned int lock, sc_core::sc_time &delay, bool is_dbg, tlm::tlm_response_status &response) |
Data interface to functional part of the model. More... | |
virtual void | response_callback (tlm::tlm_generic_payload *trans) |
Called from AHB master to signal begin response. More... | |
virtual void | mem_write (unsigned int addr, unsigned int asi, unsigned char *data, unsigned int length, sc_core::sc_time *t, unsigned int *debug, bool is_dbg, bool &cacheable, bool is_lock) |
MemIF implementation - writes data to AHB master. More... | |
virtual bool | mem_read (unsigned int addr, unsigned int asi, unsigned char *data, unsigned int length, sc_core::sc_time *t, unsigned int *debug, bool is_dbg, bool &cacheable, bool is_lock) |
MemIF implementation - reads data from AHB master. More... | |
virtual void | set_irq (uint32_t tt) |
Send an interrupt over the central IRQ interface. More... | |
virtual void | trigger_exception (unsigned int exception)=0 |
Sent an exception to the CPU. More... | |
void | write_ccr (unsigned char *data, unsigned int len, sc_core::sc_time *delay, unsigned int *debug, bool is_dbg) |
Writes the cache control register. More... | |
virtual unsigned int | read_ccr (bool internal) |
Read the cache control register. More... | |
void | snoopingCallBack (const t_snoop &snoop, const sc_core::sc_time &delay) |
Snooping function (For calling dcache->snoop_invalidate) More... | |
void | start_of_simulation () |
Automatically called at the beginning of the simulation. More... | |
void | power_model () |
Calculate power/energy values from normalized input data. More... | |
gs::cnf::callback_return_type | sta_power_cb (gs::gs_param_base &changed_param, gs::cnf::callback_type reason) |
Static power callback. More... | |
gs::cnf::callback_return_type | int_power_cb (gs::gs_param_base &changed_param, gs::cnf::callback_type reason) |
Dynamic/Internal power callback. More... | |
gs::cnf::callback_return_type | swi_power_cb (gs::gs_param_base &changed_param, gs::cnf::callback_type reason) |
Dynamic/Switching power callback. More... | |
void | end_of_simulation () |
Called at end of simulation to print execution statistics. More... | |
void | dorst () |
Reset function. More... | |
void | clkcng () |
Deal with clock changes. More... | |
sc_core::sc_time | get_clock () |
Return clock period (for ahb interface) More... | |
Public Member Functions inherited from AHBMaster<> | |
SC_HAS_PROCESS (AHBMaster) | |
AHBMaster (ModuleName nm, uint8_t hindex, uint8_t vendor, uint8_t device, uint8_t version, uint8_t irq, AbstractionLayer ambaLayer, BAR bar0=BAR(), BAR bar1=BAR(), BAR bar2=BAR(), BAR bar3=BAR()) | |
Constructor. More... | |
~AHBMaster () | |
Destructor. More... | |
virtual void | ahbread (uint32_t addr, unsigned char *data, uint32_t length) |
Read data from AHB (SC_ZERO_TIME version) More... | |
virtual void | ahbread (uint32_t addr, unsigned char *data, uint32_t length, sc_core::sc_time &delay, bool &cacheable, tlm::tlm_response_status &response) |
Read data from AHB. More... | |
virtual void | ahbread (uint32_t addr, unsigned char *data, uint32_t length, sc_core::sc_time &delay, bool &cacheable, bool is_lock, tlm::tlm_response_status &response) |
Read data from AHB. More... | |
virtual void | ahbwrite (uint32_t addr, unsigned char *data, uint32_t length) |
Write data to AHB (SC_ZERO_TIME version) More... | |
virtual void | ahbwrite (uint32_t addr, unsigned char *data, uint32_t length, sc_core::sc_time &delay, tlm::tlm_response_status &response) |
Write data to AHB. More... | |
virtual void | ahbwrite (uint32_t addr, unsigned char *data, uint32_t length, sc_core::sc_time &delay, bool is_lock, tlm::tlm_response_status &response) |
Write data to AHB. More... | |
virtual void | ahbaccess (tlm::tlm_generic_payload *trans) |
Generic AHB access function (blocking and non-blocking) More... | |
virtual uint32_t | ahbaccess_dbg (tlm::tlm_generic_payload *trans) |
Generic AHB debug access function. More... | |
virtual uint32_t | ahbread_dbg (uint32_t addr, unsigned char *data, uint32_t length) |
Debug read from AHB. More... | |
virtual uint32_t | ahbwrite_dbg (uint32_t addr, unsigned char *data, uint32_t length) |
Debug write from AHB. More... | |
virtual tlm::tlm_sync_enum | nb_transport_bw (tlm::tlm_generic_payload &payload, tlm::tlm_phase &phase, sc_core::sc_time &delay) |
TLM non-blocking backward transport function. More... | |
void | ResponseThread () |
Thread for response processing (read) More... | |
void | DataThread () |
Thread for processing data-phase of write transactions. More... | |
virtual void | transport_statistics (tlm::tlm_generic_payload &gp) throw () |
Collect common transport statistics. More... | |
virtual void | print_transport_statistics (const char *name) const throw () |
Print common transport statistics. More... | |
Public Member Functions inherited from AHBDevice< BaseModule< DefaultBase > > | |
AHBDevice (ModuleName mn, uint32_t hindex, uint8_t vendorid, uint16_t deviceid, uint8_t version, uint8_t irq, BAR bar0, BAR bar1=BAR(), BAR bar2=BAR(), BAR bar3=BAR()) | |
AHBDevice (ModuleName mn) | |
void | init (uint32_t hindex, uint8_t vendorid, uint16_t deviceid, uint8_t version, uint8_t irq, BAR bar0, BAR bar1=BAR(), BAR bar2=BAR(), BAR bar3=BAR()) |
void | init_ahb_generics () |
virtual | ~AHBDevice () |
Empty destructor. More... | |
virtual const uint16_t | get_ahb_device_id () const throw () |
Returns the device id. More... | |
virtual const uint8_t | get_ahb_vendor_id () const throw () |
Returns the vendor id. More... | |
virtual const uint32_t * | get_ahb_device_info () throw () |
virtual const uint32_t | get_ahb_base_addr_ () const throw () |
virtual sc_dt::uint64 | get_ahb_base_addr () throw () |
virtual const uint32_t | get_ahb_size_ () const throw () |
virtual sc_dt::uint64 | get_ahb_size () throw () |
virtual const AMBADeviceType | get_ahb_bar_type (uint32_t bar) const throw () |
virtual const uint32_t | get_ahb_bar_base (uint32_t bar) const throw () |
virtual const uint32_t | get_ahb_bar_mask (uint32_t bar) const throw () |
virtual const uint32_t | get_ahb_bar_addr (uint32_t bar) const throw () |
virtual const uint32_t | get_ahb_bar_size (uint32_t bar) const throw () |
virtual const uint32_t | get_ahb_bar_relative_addr (uint32_t bar, uint32_t addr) const throw () |
const bool | get_ahb_bar_prefetchable (uint32_t bar) const throw () |
const bool | get_ahb_bar_cachable (uint32_t bar) const throw () |
virtual const uint32_t | get_ahb_hindex () const throw () |
Returns the bus id of the module (hindex) More... | |
virtual void | print_ahb_device_info (char *name) const |
Prints the device info of the device. More... | |
Public Member Functions inherited from BaseModule< DefaultBase > | |
BaseModule (ModuleName mn) | |
virtual | ~BaseModule () |
virtual void | init_generics () |
virtual void | init_registers () |
virtual void | init_counters () |
virtual void | init_power () |
Public Member Functions inherited from AHBDeviceBase | |
virtual | ~AHBDeviceBase () |
Empty destructor. More... | |
Public Member Functions inherited from mmu_cache_if | |
virtual | ~mmu_cache_if () |
Public Member Functions inherited from mem_if | |
virtual | ~mem_if () |
Public Member Functions inherited from CLKDevice | |
SR_HAS_SIGNALS (CLKDevice) | |
CLKDevice () | |
virtual | ~CLKDevice () |
virtual void | onrst (const bool &value, const sc_core::sc_time &time) |
virtual void | onclk (const sc_core::sc_time &value, const sc_core::sc_time &time) |
void | set_clk (sc_core::sc_clock &clk) |
void | set_clk (sc_core::sc_time period) |
void | set_clk (double period, sc_core::sc_time_unit base) |
Public Attributes | |
signal< t_snoop >::in | snoop |
signal< std::pair< uint32_t, bool > >::out | irq |
cache_if * | icache |
instruction cache pointer More... | |
cache_if * | dcache |
data cache pointer More... | |
mmu * | m_mmu |
mmu poiner More... | |
localram * | ilocalram |
instruction scratchpad pointer More... | |
localram * | dlocalram |
data scratchpad pointer More... | |
Public Attributes inherited from AHBMaster<> | |
amba::amba_master_socket< 32 > | ahb |
The AHB master socketo. More... | |
Public Attributes inherited from CLKDevice | |
signal< bool >::in | rst |
Reset input signal. More... | |
signal< sc_core::sc_time >::in | clk |
Clock input signal. More... | |
Protected Member Functions | |
void | mem_access () |
Top-level class of the memory sub-system for the TrapGen LEON3 simulator.
mmu_cache_base::GC_HAS_CALLBACKS | ( | ) |
mmu_cache_base::SC_HAS_PROCESS | ( | mmu_cache_base | ) |
mmu_cache_base::SR_HAS_SIGNALS | ( | mmu_cache_base | ) |
|
pure virtual |
|
protected |
begin response signal for AT
Referenced by mem_access(), and response_callback().
|
protected |
Referenced by mem_access(), mem_read(), and mem_write().
|
protected |
Referenced by mem_access(), and mem_read().
|
protected |
Referenced by mmu_cache_base(), read_ccr(), and write_ccr().
cache_if* mmu_cache_base::dcache |
data cache pointer
Referenced by clkcng(), exec_data(), mmu_cache::exec_instr(), mmu_cache_base(), snoopingCallBack(), and write_ccr().
localram* mmu_cache_base::dlocalram |
data scratchpad pointer
Referenced by clkcng(), exec_data(), and mmu_cache_base().
Dynamic energy per read access.
Referenced by power_model(), and swi_power_cb().
Normalized read access energy.
Referenced by power_model().
Number of reads from memory (read & reset by monitor)
Referenced by mmu_cache::exec_data(), mmu_cache::exec_instr(), and swi_power_cb().
Dynamic energy per write access.
Referenced by power_model(), and swi_power_cb().
Normalized write access energy.
Referenced by power_model().
Number of writes to memory (read & reset by monitor)
Referenced by mmu_cache::exec_data(), and swi_power_cb().
|
protected |
cache_if* mmu_cache_base::icache |
instruction cache pointer
Referenced by clkcng(), exec_data(), mmu_cache::exec_instr(), exec_instr(), mmu_cache_base(), and write_ccr().
localram* mmu_cache_base::ilocalram |
instruction scratchpad pointer
Referenced by clkcng(), exec_data(), exec_instr(), and mmu_cache_base().
Controller internal power.
Referenced by mmu_cache_base(), and power_model().
Normalized internal power of controller.
Referenced by power_model().
|
protected |
amba abstraction layer
Referenced by mem_access().
|
protected |
enables fixed cacheability mask
Referenced by mem_read(), and mmu_cache_base().
|
protected |
dcache enabled
Referenced by clkcng(), and snoopingCallBack().
|
protected |
data scratchpad enabled
Referenced by exec_data().
|
protected |
data scratchpad starting address
Referenced by exec_data().
|
protected |
dcache snooping enabled
Referenced by snoopingCallBack().
|
protected |
instruction scratchpad enabled
Referenced by exec_data(), and exec_instr().
|
protected |
instruction scratchpad starting address
Referenced by exec_data(), and exec_instr().
|
protected |
amba master id
Referenced by snoopingCallBack().
mmu* mmu_cache_base::m_mmu |
mmu poiner
Referenced by clkcng(), exec_data(), and mmu_cache_base().
|
protected |
mmu enabled
Referenced by clkcng(), and exec_data().
|
protected |
power monitoring enabled
Referenced by mmu_cache::exec_data(), mmu_cache::exec_instr(), mmu_cache_base(), and start_of_simulation().
Total number of successful transactions for execution statistics.
Referenced by end_of_simulation().
Total number of transactions for execution statistics.
Referenced by end_of_simulation().
|
protected |
Power frame starting time.
Referenced by swi_power_cb().
Controller static power.
Referenced by mmu_cache_base(), and power_model().
Normalized static power of controller.
Referenced by power_model().
Controller switching power.
Referenced by mmu_cache_base(), and swi_power_cb().
|
protected |
Referenced by mem_write(), and mmu_cache_base().
|
protected |
Referenced by mem_write().