orca-sim
ProcessingTile.h
Go to the documentation of this file.
1 
22 #ifndef __ProcessingTile_H
23 #define __ProcessingTile_H
24 
25 //std API
26 #include <iostream>
27 
28 //model API
29 #include <THFRiscV.h>
30 #include <TDmaNetif.h>
31 #include <TRouter.h>
32 #include <UMemory.h>
33 #include <USignal.h>
34 
35 //arch specific
36 #include <Tile.h>
37 
38 //include peripheral addresses
39 #include <MemoryMap.h>
40 
41 /* MEMORY LAYOUT
42 ------------------- 0x40000000 <<-- code begin
43 
44  sram
45  (~4MB)
46 
47 ------------------- 0x40400000 <<-- stack
48  empty space
49 ------------------- 0x40410000 <<-- mmio begin
50 
51  mmio
52  (~FFFF)
53 
54 ------------------- 0x4041FFFF <<-- mmio end
55 
56 */
57 
58 //memory mapping
59 //#define MEM0_SIZE 0x0041FFFF /* main memory */
60 //#define MEM0_BASE 0x40000000
61 //
62 #define MEM0_SIZE ORCA_MEMORY_SIZE
63 #define MEM0_BASE ORCA_MEMORY_BASE
64 
73 class ProcessingTile : private Tile{
74 
75 private:
76 
77  DmaNetif* _netif;
78  HFRiscV* _cpu; //hfrisv-core
79 
80  //main memory
81  Memory* _mem0;
82  Memory* _mem1;
83  Memory* _mem2;
84 
85  //NOTE: other hardware is defined in Tile.h as
86  //we use inheritance to derive multiple tiles
87  //with similar architecture.
88 
89  //hosttime magic wire
90  uint32_t _shosttime;
91  Signal<uint32_t>* _signal_hosttime;
92 
93  Signal<uint8_t>* _signal_stall;
94  Signal<uint8_t>* _signal_intr;
95  Signal<uint8_t>* _signal_send_status;
96  Signal<uint32_t>* _signal_recv_status;
97  Signal<uint32_t>* _signal_prog_addr;
98  Signal<uint32_t>* _signal_prog_size;
99  Signal<uint8_t>* _signal_prog_send;
100  Signal<uint8_t>* _signal_prog_recv;
101 
102 public:
103 
104  ProcessingTile(uint32_t x, uint32_t y);
105  ~ProcessingTile();
106 
107  DmaNetif* GetDmaNetif();
108 
109  Memory* GetMem1();
110  Memory* GetMem2();
111 
112  //getters
113  Signal<uint8_t>* GetSignalStall();
114  Signal<uint8_t>* GetSignalIntr();
115  Signal<uint8_t>* GetSignalSendStatus();
116  Signal<uint32_t>* GetSignalRecvStatus();
117  Signal<uint32_t>* GetSignalProgAddr();
118  Signal<uint32_t>* GetSignalProgSize();
119  Signal<uint8_t>* GetSignalProgSend();
120  Signal<uint8_t>* GetSignalProgRecv();
121 
122  //setters
123  void SetSignalStall(Signal<uint8_t>*);
124  void SetSignalIntr(Signal<uint8_t>*);
125  void SetSignalSendStatus(Signal<uint8_t>*);
126  void SetSignalRecvStatus(Signal<uint32_t>*);
127  void SetSignalProgAddr(Signal<uint32_t>*);
128  void SetSignalProgSize(Signal<uint32_t>*);
129  void SetSignalProgSend(Signal<uint8_t>*);
130  void SetSignalProgRecv(Signal<uint8_t>*);
131 
132  //getters
133  HFRiscV* GetCpu();
134  Memory* GetMem0();
135 
136  //getters for mems
137  void SetMem0(Memory*);
138 
139  Signal<uint32_t>* GetSignalHostTime();
140 
141  std::string ToString();
142 };
143 
144 
145 #endif /* TROUTER_H */
Signal< uint8_t > * GetSignalIntr()
void SetSignalProgSize(Signal< uint32_t > *)
Signal< uint8_t > * _signal_prog_send
Memory * GetMem2()
Get recv memory module.
uint32_t _shosttime
Signal< uint8_t > * GetSignalSendStatus()
Signal< uint8_t > * _signal_send_status
void SetSignalProgAddr(Signal< uint32_t > *)
Signal< uint8_t > * _signal_intr
Signal< uint32_t > * _signal_hosttime
Signal< uint8_t > * GetSignalStall()
ProcessingTile()
This file is part of project URSA.
Memory * GetMem1()
Get sender memory module.
void SetSignalProgSend(Signal< uint8_t > *)
Signal< uint32_t > * GetSignalProgSize()
void SetSignalProgRecv(Signal< uint8_t > *)
Signal< uint32_t > * _signal_prog_size
void SetSignalSendStatus(Signal< uint8_t > *)
void SetSignalRecvStatus(Signal< uint32_t > *)
HFRiscV * _cpu
void SetMem0(Memory *)
Definition: Tile.h:44
void SetSignalIntr(Signal< uint8_t > *)
Signal< uint32_t > * GetSignalHostTime()
Get current signal for systime signal.
Signal< uint8_t > * GetSignalProgRecv()
Signal< uint8_t > * GetSignalProgSend()
Signal< uint8_t > * _signal_prog_recv
Signal< uint8_t > * _signal_stall
Memory * GetMem0()
HFRiscV * GetCpu()
DmaNetif * _netif
Signal< uint32_t > * GetSignalProgAddr()
void SetSignalStall(Signal< uint8_t > *)
std::string ToString()
Signal< uint32_t > * _signal_prog_addr
DmaNetif * GetDmaNetif()
Get current NI module.
Signal< uint32_t > * GetSignalRecvStatus()
Signal< uint32_t > * _signal_recv_status