risc-v-tlm/inc/Trace.h

65 lines
1.3 KiB
C
Raw Normal View History

/*!
\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
#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"
2022-10-06 23:23:14 +08:00
namespace riscv_tlm::peripherals {
/**
* @brief Simple trace peripheral
*
* This peripheral outputs to cout any character written to its unique register
*/
class Trace : sc_core::sc_module {
public:
2021-11-30 03:35:26 +08:00
/**
2022-10-06 23:23:14 +08:00
* @brief Bus socket
2021-11-30 05:21:20 +08:00
*/
2022-10-06 23:23:14 +08:00
tlm_utils::simple_target_socket<Trace> socket;
2022-10-06 23:23:14 +08:00
/**
* @brief Constructor
* @param name Module name
*/
explicit Trace(sc_core::sc_module_name const &name);
2021-11-30 05:21:20 +08:00
2022-10-06 23:23:14 +08:00
/**
* @brief Destructor
*/
~Trace() override;
2022-10-06 23:23:14 +08:00
private:
2022-10-06 23:23:14 +08:00
// TLM-2 blocking transport method
virtual void b_transport(tlm::tlm_generic_payload &trans,
sc_core::sc_time &delay);
2022-10-06 23:23:14 +08:00
void xtermLaunch(char *slaveName) const;
2022-10-06 23:23:14 +08:00
void xtermKill();
2022-10-06 23:23:14 +08:00
void xtermSetup();
2021-11-30 03:35:26 +08:00
2022-10-06 23:23:14 +08:00
int ptSlave{};
int ptMaster{};
int xtermPid{};
};
2021-11-30 03:35:26 +08:00
}
#endif