PandA-2024.02
Public Member Functions | Static Public Member Functions | Private Attributes
memory Class Reference

#include <memory.hpp>

Inheritance diagram for memory:
Inheritance graph
[legend]
Collaboration diagram for memory:
Collaboration graph
[legend]

Public Member Functions

 memory (const tree_managerConstRef TreeM, unsigned long long int off_base_address, unsigned int max_bram, bool null_pointer_check, bool initial_internal_address_p, unsigned long long initial_internal_address, const unsigned int &_bus_addr_bitsize)
 Constructor. More...
 
virtual ~memory ()
 Destructor. More...
 
std::map< unsigned int, memory_symbolRefget_ext_memory_variables () const
 Return variables allocated out of the top module. More...
 
void add_external_variable (unsigned int var, const std::string &var_name)
 Allocates a variable to the set of variables allocated outside to outermost function. More...
 
void add_external_symbol (unsigned int var, const memory_symbolRef m_sym)
 Allocates a variable to the set of variables allocated outside to outermost function. More...
 
void add_internal_variable (unsigned int funID_scope, unsigned int var, const std::string &var_name)
 Allocates a variable to the set of variables allocated internally to the given function. More...
 
void add_internal_variable_proxy (unsigned int funID_scope, unsigned int var)
 allocate a proxy for the variable for the specified function More...
 
unsigned long long compute_next_base_address (unsigned long long address, unsigned int var, unsigned long long int alignment) const
 Compute the new base address based on the size of the given variable and align the memory as needed. More...
 
const CustomOrderedSet< unsigned int > & get_proxied_internal_variables (unsigned int funID_scope) const
 return the proxied internal variables associated with the function More...
 
bool has_proxied_internal_variables (unsigned int funID_scope) const
 check if the function has proxied variables More...
 
bool is_a_proxied_variable (unsigned int var) const
 return true if the variable is a proxied variable More...
 
void add_read_only_variable (unsigned var)
 add a read only variable More...
 
bool is_read_only_variable (unsigned var) const
 return true when the variable is only read More...
 
void add_internal_symbol (unsigned int funID_scope, unsigned int var, const memory_symbolRef m_sym)
 Allocates a variable to the set of variables allocated internally to the given function. More...
 
void add_private_memory (unsigned int var)
 add a var that safely cannot be attached to the bus More...
 
void set_sds_var (unsigned int var, bool value)
 set if a variable is always accessed with the same data size or not More...
 
void add_source_value (unsigned int var, unsigned int value)
 add a value to the set of values written in a given memory variable More...
 
const CustomOrderedSet< unsigned int > & get_source_values (unsigned int var)
 return the set of values used to write a given memory variable More...
 
void add_parameter (unsigned int funID_scope, unsigned int var, const std::string &var_name, bool is_last)
 Allocates a parameter to the set of the interface registers. More...
 
void add_parameter_symbol (unsigned int funID_scope, unsigned int var, const memory_symbolRef m_sym)
 Allocates a parameter to the set of the interface registers. More...
 
bool is_internal_variable (unsigned int funID_scope, unsigned int var) const
 Test if a variable is allocated into the specified function. More...
 
bool is_external_variable (unsigned int var) const
 Test if a variable is into the set of variables out of the top function. More...
 
bool is_private_memory (unsigned int var) const
 Return true in case the variable is private. More...
 
bool is_sds_var (unsigned int var) const
 check if the variable is always accessed with the same data size More...
 
bool has_sds_var (unsigned int var) const
 return true if the var has been classified in term of same data size relation More...
 
bool is_parameter (unsigned int funID_scope, unsigned int var) const
 Test if a variable is into the set of interface registers. More...
 
const std::map< unsigned int, memory_symbolRefget_callSites () const
 Get call sites map. More...
 
unsigned long long get_callSite_base_address (unsigned int var) const
 Get the current base address of the given call site. More...
 
unsigned long long int get_internal_base_address (unsigned int var) const
 Get the current base address of the given variable. More...
 
unsigned long long get_external_base_address (unsigned int var) const
 Get the current base address of the given variable. More...
 
unsigned long long int get_parameter_base_address (unsigned int funId, unsigned int var) const
 Get the current base address of the given variable. More...
 
unsigned long long int get_base_address (unsigned int var, unsigned int funId) const
 Get the current base address of the given variable. More...
 
unsigned long long get_first_address (unsigned int funId) const
 Get the first address of the function address space. More...
 
unsigned long long get_last_address (unsigned int funId, const application_managerRef AppM) const
 Get the last address of the function address space. More...
 
memory_symbolRef get_symbol (unsigned int var, unsigned int funId) const
 Return the symbol associated with the given variable. More...
 
unsigned long long get_rangesize (unsigned int var) const
 return the address space rangesize associated with the given var More...
 
bool has_callSite_base_address (unsigned int var) const
 Check if there is a base address for the given call site. More...
 
bool has_internal_base_address (unsigned int var) const
 Check if there is a base address for the given variable. More...
 
unsigned int get_n_mem_operations (unsigned int var) const
 
void increment_n_mem_operations (unsigned int var)
 
bool has_external_base_address (unsigned int var) const
 Check if there is a base address for the given variable. More...
 
bool has_parameter_base_address (unsigned int var, unsigned int funId) const
 Check if there is a base address for the given parameter. More...
 
bool has_base_address (unsigned int var) const
 Check if there is a base address for the given variable. More...
 
bool is_parm_decl_copied (unsigned int var) const
 return true in case the parm_decl parameter has to be copied from the caller More...
 
void add_parm_decl_copied (unsigned int var)
 add a parm_decl to the set of parm_decl written More...
 
bool is_parm_decl_stored (unsigned int var) const
 return true in case the parm_decl parameter has to be initialized from the formal value More...
 
void add_parm_decl_stored (unsigned int var)
 add a parm_decl to the set of parm_decl that has to be initialized More...
 
bool is_actual_parm_loaded (unsigned int var) const
 return true in case the actual parameter has to be initialized from a stored value More...
 
void add_actual_parm_loaded (unsigned int var)
 add an actual parameter to the set of parameter that has to be initialized from a stored value More...
 
std::map< unsigned int, memory_symbolRefget_function_vars (unsigned int funID_scope) const
 Return the variables allocated within the space of a given function. More...
 
std::map< unsigned int, memory_symbolRefget_function_parameters (unsigned int funID_scope) const
 Return parameters allocated in register of the interface. More...
 
unsigned long long get_memory_address () const
 Return the first memory address not yet allocated. More...
 
void reserve_space (unsigned long long space)
 Explicitly allocate a certain space in the external memory. More...
 
