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