#ifndef _CORE_TB_H_
#define _CORE_TB_H_

#include <systemc.h>
#include "Precision.h"
#include "sc_float.h"

//Deklarácia modulu Testovacích signálov TB
class Osc_SEM_TB : public sc_module
{
  public:
//Definovanie portov modulu
  //Vstupy
	sc_in_clk	clk;
	sc_in< sc_float<E, M> > outp;
  //Výstupné konštanty
	sc_out<sc_float<E, M> > coef0_sc_fl;
	sc_out<sc_float<E, M> > coef1_sc_fl;
	sc_out<sc_float<E, M> > Uz_sc_fl;
	sc_out<sc_float<E, M> > komp_value;
  //Výstupy
	sc_out<bool>	rst;
	sc_out<bool>	en;
  //"Handshaking"
	sc_out<bool>	inp_vld;
	sc_in<bool>		inp_rdy;	
	sc_out<bool>	outp_rdy;
	sc_in<bool>		outp_vld;

  //Funkcia sc_exp
  #include "sc_exp.inc"

//Funkcie modulu
void test_write0();
void test_read0();

//Výstupný súbor
FILE *outpf;

//Konštruktor modulu
SC_HAS_PROCESS( Osc_SEM_TB );
Osc_SEM_TB (sc_module_name nm): sc_module(nm),
	//Vstupné konštanty
		coef0_sc_fl		("coef0_sc_fl"),	
		coef1_sc_fl		("coef1_sc_fl"),
		Uz_sc_fl		("Uz_sc_fl"),
		komp_value		("komp_value"),
	//Vstupy
		clk				("clk"),
		outp			("outp"),
	//Výstupy
		rst				("rst"),
		en				("en"),
	//"Handshaking"
		inp_vld			("inp_vld"),
		inp_rdy			("inp_rdy"),
		outp_rdy		("outp_rdy"),
		outp_vld		("outp_vld")
	{
		SC_CTHREAD( test_write0, clk.pos() );
		SC_CTHREAD( test_read0, clk.pos() );
	}
};//Ukončenie deklarácie modulu Testovacích signálov TB

#endif