OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_c/] [synfull/] [pronoc-interface/] [includes/] [dpi_interface.hpp] - Rev 54

Compare with Previous | Blame | View Log

#ifndef _DPI_INTERFACE_HPP_
#define _DPI_INTERFACE_HPP_
 
#include <queue>
#include "svdpi.h"
#include "socketstream.h"
#include "messages.h"
 
#define NE 4*4*2
 
//***************************************************************************
// DPI-C interface
//***************************************************************************
 
extern "C" void c_epi_interface ( 
        svLogic startCom, svLogic getData, svLogic ejectReq,  svLogic queueReq,
        svLogic *endCom, svLogic *newReq, 
        svBitVec32 source_all[NE], svBitVec32 destination_all[NE], 
        svBitVec32 address_all[NE], svBitVec32 opcode_all[NE], 
        svBitVec32 id_all[NE], svBitVec32 valid_all[NE],
        svBitVec32 rtrn_pkgid_all[NE]       ,
        svBitVec32 rtrn_valid_all[NE]       ,       
        svBitVec32 NEready_all[NE], svBitVec32 size_all[NE]            
        );
 
extern "C" void connection_init ( 
        svLogic startCom, svLogic *ready
        );
 
//***************************************************************************
// Connection manager class
//***************************************************************************
struct ReplyPacket {
	int source;
	int dest;
	int id;
	int network;
	int cl;
	int miss_pred;
};
 
struct RequestPacket {
	int source;
	int dest;
	int id;
	int size;
	int network;
	int cl;
	int miss_pred;
};
 
 
class connection_manager {
    private:
 
	    //SocketStream *_channel;
	    SocketStream _listenSocket;
 
        int _sources;
        int _dests;
        int _duplicate_networks;
 
 
 
    public:
        connection_manager();
        int Init();
        int Step();
        int readMsg();
        int sendResMsg();
        int sendAckMsg();
        int sendAckReqMsg();
 
        int checkInjection();
 
        int getSynfullEndPoint(int node);
        int getPronocEndPoint(int node);
        int getMsgType(int opcode);
        int getChiOpc(int opcode, int type);
 
        ReplyPacket *DequeueReplyPacket();
        int printResMsg(EjectResMsg res); 
        int printReqMsg(InjectReqMsg *req);
 
 
};
 
SocketStream *_channel;
 
connection_manager *_connection_manager ;
 
//socket communication
StreamMessage *_msg ;
InjectReqMsg  *_req ;
InjectReqMsg  *_req_tmp ;
 
EjectResMsg  _res    ;
StepResMsg   _ackRes ;
InjectResMsg _ackReq ; 
 
queue<EjectResMsg> _eject_buffer;
queue<InjectReqMsg*> _inject_buffer;
 
//tmp
RequestPacket *rp;
svLogic _newInjection;
 
#endif
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.