#ifndef	_BLACKBOX_SEM_TB_CPP_
#define _BLACKBOX_SEM_TB_CPP_

//Počet generovaných hodnôt
#define NVZ 50


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


//Vstupné parametre obvodu
int R = 1;
int expR = 3;
int C = 5;
int expC = -6;
int T = 4;		// Minimálne
int expT = -4;	// 50 vzorkov
int U = 1;
int expUz = 2;


//Funkcia zápisu vstupných testovacích hodnôt (enablovanie DUT)
void BlackBox_SEM_TB::test_write0(void)
{

//Vstupné konštanty do DUT
	sc_float<E, M> coef[2];
	sc_float<E, M> Uz;
double coef_d[2], U_d;
coef_d[0] = coef_0_SEM(R, expR, C, expC, T, expT);
coef_d[1] = coef_0_SEM(R, expR, C, expC, T, expT);
U_d = U_val(U, expUz);
		coef[0] = coef_d[0];
		coef[1] = coef_d[1];
		Uz = U_d;

coef0_sc_fl.write(coef[0]);
coef1_sc_fl.write(coef[1]);
Uz_sc_fl.write(Uz);

//Vnútorné premenné
bool en_var;

//Reset DUT
	en.write(false);
	rst.write(true);
wait();
	rst.write(false);
wait();			
//Ukončenie resetu DUT


//Generácia vstupných dát do DUT
	for(int i = 0; i<NVZ; i++)
	{
		en_var = true;
		en.write(en_var);
	}
}



//Funckia pre čítanie výstupných dát z DUT
void BlackBox_SEM_TB::test_read0(void)
{
//Vnútorné premenné
	sc_float<E, M> data_output_sc_fl;
	double data_output_fl;

//Čítanie dát z výstupu DUT
		for(int i = 0; i<NVZ; i++)
		{
			data_output_sc_fl= outp.read();
			wait();
		}

	//Príkaz na Ukončenie simulácie
	sc_stop();
}

#endif
