#include "stdlib.h"
#include "string.h"
#include "iostream.h"
#include "fstream.h"

#include "global.h"

extern int MESH;
extern TransTable Trn[TYPENO];
extern int Dat[TYPENO][4][MAXASCNO],Ins[TYPENO][4];
extern int TPN;
extern void type(const char[MAX_LENGTH_NAME],char[MAX_LENGTH_NAME],int&);

char** Asm[MAXASCNO];
char*** Bvc[MAXASCNO];

// Host
long int BW_host;
int datasc[MAXASCNO],insasc[MAXASCNO];
double Dt_xasc[MAXASCNO],Dt_fpga[MAXASCNO];

// Bus
long int BW_hubs;
double Pr_hub_fail;
int **resbts[MAXASCNO];
double BSR,Dt_xhbu[MAXASCNO],Dt_xubh[MAXASCNO];

// FPGA-Unit
double *Dt_xasm[MAXASCNO],Dt_unit[MAXASCNO];

// IOC
int *dbtsasm[MAXASCNO],*ibtsasm[MAXASCNO];
long int BW_iocx,BW_isim;
double Pr_isim_fail,Pr_hifb_fail;
double ISSR,FBSR;
double *Dt_ioc[MAXASCNO];
double *Dt_isio[MAXASCNO];
double **Dt_ipv[MAXASCNO];

// IPV
int **dbtsbvc[MAXASCNO];
int **ibtsbvc[MAXASCNO];
int **dbtslm[MAXASCNO];
int **ibtslm[MAXASCNO];
int Ninxcy,Npe,Ncyc;
short int mesh_alu_parallel,im_alu_parallel,iob_cm_parallel;
double **Dt_imib[MAXASCNO];
double **Dt_utib[MAXASCNO];
double **Dt_cmau[MAXASCNO];
double **Dt_lmio[MAXASCNO];
double **Dt_aluf[MAXASCNO];
double **Dt_aucm[MAXASCNO];
double **Dt_obut[MAXASCNO];
double **Dt_pe[MAXASCNO];

long int BW_cmbs;
double Pr_cmbs_fail,CMSR;
int Ncmwd;
long int BW_imib;
double Pr_imib_fail,IMIBSR;
long int BW_utib;
double Pr_utib_fail,UTIBSR;
long int BW_lmio;
double Pr_lmio_miss,LMHR;
long int BW_alu;
double Pr_alu_err,AUSR;

void OutputQuadruple(int, int, double, double);

void init_ctl_var();
//void get_ctl(double&);
//void get_ctl(long int&);
//void get_ctl(short int&);
//void get_ctl(int&);
//void get_fault(double&);

void Host(const char(*)[MAX_LENGTH_NAME],const int m);
double Bus(int);
void FPGA_Unit(int,int);
void FPGA_CLBs(int,int,int);
double CMxfer(int,int);
double IMIBxfer(int);
double UTIBxfer(int);
double ALU_LMIO(int);
double ALU_Fun(int);


#define FPGA 2

#define DTxasc 1
#define DTxhbu 2
#define DTunit 3
#define DTxubh 4
#define DTfpga 5
#define DTxasm 6
#define DTisio 7
#define DTioc  10
#define DTimib 11
#define DTutib 12
#define DTcmau 15
#define DTlmio 16
#define DTaluf 17
#define DTaucm 18
#define DTpe   19
#define DTobut 21
#define DTipv  22


