aboutsummaryrefslogtreecommitdiff
path: root/src/devices/time_monitor.h
blob: 62d5626d40629840258f003ebbcfa8ac33cd3e8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#pragma once

#include <systemc.h>
#include <chrono>
#include <iostream>

using std::chrono::system_clock;
using std::shared_ptr;
using std::make_shared;

class TimeMonitor : public sc_module {
public:
    double m_poll_period; // in seconds
    double m_wallclock_period; // in seconds

    void on_trigger();

    TimeMonitor(sc_module_name name, double poll_period=100e-12, double wallclock_period = 2)
        : sc_module(name),
        m_poll_period(poll_period),
        m_wallclock_period(wallclock_period)
    {
        SC_HAS_PROCESS(TimeMonitor);
        SC_THREAD(on_trigger);
    }
};