void reserve_internal_space (unsigned long long int space)
 Explicitly allocate a certain space in the internal memory. More...
 
unsigned long long get_allocated_space () const
 Returns the amount of memory allocated internally to the module. More...
 
unsigned long long get_allocated_parameters_memory () const
 Return the total amount of memory allocated for the memory mapped parameters. More...
 
unsigned long long int get_allocated_internal_memory () const
 Returns the amount of memory allocated internally but not private. More...
 
unsigned long long int get_next_internal_base_address () const
 Returns next free address of memory allocated internally but not private. More...
 
unsigned long long int get_max_address () const
 return the maximum address allocated More...
 
void set_bus_data_bitsize (unsigned long long bitsize)
 set the bus data bitsize More...
 
unsigned long long get_bus_data_bitsize () const
 return the bitsize of the data bus More...
 
void set_bus_size_bitsize (unsigned long long bitsize)
 set the bus size bitsize More...
 
unsigned long long get_bus_size_bitsize () const
 return the bitsize of the size bus More...
 
void set_bram_bitsize (unsigned long long bitsize)
 set the BRAM bitsize More...
 
unsigned long long get_bram_bitsize () const
 return the BRAM bitsize More...
 
void set_maxbram_bitsize (unsigned int bitsize)
 set the maximum BRAM bitsize More...
 
unsigned int get_maxbram_bitsize () const
 return the BRAM bitsize More...
 
void set_intern_shared_data (bool has_accesses)
 define if the Spec has data that can be externally accessed More...
 
bool has_intern_shared_data () const
 return true in case the specification has data that can be externally accessed More...
 
void set_maximum_references (unsigned int var, size_t n_refs)
 define the maximum number of references for a given variable More...
 
size_t get_maximum_references (unsigned int var) const
 return the maximum number of references for a given variable More...
 
void set_maximum_loads (unsigned int var, size_t n_refs)
 define the maximum number of loads for a given variable More...
 
size_t get_maximum_loads (unsigned int var) const
 return the maximum number of loads for a given variable More...
 
void add_need_bus (unsigned int var)
 the variable is read or written through the bus More...
 
bool does_need_addr (unsigned int var) const
 check if a load or a store of the variable is done trough the bus More...
 
void set_use_unknown_addresses (bool accesses)
 define if there exist an object used by the Spec with an address not known at compile time More...
 
bool has_unknown_addresses () const
 return true in case the specification use addresses not known at compile time More...
 
void set_unaligned_accesses (bool accesses)
 set if LOADs or STOREs perform unaligned accesses More...
 
bool has_unaligned_accesses () const
 return true in case of unaligned accesses More...
 
void set_all_pointers_resolved (bool resolved)
 define if all pointers have statically resolved More...
 
bool has_all_pointers_resolved () const
 return true in case all pointers have been statically resolved More...
 
void set_packed_vars (bool packed)
 update the the packed variables status More...
 
bool has_packed_vars () const
 
void set_implicit_memcpy (bool cond)
 define if there exist an implicit call of memcpy More...
 
bool has_implicit_memcpy () const
 return true in case the specification has an implicit call of memcpy More...
 
unsigned long long get_internal_base_address_alignment () const
 return the internal base address alignment. More...
 
unsigned long long get_parameter_alignment () const
 return the parameter alignment More...
 
void set_internal_base_address_alignment (unsigned long long _internal_base_address_alignment)
 set the internal base address alignment More...
 
void xwrite (xml_element *node)
 Writes the current memory allocation into an XML description. More...
 
void xwrite2 (xml_element *node)
 Writes the current memory allocation into an XML description. More...
 
void xwrite (const std::string &filename)
 Writes the current memory allocation into an XML description. More...
 
unsigned int count_non_private_internal_symbols () const
 
bool notEQ (refcount< memory > ref) const
 return true in case the current memory object and the passed one are different More...
 
void set_enable_hls_bit_value (bool value)
 
bool get_enable_hls_bit_value ()
 

Static Public Member Functions

static memoryRef create_memory (const ParameterConstRef _parameters, const tree_managerConstRef _TreeM, unsigned long long int _off_base_address, unsigned int max_bram, bool _null_pointer_check, bool initial_internal_address_p, unsigned int initial_internal_address, const unsigned int &_address_bitsize)
 
static void propagate_memory_parameters (const structural_objectRef src, const structural_managerRef tgt)
 Propagates the memory parameters from the source (innermost) module to the target (outermost) one. More...
 
static void add_memory_parameter (const structural_managerRef SM, const std::string &name, const std::string &value)
 Adds the given memory parameter to the corresponding object. More...
 

Private Attributes

const tree_managerConstRef TreeM
 data-structure containing tree information More...
 
std::map< unsigned int, memory_symbolRefexternal
 set of variables allocated outside the top module More...
 
std::map< unsigned int, std::map< unsigned int, memory_symbolRef > > internal
 set of variables allocated internally to the cores, classified by function id More...
 
std::map< unsigned int, CustomOrderedSet< unsigned int > > internal_variable_proxy
 set of variable proxies accessed by a function More...
 
CustomOrderedSet< unsigned int > proxied_variables
 is the set of proxied variables More...
 
CustomOrderedSet< unsigned int > read_only_vars
 
std::map< unsigned int, memory_symbolRefin_vars
 set of all the internal variables More...
 
std::map< unsigned int, unsigned long long int > rangesize
 for each var store the address space rangesize associated with it More...
 
std::map< unsigned int, std::map< unsigned int, memory_symbolRef > > parameter
 set of variables allocated in registers of the interface More...
 
std::map< unsigned int, memory_symbolRefparams
 set of all the internal parameters More...
 
std::map< unsigned int, memory_symbolRefcallSites
 set of call sites for __builtin_wait_call More...
 
CustomOrderedSet< unsigned int > private_memories
 store the objects that does not need to be attached to the bus More...
 
std::map< unsigned int, unsigned int > same_data_size_accesses
 store if a given variable is accessed always with the same data_size or not More...
 
std::map< unsigned int, CustomOrderedSet< unsigned int > > source_values
 ssa_names assigned to a given memory variable More...
 
CustomOrderedSet< unsigned int > parm_decl_copied
 parm_decl that has to be copied from the caller More...
 
CustomOrderedSet< unsigned int > parm_decl_stored
 parm_decl storage has to be initialized from the formal parameter More...
 
CustomOrderedSet< unsigned int > actual_parm_loaded
 actual parameter that has to be loaded from a stored value More...
 
unsigned long long int next_base_address
 it represents the next address that is available for internal allocation More...
 
