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] - Blame information for rev 54

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 54 alirezamon
#ifndef _DPI_INTERFACE_HPP_
2
#define _DPI_INTERFACE_HPP_
3
 
4
#include <queue>
5
#include "svdpi.h"
6
#include "socketstream.h"
7
#include "messages.h"
8
 
9
#define NE 4*4*2
10
 
11
//***************************************************************************
12
// DPI-C interface
13
//***************************************************************************
14
 
15
extern "C" void c_epi_interface (
16
        svLogic startCom, svLogic getData, svLogic ejectReq,  svLogic queueReq,
17
        svLogic *endCom, svLogic *newReq,
18
        svBitVec32 source_all[NE], svBitVec32 destination_all[NE],
19
        svBitVec32 address_all[NE], svBitVec32 opcode_all[NE],
20
        svBitVec32 id_all[NE], svBitVec32 valid_all[NE],
21
        svBitVec32 rtrn_pkgid_all[NE]       ,
22
        svBitVec32 rtrn_valid_all[NE]       ,
23
        svBitVec32 NEready_all[NE], svBitVec32 size_all[NE]
24
        );
25
 
26
extern "C" void connection_init (
27
        svLogic startCom, svLogic *ready
28
        );
29
 
30
//***************************************************************************
31
// Connection manager class
32
//***************************************************************************
33
struct ReplyPacket {
34
        int source;
35
        int dest;
36
        int id;
37
        int network;
38
        int cl;
39
        int miss_pred;
40
};
41
 
42
struct RequestPacket {
43
        int source;
44
        int dest;
45
        int id;
46
        int size;
47
        int network;
48
        int cl;
49
        int miss_pred;
50
};
51
 
52
 
53
class connection_manager {
54
    private:
55
 
56
            //SocketStream *_channel;
57
            SocketStream _listenSocket;
58
 
59
        int _sources;
60
        int _dests;
61
        int _duplicate_networks;
62
 
63
 
64
 
65
    public:
66
        connection_manager();
67
        int Init();
68
        int Step();
69
        int readMsg();
70
        int sendResMsg();
71
        int sendAckMsg();
72
        int sendAckReqMsg();
73
 
74
        int checkInjection();
75
 
76
        int getSynfullEndPoint(int node);
77
        int getPronocEndPoint(int node);
78
        int getMsgType(int opcode);
79
        int getChiOpc(int opcode, int type);
80
 
81
        ReplyPacket *DequeueReplyPacket();
82
        int printResMsg(EjectResMsg res);
83
        int printReqMsg(InjectReqMsg *req);
84
 
85
 
86
};
87
 
88
SocketStream *_channel;
89
 
90
connection_manager *_connection_manager ;
91
 
92
//socket communication
93
StreamMessage *_msg ;
94
InjectReqMsg  *_req ;
95
InjectReqMsg  *_req_tmp ;
96
 
97
EjectResMsg  _res    ;
98
StepResMsg   _ackRes ;
99
InjectResMsg _ackReq ;
100
 
101
queue<EjectResMsg> _eject_buffer;
102
queue<InjectReqMsg*> _inject_buffer;
103
 
104
//tmp
105
RequestPacket *rp;
106
svLogic _newInjection;
107
 
108
#endif
109
 

powered by: WebSVN 2.1.0

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