SystemC Library API Reference Manual
Reference documentation for the Simics SystemC Library.
 
Loading...
Searching...
No Matches
sc_transaction_tracker_tool.h
Go to the documentation of this file.
1/*
2 © 2017 Intel Corporation
3
4 This software and the related documents are Intel copyrighted materials, and
5 your use of them is governed by the express license under which they were
6 provided to you ("License"). Unless the License provides otherwise, you may
7 not use, modify, copy, publish, distribute, disclose or transmit this software
8 or the related documents without Intel's prior written permission.
9
10 This software and the related documents are provided as is, with no express or
11 implied warranties, other than those that are expressly stated in the License.
12*/
13
14#ifndef SIMICS_SYSTEMC_TOOLS_SC_TRANSACTION_TRACKER_TOOL_H
15#define SIMICS_SYSTEMC_TOOLS_SC_TRANSACTION_TRACKER_TOOL_H
16
17#include <simics/cc-api.h>
21
22#include <systemc>
23#include <tlm>
24
25#include <deque>
26#include <queue>
27#include <string>
28
29namespace simics {
30namespace systemc {
31namespace tools {
32
34 public:
35 explicit ScTransactionTrackerTool(simics::ConfObjectRef o);
36
37 void nb_transport_fw_pre(scla::ProxyInterface *proxy_iface,
38 tlm::tlm_generic_payload *trans,
39 tlm::tlm_phase *phase,
40 sc_core::sc_time *time) override;
41
42 void nb_transport_fw_post(scla::ProxyInterface *proxy_iface,
43 tlm::tlm_generic_payload *trans,
44 tlm::tlm_phase *phase,
45 sc_core::sc_time *time,
46 tlm::tlm_sync_enum *ret) override;
47
48 void b_transport_pre(scla::ProxyInterface *proxy_iface,
49 tlm::tlm_generic_payload *trans,
50 sc_core::sc_time *time) override;
51
52 void b_transport_post(scla::ProxyInterface *proxy_iface,
53 tlm::tlm_generic_payload *trans,
54 sc_core::sc_time *time) override;
55
56 void transport_dbg_pre(scla::ProxyInterface *proxy_iface,
57 tlm::tlm_generic_payload *trans) override;
58
59 void transport_dbg_post(scla::ProxyInterface *proxy_iface,
60 tlm::tlm_generic_payload *trans,
61 unsigned int *ret) override;
62
63 void nb_transport_bw_pre(scla::ProxyInterface *proxy_iface,
64 tlm::tlm_generic_payload *trans,
65 tlm::tlm_phase *phase,
66 sc_core::sc_time *time) override;
67
68 void nb_transport_bw_post(scla::ProxyInterface *proxy_iface,
69 tlm::tlm_generic_payload *trans,
70 tlm::tlm_phase *phase,
71 sc_core::sc_time *time,
72 tlm::tlm_sync_enum *ret) override;
73 static void initialize(const std::string &module_name);
74
75 private:
76 void allocate_extensions();
77 TransactionTrackerExtension* find_free_extension();
78
79 void handle_extension_pre(scla::ProxyInterface *proxy_iface,
80 tlm::tlm_generic_payload *trans);
81
82 void handle_extension_post(scla::ProxyInterface *proxy_iface,
83 tlm::tlm_generic_payload *trans);
84
85 typedef std::deque<TransactionTrackerExtension> extensions_t;
86 extensions_t extensions_;
87
88 typedef std::queue<TransactionTrackerExtension *> extensions_free_list_t;
89 extensions_free_list_t extensions_free_list_;
90};
91
92} // namespace tools
93} // namespace systemc
94} // namespace simics
95
96#endif
Definition: sc_tool.h:49
Definition: sc_transaction_tracker_tool.h:33
void nb_transport_bw_pre(scla::ProxyInterface *proxy_iface, tlm::tlm_generic_payload *trans, tlm::tlm_phase *phase, sc_core::sc_time *time) override
void nb_transport_bw_post(scla::ProxyInterface *proxy_iface, tlm::tlm_generic_payload *trans, tlm::tlm_phase *phase, sc_core::sc_time *time, tlm::tlm_sync_enum *ret) override
static void initialize(const std::string &module_name)
void nb_transport_fw_post(scla::ProxyInterface *proxy_iface, tlm::tlm_generic_payload *trans, tlm::tlm_phase *phase, sc_core::sc_time *time, tlm::tlm_sync_enum *ret) override
void transport_dbg_post(scla::ProxyInterface *proxy_iface, tlm::tlm_generic_payload *trans, unsigned int *ret) override
void nb_transport_fw_pre(scla::ProxyInterface *proxy_iface, tlm::tlm_generic_payload *trans, tlm::tlm_phase *phase, sc_core::sc_time *time) override
void b_transport_post(scla::ProxyInterface *proxy_iface, tlm::tlm_generic_payload *trans, sc_core::sc_time *time) override
void transport_dbg_pre(scla::ProxyInterface *proxy_iface, tlm::tlm_generic_payload *trans) override
void b_transport_pre(scla::ProxyInterface *proxy_iface, tlm::tlm_generic_payload *trans, sc_core::sc_time *time) override
Definition: sc_transaction_tracker_extension.h:34
Definition: adapter.h:79