unsigned long long int internal_base_address_start
 is the start internal address More...
 
unsigned long long int maximum_private_memory_size
 is the maximum amount of private memory allocated More...
 
unsigned long long int total_amount_of_private_memory
 total amount of internal memory allocated More...
 
unsigned long long int total_amount_of_parameter_memory
 total amount of parameter memory More...
 
unsigned long long int off_base_address
 it represents the base address of the external memory More...
 
unsigned long long int next_off_base_address
 it represents the next address that is available to allocate a variable out of the top module More...
 
unsigned long long bus_data_bitsize
 bus data bitsize More...
 
unsigned long long bus_size_bitsize
 bus size bitsize More...
 
unsigned long long bram_bitsize
 bram bitsize More...
 
unsigned int maxbram_bitsize
 maximum bram bitsize More...
 
bool intern_shared_data
 define if the Spec has data that can be externally accessed More...
 
bool use_unknown_addresses
 Spec accesses data having an address unknown at compile time. More...
 
bool unaligned_accesses
 true when LOADs or STOREs perform unaligned accesses More...
 
bool all_pointers_resolved
 is true when all pointers are resolved statically More...
 
bool implicit_memcpy
 when true an implicit memcpy is called More...
 
unsigned long long internal_base_address_alignment
 internal address alignment More...
 
unsigned long long external_base_address_alignment
 external address alignment More...
 
const unsigned long long parameter_alignment
 parameter alignment More...
 
std::map< unsigned int, unsigned int > n_mem_operations_per_var
 number of LOAD/STORE per var More...
 
bool null_pointer_check
 when false object could be allocated starting from address 0 More...
 
std::map< unsigned int, size_tmaximum_references
 define for each variable the number of references whenever it is possible More...
 
std::map< unsigned int, size_tmaximum_loads
 define for each variable the number of loads whenever it is possible More...
 
CustomOrderedSet< unsigned int > need_bus
 define for each variable the number of loads whenever it is possible More...
 
bool packed_vars
 true when packed vars are used More...
 
const unsigned int & bus_addr_bitsize
 
bool enable_hls_bit_value
 

Detailed Description

Definition at line 66 of file memory.hpp.

Constructor & Destructor Documentation

◆ memory()

memory::memory ( const tree_managerConstRef  TreeM,
unsigned long long int  off_base_address,
unsigned int  max_bram,
bool  null_pointer_check,
bool  initial_internal_address_p,
unsigned long long  initial_internal_address,
const unsigned int &  _bus_addr_bitsize 
)

Constructor.

we start to allocate from internal_base_address_alignment byte to align address to internal_base_address_alignment bits we can use address 0 in some cases but it is not safe in general.

Definition at line 89 of file memory.cpp.

References align(), external_base_address_alignment, internal_base_address_alignment, internal_base_address_start, next_base_address, null_pointer_check, U, and ~memory().

Referenced by create_memory().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~memory()

memory::~memory ( )
virtualdefault

Destructor.

Referenced by memory().

Here is the caller graph for this function:

Member Function Documentation

◆ add_actual_parm_loaded()

void memory::add_actual_parm_loaded ( unsigned int  var)

add an actual parameter to the set of parameter that has to be initialized from a stored value

Definition at line 639 of file memory.cpp.

References actual_parm_loaded.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ add_external_symbol()

void memory::add_external_symbol ( unsigned int  var,
const memory_symbolRef  m_sym 
)

Allocates a variable to the set of variables allocated outside to outermost function.

The corresponding symbol is already provided

Definition at line 293 of file memory.cpp.

References compute_next_base_address(), external, external_base_address_alignment, in_vars, max, next_off_base_address, parameter, STR, and THROW_WARNING.

Referenced by add_external_variable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_external_variable()

void memory::add_external_variable ( unsigned int  var,
const std::string &  var_name 
)

Allocates a variable to the set of variables allocated outside to outermost function.

Definition at line 286 of file memory.cpp.

References add_external_symbol(), align(), tree_helper::get_var_alignment(), next_off_base_address, and TreeM.

Here is the call graph for this function:

◆ add_internal_symbol()

void memory::add_internal_symbol ( unsigned int  funID_scope,
unsigned int  var,
const memory_symbolRef  m_sym 
)

Allocates a variable to the set of variables allocated internally to the given function.

The corresponding symbol is already provided

Definition at line 234 of file memory.cpp.

References align(), callSites, tree_manager::CGetTreeNode(), tree_manager::CGetTreeReindex(), compute_n_bytes(), compute_next_base_address(), external, in_vars, internal_base_address_alignment, is_private_memory(), max, maximum_private_memory_size, next_base_address, parameter, rangesize, tree_helper::Size(), STR, THROW_ASSERT, THROW_WARNING, total_amount_of_private_memory, and TreeM.

Referenced by add_internal_variable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_internal_variable()

void memory::add_internal_variable ( unsigned int  funID_scope,
unsigned int  var,
const std::string &  var_name 
)

Allocates a variable to the set of variables allocated internally to the given function.

Definition at line 175 of file memory.cpp.

References add_internal_symbol(), align(), tree_helper::get_var_alignment(), in_vars, internal_base_address_start, is_private_memory(), next_base_address, null_pointer_check, and TreeM.

Here is the call graph for this function:

◆ add_internal_variable_proxy()

void memory::add_internal_variable_proxy ( unsigned int  funID_scope,
unsigned int  var 
)

allocate a proxy for the variable for the specified function

Parameters
funID_scopeis the function id
varis the variable

Definition at line 202 of file memory.cpp.

References internal_variable_proxy, and proxied_variables.

◆ add_memory_parameter()

void memory::add_memory_parameter ( const structural_managerRef  SM,
const std::string &  name,
const std::string &  value 
)
static

◆ add_need_bus()

void memory::add_need_bus ( unsigned int  var)
inline

the variable is read or written through the bus

Parameters
varis the variable

Definition at line 671 of file memory.hpp.

◆ add_parameter()

void memory::add_parameter ( unsigned int  funID_scope,
unsigned int  var,
const std::string &  var_name,
bool  is_last 
)

Allocates a parameter to the set of the interface registers.

align in case is not aligned

Definition at line 323 of file memory.cpp.

References add_parameter_symbol(), align(), internal_base_address_alignment, next_base_address, and total_amount_of_parameter_memory.

Referenced by memory_allocation::allocate_parameters(), and get_source_values().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_parameter_symbol()

void memory::add_parameter_symbol ( unsigned int  funID_scope,
unsigned int  var,
const memory_symbolRef  m_sym 
)

Allocates a parameter to the set of the interface registers.

allocation of the parameters

