SystemC Library API Reference Manual
Reference documentation for the Simics SystemC Library.
 
Loading...
Searching...
No Matches
signal_class.h
Go to the documentation of this file.
1// -*- mode: C++; c-file-style: "virtutech-c++" -*-
2
3/*
4 © 2020 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_SIMICS2SYSTEMC_SIGNAL_CLASS_H
17#define SIMICS_SYSTEMC_SIMICS2SYSTEMC_SIGNAL_CLASS_H
18
19
26
27#include <string>
28
29namespace simics {
30namespace systemc {
31namespace simics2systemc {
32
33class SignalClassBase : public ConfObject,
35 public Version,
39
40 public:
41 explicit SignalClassBase(ConfObjectRef o)
42 : ConfObject(o), initial_level_(false) {}
43 void finalize() override;
44
45 // GasketClassInterface
47 void createGasket(iface::SimulationInterface *simulation) override;
48
49 private:
50 virtual SignalBase *gasket() {return nullptr;}
51
52 std::string signal_name_;
53 bool initial_level_;
54 ConfObjectRef simulation_ref_;
55};
56
58 public SignalGasketAdapter {
59 public:
60 explicit SignalClassNonSerializable(ConfObjectRef o)
61 : SignalClassBase(o),
62 SignalGasketAdapter(&gasket_, this) {}
63
64 static conf_class_t *registerGasketClass(const char* class_name);
65
66 private:
67 SignalBase *gasket() override {
68 return &gasket_;
69 }
70
71 SignalBase gasket_;
72};
73
74#if INTC_EXT && USE_SIMICS_CHECKPOINTING
75class SignalClassSerializable : public SignalClassBase,
76 public SignalGasketAdapter {
77 public:
78 explicit SignalClassSerializable(ConfObjectRef o);
79
80 static conf_class_t *registerGasketClass(const char* class_name);
81
82 private:
83 SignalBase *gasket() override {
84 return &gasket_;
85 }
86
87 SignalSerializable gasket_;
88};
89using SignalClass = SignalClassSerializable;
90#else
92#endif
93} // namespace simics2systemc
94} // namespace systemc // NOLINT
95} // namespace simics // NOLINT
96
97#endif
Definition: gasket_class_interface.h:28
Interface to the SystemC simulation.
Definition: simulation_interface_proxy.h:27
Definition: version.h:43
Definition: sc_version_interface.h:27
Interface to the SystemC simulation.
Definition: simulation_interface.h:27
SignalClassBase(ConfObjectRef o)
Definition: signal_class.h:41
friend class SignalClassSerializable
Definition: signal_class.h:38
iface::ScVersionInterface * version() override
void createGasket(iface::SimulationInterface *simulation) override
static conf_class_t * registerGasketClass(const char *class_name)
SignalClassNonSerializable(ConfObjectRef o)
Definition: signal_class.h:60
Adapter for Signal gasket.
Definition: signal_gasket_adapter.h:35
SignalClassNonSerializable SignalClass
Definition: signal_class.h:91
Definition: adapter.h:80