17#ifndef _TLM_SCC_MEMORY_MAP_COLLECTOR_H_
18#define _TLM_SCC_MEMORY_MAP_COLLECTOR_H_
32 uint64_t end{std::numeric_limits<uint64_t>::max()};
34 std::vector<memory_node> elemets;
35 memory_node(uint64_t start, uint64_t end)
38 memory_node() =
default;
39 std::string to_string(
const std::string& prefix =
"")
const;
42struct memory_map_extension : tlm::tlm_extension<memory_map_extension> {
43 tlm_extension_base* clone()
const override {
return new memory_map_extension(*
this); }
44 void copy_from(tlm_extension_base
const& from)
override {
throw std::runtime_error(
"copying of memory_map_extension not allowed"); }
48 ~memory_map_extension() {}
54template <
typename TYPES = tlm::tlm_base_protocol_types>
55memory_node gather_memory(sc_core::sc_port_b<tlm::tlm_fw_transport_if<TYPES>>& port) {
58 tlm::tlm_generic_payload trans;
59 trans.set_extension(&ext);
60 port->transport_dbg(trans);
62 return std::move(root);