Definition at line 336 of file memory.cpp.

References compute_next_base_address(), external, in_vars, max, next_base_address, parameter, parameter_alignment, params, STR, THROW_WARNING, and total_amount_of_parameter_memory.

Referenced by add_parameter(), and get_source_values().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_parm_decl_copied()

void memory::add_parm_decl_copied ( unsigned int  var)

add a parm_decl to the set of parm_decl written

Definition at line 619 of file memory.cpp.

References parm_decl_copied.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ add_parm_decl_stored()

void memory::add_parm_decl_stored ( unsigned int  var)

add a parm_decl to the set of parm_decl that has to be initialized

Definition at line 629 of file memory.cpp.

References parm_decl_stored.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ add_private_memory()

void memory::add_private_memory ( unsigned int  var)

add a var that safely cannot be attached to the bus

Parameters
varis var index

Definition at line 308 of file memory.cpp.

References private_memories.

◆ add_read_only_variable()

void memory::add_read_only_variable ( unsigned  var)

add a read only variable

Parameters
varis the variable id

Definition at line 224 of file memory.cpp.

References read_only_vars.

◆ add_source_value()

void memory::add_source_value ( unsigned int  var,
unsigned int  value 
)

add a value to the set of values written in a given memory variable

Parameters
varis the memory variable
valueis the source value

Definition at line 318 of file memory.cpp.

References source_values.

◆ compute_next_base_address()

unsigned long long int memory::compute_next_base_address ( unsigned long long  address,
unsigned int  var,
unsigned long long int  alignment 
) const

Compute the new base address based on the size of the given variable and align the memory as needed.

Parameters
addressis the address to be evaluated
varis the variable that has to be reserved
alignmentis the address alignment
Returns
unsigned long long int next base address

compute the next base address

align the memory address

Definition at line 154 of file memory.cpp.

References align(), bus_addr_bitsize, tree_manager::CGetTreeReindex(), tree_helper::CGetType(), compute_n_bytes(), GET_CONST_NODE, tree_helper::Size(), and TreeM.

Referenced by add_external_symbol(), add_internal_symbol(), and add_parameter_symbol().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ count_non_private_internal_symbols()

unsigned int memory::count_non_private_internal_symbols ( ) const
Returns
return the number of internal symbols non private

Definition at line 273 of file memory.cpp.

References in_vars, and is_private_memory().

Referenced by get_parameter_alignment().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_memory()

memoryRef memory::create_memory ( const ParameterConstRef  _parameters,
const tree_managerConstRef  _TreeM,
unsigned long long int  _off_base_address,
unsigned int  max_bram,
bool  _null_pointer_check,
bool  initial_internal_address_p,
unsigned int  initial_internal_address,
const unsigned int &  _address_bitsize 
)
static

Definition at line 132 of file memory.cpp.

References memory().

Referenced by mem_dominator_allocation::InternalExec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ does_need_addr()

bool memory::does_need_addr ( unsigned int  var) const
inline

check if a load or a store of the variable is done trough the bus

Parameters
varis the variable
Returns
true in case var is loaded or stored through the bus

Definition at line 681 of file memory.hpp.

◆ get_allocated_internal_memory()

unsigned long long int memory::get_allocated_internal_memory ( ) const

Returns the amount of memory allocated internally but not private.

Definition at line 599 of file memory.cpp.

References internal_base_address_start, and next_base_address.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ get_allocated_parameters_memory()

unsigned long long int memory::get_allocated_parameters_memory ( ) const

Return the total amount of memory allocated for the memory mapped parameters.

Definition at line 594 of file memory.cpp.

References total_amount_of_parameter_memory.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ get_allocated_space()

unsigned long long int memory::get_allocated_space ( ) const

Returns the amount of memory allocated internally to the module.

Definition at line 589 of file memory.cpp.

References internal_base_address_start, next_base_address, and total_amount_of_private_memory.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ get_base_address()

unsigned long long memory::get_base_address ( unsigned int  var,
unsigned int  funId 
) const

Get the current base address of the given variable.

Definition at line 467 of file memory.cpp.

References get_callSite_base_address(), get_external_base_address(), get_internal_base_address(), get_parameter_base_address(), has_base_address(), has_callSite_base_address(), has_internal_base_address(), has_parameter_base_address(), STR, and THROW_ASSERT.

Referenced by get_callSites(), and fu_binding::write_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_bram_bitsize()

unsigned long long memory::get_bram_bitsize ( ) const
inline

return the BRAM bitsize

Definition at line 590 of file memory.hpp.

References bram_bitsize.

◆ get_bus_data_bitsize()

unsigned long long memory::get_bus_data_bitsize ( ) const
inline

return the bitsize of the data bus

Definition at line 558 of file memory.hpp.

References bus_data_bitsize.

◆ get_bus_size_bitsize()

unsigned long long memory::get_bus_size_bitsize ( ) const
inline

return the bitsize of the size bus

Definition at line 574 of file memory.hpp.

References bus_size_bitsize.

◆ get_callSite_base_address()

unsigned long long int memory::get_callSite_base_address ( unsigned int  var) const

Get the current base address of the given call site.

Definition at line 392 of file memory.cpp.

References callSites, and THROW_ASSERT.

Referenced by get_base_address(), and get_callSites().

Here is the caller graph for this function:

◆ get_callSites()

const std::map<unsigned int, memory_symbolRef> memory::get_callSites ( ) const
inline

◆ get_enable_hls_bit_value()

bool memory::get_enable_hls_bit_value ( )
inline

Definition at line 825 of file memory.hpp.

References enable_hls_bit_value.

◆ get_ext_memory_variables()

std::map< unsigned int, memory_symbolRef > memory::get_ext_memory_variables ( ) const

Return variables allocated out of the top module.

Definition at line 149 of file memory.cpp.

References external.

◆ get_external_base_address()

unsigned long long int memory::get_external_base_address ( unsigned int  var) const

Get the current base address of the given variable.

Definition at line 404 of file memory.cpp.

References external, and THROW_ASSERT.

Referenced by get_base_address(), and get_callSites().

Here is the caller graph for this function:

◆ get_first_address()

unsigned long long int memory::get_first_address ( unsigned int  funId) const

Get the first address of the function address space.

Definition at line 485 of file memory.cpp.

References has_parameter_base_address(), is_private_memory(), min, and parameter.

Referenced by get_callSites().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_function_parameters()

std::map< unsigned int, memory_symbolRef > memory::get_function_parameters ( unsigned int  funID_scope) const

Return parameters allocated in register of the interface.

Definition at line 427 of file memory.cpp.

References parameter.

