2018-09-20 05:44:38 +08:00
|
|
|
/*!
|
2020-06-02 19:08:38 +08:00
|
|
|
\file Trace.h
|
|
|
|
\brief Basic TLM-2 Trace module
|
|
|
|
\author Màrius Montón
|
|
|
|
\date September 2018
|
|
|
|
*/
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
2018-09-20 05:44:38 +08:00
|
|
|
|
|
|
|
#ifndef __TRACE_H__
|
|
|
|
#define __TRACE_H__
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
#include <fstream>
|
|
|
|
|
|
|
|
#define SC_INCLUDE_DYNAMIC_PROCESSES
|
|
|
|
|
|
|
|
#include "systemc"
|
|
|
|
|
|
|
|
#include "tlm.h"
|
|
|
|
#include "tlm_utils/simple_target_socket.h"
|
|
|
|
|
2018-09-21 17:23:31 +08:00
|
|
|
/**
|
|
|
|
* @brief Simple trace peripheral
|
|
|
|
*
|
|
|
|
* This peripheral outputs to cout any character written to its unique register
|
|
|
|
*/
|
2020-06-02 19:08:38 +08:00
|
|
|
class Trace: sc_core::sc_module {
|
2018-09-20 05:44:38 +08:00
|
|
|
public:
|
2019-09-08 17:41:06 +08:00
|
|
|
|
2020-06-02 19:08:38 +08:00
|
|
|
/**
|
|
|
|
* @brief Bus socket
|
|
|
|
*/
|
|
|
|
tlm_utils::simple_target_socket<Trace> socket;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Constructor
|
|
|
|
* @param name Module name
|
|
|
|
*/
|
2021-04-26 01:52:12 +08:00
|
|
|
explicit Trace(sc_core::sc_module_name const &name);
|
2020-06-02 19:08:38 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Destructor
|
|
|
|
*/
|
2021-04-26 01:52:12 +08:00
|
|
|
~Trace() override;
|
2020-06-02 19:08:38 +08:00
|
|
|
|
2019-09-08 17:41:06 +08:00
|
|
|
private:
|
2020-06-02 19:08:38 +08:00
|
|
|
|
|
|
|
// TLM-2 blocking transport method
|
|
|
|
virtual void b_transport(tlm::tlm_generic_payload &trans,
|
|
|
|
sc_core::sc_time &delay);
|
|
|
|
|
2021-01-23 18:44:10 +08:00
|
|
|
void xtermLaunch(char *slaveName) const;
|
2021-04-26 06:20:29 +08:00
|
|
|
void xtermKill();
|
2021-04-26 01:52:12 +08:00
|
|
|
void xtermSetup();
|
2020-06-02 19:08:38 +08:00
|
|
|
|
2021-04-26 01:52:12 +08:00
|
|
|
int ptSlave{};
|
|
|
|
int ptMaster{};
|
|
|
|
int xtermPid{};
|
2018-09-20 05:44:38 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|