Referenced by get_last_address(), and increment_n_mem_operations().

Here is the caller graph for this function:

◆ get_function_vars()

std::map< unsigned int, memory_symbolRef > memory::get_function_vars ( unsigned int  funID_scope) const

Return the variables allocated within the space of a given function.

Definition at line 417 of file memory.cpp.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ get_internal_base_address()

unsigned long long int memory::get_internal_base_address ( unsigned int  var) const

Get the current base address of the given variable.

Definition at line 398 of file memory.cpp.

References in_vars, and THROW_ASSERT.

Referenced by get_base_address(), and get_callSites().

Here is the caller graph for this function:

◆ get_internal_base_address_alignment()

unsigned long long memory::get_internal_base_address_alignment ( ) const
inline

return the internal base address alignment.

Definition at line 768 of file memory.hpp.

References internal_base_address_alignment.

◆ get_last_address()

unsigned long long int memory::get_last_address ( unsigned int  funId,
const application_managerRef  AppM 
) const

Get the last address of the function address space.

Definition at line 515 of file memory.cpp.

References tree_manager::CGetTreeReindex(), get_function_parameters(), has_base_address(), has_parameter_base_address(), is_private_memory(), max, tree_helper::Size(), and TreeM.

Referenced by get_callSites().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_max_address()

unsigned long long memory::get_max_address ( ) const

return the maximum address allocated

Definition at line 609 of file memory.cpp.

References internal_base_address_start, max, maximum_private_memory_size, and next_base_address.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ get_maxbram_bitsize()

unsigned int memory::get_maxbram_bitsize ( ) const
inline

return the BRAM bitsize

Definition at line 606 of file memory.hpp.

References maxbram_bitsize.

◆ get_maximum_loads()

size_t memory::get_maximum_loads ( unsigned int  var) const
inline

return the maximum number of loads for a given variable

Parameters
varis the variable
Returns
the maximum number of loads for var

Definition at line 662 of file memory.hpp.

◆ get_maximum_references()

size_t memory::get_maximum_references ( unsigned int  var) const
inline

return the maximum number of references for a given variable

Parameters
varis the variable
Returns
the maximum number of references for var

Definition at line 642 of file memory.hpp.

◆ get_memory_address()

unsigned long long int memory::get_memory_address ( ) const

Return the first memory address not yet allocated.

Definition at line 354 of file memory.cpp.

References next_off_base_address.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ get_n_mem_operations()

unsigned int memory::get_n_mem_operations ( unsigned int  var) const
inline
Returns
the numnber of LOAD/STORE operations per var

Definition at line 435 of file memory.hpp.

◆ get_next_internal_base_address()

unsigned long long int memory::get_next_internal_base_address ( ) const

Returns next free address of memory allocated internally but not private.

Definition at line 604 of file memory.cpp.

References next_base_address.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ get_parameter_alignment()

unsigned long long memory::get_parameter_alignment ( ) const
inline

◆ get_parameter_base_address()

unsigned long long int memory::get_parameter_base_address ( unsigned int  funId,
unsigned int  var 
) const

Get the current base address of the given variable.

Definition at line 410 of file memory.cpp.

References parameter, and THROW_ASSERT.

Referenced by memory_allocation::allocate_parameters(), get_base_address(), and get_callSites().

Here is the caller graph for this function:

◆ get_proxied_internal_variables()

const CustomOrderedSet< unsigned int > & memory::get_proxied_internal_variables ( unsigned int  funID_scope) const

return the proxied internal variables associated with the function

Parameters
funID_scopeis the function id
Returns
the set of variables proxied in funID_scope

Definition at line 208 of file memory.cpp.

References has_proxied_internal_variables(), internal_variable_proxy, STR, and THROW_ASSERT.

Here is the call graph for this function:

◆ get_rangesize()

unsigned long long int memory::get_rangesize ( unsigned int  var) const

return the address space rangesize associated with the given var

Parameters
varis the variable considered

Definition at line 571 of file memory.cpp.

References has_base_address(), rangesize, STR, and THROW_ASSERT.

Referenced by get_callSites().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_source_values()

const CustomOrderedSet<unsigned int>& memory::get_source_values ( unsigned int  var)
inline

return the set of values used to write a given memory variable

Parameters
varis the memory variable
Returns
the set of values associated with var

Definition at line 317 of file memory.hpp.

References add_parameter(), add_parameter_symbol(), has_sds_var(), is_external_variable(), is_internal_variable(), is_parameter(), is_private_memory(), and is_sds_var().

Here is the call graph for this function:

◆ get_symbol()

memory_symbolRef memory::get_symbol ( unsigned int  var,
unsigned int  funId 
) const

Return the symbol associated with the given variable.

Definition at line 553 of file memory.cpp.

References callSites, external, has_base_address(), has_callSite_base_address(), has_internal_base_address(), has_parameter_base_address(), in_vars, parameter, STR, and THROW_ASSERT.

Referenced by get_callSites().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ has_all_pointers_resolved()

bool memory::has_all_pointers_resolved ( ) const
inline

return true in case all pointers have been statically resolved

Definition at line 727 of file memory.hpp.

References all_pointers_resolved.

◆ has_base_address()

bool memory::has_base_address ( unsigned int  var) const

Check if there is a base address for the given variable.

Definition at line 461 of file memory.cpp.

References callSites, external, in_vars, and params.

Referenced by get_base_address(), get_last_address(), get_rangesize(), get_symbol(), increment_n_mem_operations(), HLS_manager::is_register_compatible(), and fu_binding::write_init().

Here is the caller graph for this function:

◆ has_callSite_base_address()

bool memory::has_callSite_base_address ( unsigned int  var) const

Check if there is a base address for the given call site.

Definition at line 436 of file memory.cpp.

References callSites.

Referenced by get_base_address(), get_callSites(), and get_symbol().

Here is the caller graph for this function:

◆ has_external_base_address()

bool memory::has_external_base_address ( unsigned int  var) const

Check if there is a base address for the given variable.

Definition at line 446 of file memory.cpp.

References external.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ has_implicit_memcpy()

bool memory::has_implicit_memcpy ( ) const
inline

return true in case the specification has an implicit call of memcpy

Definition at line 760 of file memory.hpp.

References implicit_memcpy.

◆ has_intern_shared_data()

bool memory::has_intern_shared_data ( ) const
inline

return true in case the specification has data that can be externally accessed

Definition at line 622 of file memory.hpp.

References intern_shared_data.

◆ has_internal_base_address()

bool memory::has_internal_base_address ( unsigned int  var) const

Check if there is a base address for the given variable.

Definition at line 441 of file memory.cpp.

References in_vars.

Referenced by get_base_address(), get_callSites(), and get_symbol().

Here is the caller graph for this function:

◆ has_packed_vars()

bool memory::has_packed_vars ( ) const
inline
Returns
true in case packed vars are used

Definition at line 744 of file memory.hpp.

References packed_vars.

◆ has_parameter_base_address()

bool memory::has_parameter_base_address ( unsigned int  var,
unsigned int  funId 
) const

Check if there is a base address for the given parameter.

Definition at line 451 of file memory.cpp.

References parameter.

Referenced by get_base_address(), get_first_address(), get_last_address(), get_symbol(), and increment_n_mem_operations().

Here is the caller graph for this function:

◆ has_proxied_internal_variables()

bool memory::has_proxied_internal_variables ( unsigned int  funID_scope) const

check if the function has proxied variables

Parameters
funID_scopeis the function id
Returns
true when there are proxied variables, false otherwise

Definition at line 214 of file memory.cpp.

References internal_variable_proxy.

Referenced by get_proxied_internal_variables().

Here is the caller graph for this function:

◆ has_sds_var()

bool memory::has_sds_var ( unsigned int  var) const

return true if the var has been classified in term of same data size relation

Parameters
varis the variable id
Returns
true when var is in the sds relation, false otherwise

Definition at line 381 of file memory.cpp.

References same_data_size_accesses.

Referenced by get_source_values(), and is_sds_var().

Here is the caller graph for this function:

◆ has_unaligned_accesses()

bool memory::has_unaligned_accesses ( ) const
inline

return true in case of unaligned accesses

Definition at line 711 of file memory.hpp.

References unaligned_accesses.

◆ has_unknown_addresses()

bool memory::has_unknown_addresses ( ) const
inline

return true in case the specification use addresses not known at compile time

Definition at line 696 of file memory.hpp.

References use_unknown_addresses.

◆ increment_n_mem_operations()

void memory::increment_n_mem_operations ( unsigned int  var)
inline

◆ is_a_proxied_variable()

bool memory::is_a_proxied_variable ( unsigned int  var) const

return true if the variable is a proxied variable

Parameters
varis the id of the variable
Returns
true when var is a proxied variable

Definition at line 219 of file memory.cpp.

References proxied_variables.

◆ is_actual_parm_loaded()

bool memory::is_actual_parm_loaded ( unsigned int  var) const

return true in case the actual parameter has to be initialized from a stored value

Definition at line 634 of file memory.cpp.

References actual_parm_loaded.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ is_external_variable()

bool memory::is_external_variable ( unsigned int  var) const

Test if a variable is into the set of variables out of the top function.

Definition at line 365 of file memory.cpp.

References external.

Referenced by get_source_values().

Here is the caller graph for this function:

◆ is_internal_variable()

bool memory::is_internal_variable ( unsigned int  funID_scope,
unsigned int  var 
) const

Test if a variable is allocated into the specified function.

Definition at line 359 of file memory.cpp.

Referenced by get_source_values().

Here is the caller graph for this function:

◆ is_parameter()

bool memory::is_parameter ( unsigned int  funID_scope,
unsigned int  var 
) const

Test if a variable is into the set of interface registers.

Definition at line 386 of file memory.cpp.

References parameter.

Referenced by get_source_values().

Here is the caller graph for this function:

◆ is_parm_decl_copied()

bool memory::is_parm_decl_copied ( unsigned int  var) const

return true in case the parm_decl parameter has to be copied from the caller

Definition at line 614 of file memory.cpp.

References parm_decl_copied.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ is_parm_decl_stored()

bool memory::is_parm_decl_stored ( unsigned int  var) const

return true in case the parm_decl parameter has to be initialized from the formal value

Definition at line 624 of file memory.cpp.

References parm_decl_stored.

Referenced by increment_n_mem_operations().

Here is the caller graph for this function:

◆ is_private_memory()

bool memory::is_private_memory ( unsigned int  var) const

Return true in case the variable is private.

Parameters
varis the index of the variable
Returns
true in case the variable is private

Definition at line 370 of file memory.cpp.

References private_memories.

Referenced by add_internal_symbol(), add_internal_variable(), count_non_private_internal_symbols(), get_first_address(), get_last_address(), and get_source_values().

Here is the caller graph for this function:

◆ is_read_only_variable()

bool memory::is_read_only_variable ( unsigned  var) const

return true when the variable is only read

Parameters
varis the variable id
Returns
true when variable is only read, false otherwise

Definition at line 229 of file memory.cpp.

References read_only_vars.

◆ is_sds_var()

bool memory::is_sds_var ( unsigned int  var) const

check if the variable is always accessed with the same data size

Parameters
varis the variable id
Returns
true when the variable is always accessed with the same data size, false otherwise

Definition at line 375 of file memory.cpp.

References has_sds_var(), same_data_size_accesses, STR, and THROW_ASSERT.

Referenced by get_source_values().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ notEQ()

bool memory::notEQ ( refcount< memory ref) const

◆ propagate_memory_parameters()

void memory::propagate_memory_parameters ( const structural_objectRef  src,
const structural_managerRef  tgt 
)
static

◆ reserve_internal_space()

void memory::reserve_internal_space ( unsigned long long int  space)

Explicitly allocate a certain space in the internal memory.

Definition at line 583 of file memory.cpp.

References align(), internal_base_address_alignment, and next_base_address.

Referenced by increment_n_mem_operations().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reserve_space()

void memory::reserve_space ( unsigned long long  space)

Explicitly allocate a certain space in the external memory.

Definition at line 577 of file memory.cpp.

References align(), internal_base_address_alignment, and next_off_base_address.

Referenced by increment_n_mem_operations().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_all_pointers_resolved()

void memory::set_all_pointers_resolved ( bool  resolved)
inline

define if all pointers have statically resolved

Definition at line 719 of file memory.hpp.

◆ set_bram_bitsize()

void memory::set_bram_bitsize ( unsigned long long  bitsize)
inline

set the BRAM bitsize

Definition at line 582 of file memory.hpp.

◆ set_bus_data_bitsize()

void memory::set_bus_data_bitsize ( unsigned long long  bitsize)
inline

set the bus data bitsize

Definition at line 550 of file memory.hpp.

◆ set_bus_size_bitsize()

void memory::set_bus_size_bitsize ( unsigned long long  bitsize)
inline

set the bus size bitsize

Definition at line 566 of file memory.hpp.

◆ set_enable_hls_bit_value()

void memory::set_enable_hls_bit_value ( bool  value)
inline

Definition at line 820 of file memory.hpp.

References symmetry::value.

◆ set_implicit_memcpy()

void memory::set_implicit_memcpy ( bool  cond)
inline

define if there exist an implicit call of memcpy

Definition at line 752 of file memory.hpp.

◆ set_intern_shared_data()

void memory::set_intern_shared_data ( bool  has_accesses)
inline

define if the Spec has data that can be externally accessed

Definition at line 614 of file memory.hpp.

◆ set_internal_base_address_alignment()

void memory::set_internal_base_address_alignment ( unsigned long long  _internal_base_address_alignment)

set the internal base address alignment

Parameters
_internal_base_address_alignmentis the new alignment

Definition at line 644 of file memory.cpp.

References align(), internal_base_address_alignment, internal_base_address_start, next_base_address, and THROW_ASSERT.

Referenced by get_parameter_alignment().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_maxbram_bitsize()

void memory::set_maxbram_bitsize ( unsigned int  bitsize)
inline

set the maximum BRAM bitsize

Definition at line 598 of file memory.hpp.

◆ set_maximum_loads()

void memory::set_maximum_loads ( unsigned int  var,
size_t  n_refs 
)
inline

define the maximum number of loads for a given variable

Parameters
varis variable
n_refsis the number of loads

Definition at line 652 of file memory.hpp.

◆ set_maximum_references()

void memory::set_maximum_references ( unsigned int  var,
size_t  n_refs 
)
inline

define the maximum number of references for a given variable

Parameters
varis variable
n_refsis the number of references

Definition at line 632 of file memory.hpp.

◆ set_packed_vars()

void memory::set_packed_vars ( bool  packed)
inline

update the the packed variables status

Parameters
packedis true when there is at least one packed variable

Definition at line 736 of file memory.hpp.

◆ set_sds_var()

void memory::set_sds_var ( unsigned int  var,
bool  value 
)

set if a variable is always accessed with the same data size or not

Parameters
varis the variable id
valueis true when the variable is always accessed with the same data size or false otherwise

Definition at line 313 of file memory.cpp.

References same_data_size_accesses, and symmetry::value.

◆ set_unaligned_accesses()

void memory::set_unaligned_accesses ( bool  accesses)
inline

set if LOADs or STOREs perform unaligned accesses

Definition at line 703 of file memory.hpp.

◆ set_use_unknown_addresses()

void memory::set_use_unknown_addresses ( bool  accesses)
inline

define if there exist an object used by the Spec with an address not known at compile time

Definition at line 688 of file memory.hpp.

◆ xwrite() [1/2]

void memory::xwrite ( xml_element node)

Writes the current memory allocation into an XML description.

Definition at line 751 of file memory.cpp.

References xml_child::add_child_element(), external, tree_helper::name_function(), off_base_address, parameter, STR, TreeM, WRITE_XNVM, and WRITE_XVM.

Referenced by get_parameter_alignment(), and HLS_manager::xwrite().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xwrite() [2/2]

void memory::xwrite ( const std::string &  filename)

Writes the current memory allocation into an XML description.

Definition at line 1088 of file memory.cpp.

References xml_document::create_root_node(), xml_document::write_to_file_formatted(), and xwrite2().

Here is the call graph for this function:

◆ xwrite2()

void memory::xwrite2 ( xml_element node)

Writes the current memory allocation into an XML description.

Definition at line 1062 of file memory.cpp.

References xml_child::add_child_element(), external, tree_helper::name_function(), off_base_address, TreeM, WRITE_XNVM, and WRITE_XVM.

Referenced by get_parameter_alignment(), and xwrite().

Here is the call graph for this function:
Here is the caller graph for this function:

Field Documentation

◆ actual_parm_loaded

CustomOrderedSet<unsigned int> memory::actual_parm_loaded
private

actual parameter that has to be loaded from a stored value

Definition at line 115 of file memory.hpp.

Referenced by add_actual_parm_loaded(), is_actual_parm_loaded(), and notEQ().

◆ all_pointers_resolved

bool memory::all_pointers_resolved
private

is true when all pointers are resolved statically

Definition at line 160 of file memory.hpp.

Referenced by has_all_pointers_resolved(), and notEQ().

◆ bram_bitsize

unsigned long long memory::bram_bitsize
private

bram bitsize

Definition at line 145 of file memory.hpp.

Referenced by get_bram_bitsize(), and notEQ().

◆ bus_addr_bitsize

const unsigned int& memory::bus_addr_bitsize
private

Definition at line 192 of file memory.hpp.

Referenced by compute_next_base_address(), and notEQ().

◆ bus_data_bitsize

unsigned long long memory::bus_data_bitsize
private

bus data bitsize

Definition at line 139 of file memory.hpp.

Referenced by get_bus_data_bitsize(), and notEQ().

◆ bus_size_bitsize

unsigned long long memory::bus_size_bitsize
private

bus size bitsize

Definition at line 142 of file memory.hpp.

Referenced by get_bus_size_bitsize(), and notEQ().

◆ callSites

std::map<unsigned int, memory_symbolRef> memory::callSites
private

set of call sites for __builtin_wait_call

Definition at line 97 of file memory.hpp.

Referenced by add_internal_symbol(), get_callSite_base_address(), get_callSites(), get_symbol(), has_base_address(), has_callSite_base_address(), and notEQ().

◆ enable_hls_bit_value

bool memory::enable_hls_bit_value
private

Definition at line 194 of file memory.hpp.

Referenced by get_enable_hls_bit_value().

◆ external

std::map<unsigned int, memory_symbolRef> memory::external
private

◆ external_base_address_alignment

unsigned long long memory::external_base_address_alignment
private

external address alignment

Definition at line 169 of file memory.hpp.

Referenced by add_external_symbol(), memory(), and notEQ().

◆ implicit_memcpy

bool memory::implicit_memcpy
private

when true an implicit memcpy is called

Definition at line 163 of file memory.hpp.

Referenced by has_implicit_memcpy(), and notEQ().

◆ in_vars

std::map<unsigned int, memory_symbolRef> memory::in_vars
private

◆ intern_shared_data

bool memory::intern_shared_data
private

define if the Spec has data that can be externally accessed

Definition at line 151 of file memory.hpp.

Referenced by has_intern_shared_data(), and notEQ().

◆ internal

std::map<unsigned int, std::map<unsigned int, memory_symbolRef> > memory::internal
private

set of variables allocated internally to the cores, classified by function id

Definition at line 76 of file memory.hpp.

Referenced by notEQ().

◆ internal_base_address_alignment

unsigned long long memory::internal_base_address_alignment
private

◆ internal_base_address_start

unsigned long long int memory::internal_base_address_start
private

◆ internal_variable_proxy

std::map<unsigned int, CustomOrderedSet<unsigned int> > memory::internal_variable_proxy
private

set of variable proxies accessed by a function

Definition at line 79 of file memory.hpp.

Referenced by add_internal_variable_proxy(), get_proxied_internal_variables(), has_proxied_internal_variables(), and notEQ().

◆ maxbram_bitsize

unsigned int memory::maxbram_bitsize
private

maximum bram bitsize

Definition at line 148 of file memory.hpp.

Referenced by get_maxbram_bitsize(), and notEQ().

◆ maximum_loads

std::map<unsigned int, size_t> memory::maximum_loads
private

define for each variable the number of loads whenever it is possible

Definition at line 184 of file memory.hpp.

Referenced by notEQ().

◆ maximum_private_memory_size

unsigned long long int memory::maximum_private_memory_size
private

is the maximum amount of private memory allocated

Definition at line 124 of file memory.hpp.

Referenced by add_internal_symbol(), get_max_address(), and notEQ().

◆ maximum_references

std::map<unsigned int, size_t> memory::maximum_references
private

define for each variable the number of references whenever it is possible

Definition at line 181 of file memory.hpp.

Referenced by notEQ().

◆ n_mem_operations_per_var

std::map<unsigned int, unsigned int> memory::n_mem_operations_per_var
private

number of LOAD/STORE per var

Definition at line 175 of file memory.hpp.

◆ need_bus

CustomOrderedSet<unsigned int> memory::need_bus
private

define for each variable the number of loads whenever it is possible

Definition at line 187 of file memory.hpp.

Referenced by notEQ().

◆ next_base_address

unsigned long long int memory::next_base_address
private

◆ next_off_base_address

unsigned long long int memory::next_off_base_address
private

it represents the next address that is available to allocate a variable out of the top module

Definition at line 136 of file memory.hpp.

Referenced by add_external_symbol(), add_external_variable(), get_memory_address(), notEQ(), and reserve_space().

◆ null_pointer_check

bool memory::null_pointer_check
private

when false object could be allocated starting from address 0

Definition at line 178 of file memory.hpp.

Referenced by add_internal_variable(), memory(), and notEQ().

◆ off_base_address

unsigned long long int memory::off_base_address
private

it represents the base address of the external memory

Definition at line 133 of file memory.hpp.

Referenced by notEQ(), xwrite(), and xwrite2().

◆ packed_vars

bool memory::packed_vars
private

true when packed vars are used

Definition at line 190 of file memory.hpp.

Referenced by has_packed_vars(), and notEQ().

◆ parameter

std::map<unsigned int, std::map<unsigned int, memory_symbolRef> > memory::parameter
private

◆ parameter_alignment

const unsigned long long memory::parameter_alignment
private

parameter alignment

Definition at line 172 of file memory.hpp.

Referenced by add_parameter_symbol(), get_parameter_alignment(), and notEQ().

◆ params

std::map<unsigned int, memory_symbolRef> memory::params
private

set of all the internal parameters

Definition at line 95 of file memory.hpp.

Referenced by add_parameter_symbol(), has_base_address(), and notEQ().

◆ parm_decl_copied

CustomOrderedSet<unsigned int> memory::parm_decl_copied
private

parm_decl that has to be copied from the caller

Definition at line 109 of file memory.hpp.

Referenced by add_parm_decl_copied(), is_parm_decl_copied(), and notEQ().

◆ parm_decl_stored

CustomOrderedSet<unsigned int> memory::parm_decl_stored
private

parm_decl storage has to be initialized from the formal parameter

Definition at line 112 of file memory.hpp.

Referenced by add_parm_decl_stored(), is_parm_decl_stored(), and notEQ().

◆ private_memories

CustomOrderedSet<unsigned int> memory::private_memories
private

store the objects that does not need to be attached to the bus

Definition at line 100 of file memory.hpp.

Referenced by add_private_memory(), is_private_memory(), and notEQ().

◆ proxied_variables

CustomOrderedSet<unsigned int> memory::proxied_variables
private

is the set of proxied variables

Definition at line 82 of file memory.hpp.

Referenced by add_internal_variable_proxy(), is_a_proxied_variable(), and notEQ().

◆ rangesize

std::map<unsigned int, unsigned long long int> memory::rangesize
private

for each var store the address space rangesize associated with it

Definition at line 90 of file memory.hpp.

Referenced by add_internal_symbol(), get_rangesize(), and notEQ().

◆ read_only_vars

CustomOrderedSet<unsigned int> memory::read_only_vars
private

Definition at line 84 of file memory.hpp.

Referenced by add_read_only_variable(), is_read_only_variable(), and notEQ().

◆ same_data_size_accesses

std::map<unsigned int, unsigned int> memory::same_data_size_accesses
private

store if a given variable is accessed always with the same data_size or not

Definition at line 103 of file memory.hpp.

Referenced by has_sds_var(), is_sds_var(), notEQ(), and set_sds_var().

◆ source_values

std::map<unsigned int, CustomOrderedSet<unsigned int> > memory::source_values
private

ssa_names assigned to a given memory variable

Definition at line 106 of file memory.hpp.

Referenced by add_source_value().

◆ total_amount_of_parameter_memory

unsigned long long int memory::total_amount_of_parameter_memory
private

total amount of parameter memory

Definition at line 130 of file memory.hpp.

Referenced by add_parameter(), add_parameter_symbol(), get_allocated_parameters_memory(), and notEQ().

◆ total_amount_of_private_memory

unsigned long long int memory::total_amount_of_private_memory
private

total amount of internal memory allocated

Definition at line 127 of file memory.hpp.

Referenced by add_internal_symbol(), get_allocated_space(), and notEQ().

◆ TreeM

const tree_managerConstRef memory::TreeM
private

data-structure containing tree information

Definition at line 70 of file memory.hpp.

Referenced by add_external_variable(), add_internal_symbol(), add_internal_variable(), compute_next_base_address(), get_last_address(), xwrite(), and xwrite2().

◆ unaligned_accesses

bool memory::unaligned_accesses
private

true when LOADs or STOREs perform unaligned accesses

Definition at line 157 of file memory.hpp.

Referenced by has_unaligned_accesses(), and notEQ().

◆ use_unknown_addresses

bool memory::use_unknown_addresses
private

Spec accesses data having an address unknown at compile time.

Definition at line 154 of file memory.hpp.

Referenced by has_unknown_addresses(), and notEQ().


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

Generated on Mon Feb 12 2024 13:03:57 for PandA-2024.02 by doxygen 1.8.13