orca-sim
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ProcessingTile Class Reference

#include <ProcessingTile.h>

Inheritance diagram for ProcessingTile:
Tile

Public Member Functions

 ProcessingTile (uint32_t x, uint32_t y)
 This file is part of project URSA. More...
 
 ~ProcessingTile ()
 
DmaNetif * GetDmaNetif ()
 Get current NI module. More...
 
Memory * GetMem1 ()
 Get sender memory module. More...
 
Memory * GetMem2 ()
 Get recv memory module. More...
 
Signal< uint8_t > * GetSignalStall ()
 
Signal< uint8_t > * GetSignalIntr ()
 
Signal< uint8_t > * GetSignalSendStatus ()
 
Signal< uint32_t > * GetSignalRecvStatus ()
 
Signal< uint32_t > * GetSignalProgAddr ()
 
Signal< uint32_t > * GetSignalProgSize ()
 
Signal< uint8_t > * GetSignalProgSend ()
 
Signal< uint8_t > * GetSignalProgRecv ()
 
void SetSignalStall (Signal< uint8_t > *)
 
void SetSignalIntr (Signal< uint8_t > *)
 
void SetSignalSendStatus (Signal< uint8_t > *)
 
void SetSignalRecvStatus (Signal< uint32_t > *)
 
void SetSignalProgAddr (Signal< uint32_t > *)
 
void SetSignalProgSize (Signal< uint32_t > *)
 
void SetSignalProgSend (Signal< uint8_t > *)
 
void SetSignalProgRecv (Signal< uint8_t > *)
 
HFRiscV * GetCpu ()
 
Memory * GetMem0 ()
 
void SetMem0 (Memory *)
 
Signal< uint32_t > * GetSignalHostTime ()
 Get current signal for systime signal. More...
 
std::string ToString ()
 
 ProcessingTile ()
 This file is part of project URSA. More...
 
 ~ProcessingTile ()
 
Signal< uint8_t > * GetSignalStall ()
 
Signal< uint8_t > * GetSignalDmaProg ()
 
Signal< uint8_t > * GetSignalIntr ()
 
Memory * GetMem0 ()
 
HFRiscV * GetCpu ()
 getters for the scheduler More...
 
TDmaMultGetDma ()
 
Signal< uint32_t > * GetSignalHostTime ()
 Get current signal for systime signal. More...
 
std::string ToString ()
 
std::string GetName ()
 
void Reset ()
 

Private Member Functions

HermesRouter * GetRouter ()
 Get current router of the PE. More...
 
Signal< uint32_t > * GetSignalId ()
 Get current signal for tile ID. More...
 
void SetName (std::string)
 Set a name to this tile. More...
 

Private Attributes

DmaNetif * _netif
 
HFRiscV * _cpu
 
Memory * _mem0
 
Memory * _mem1
 
Memory * _mem2
 
uint32_t _shosttime
 
Signal< uint32_t > * _signal_hosttime
 
Signal< uint8_t > * _signal_stall
 
Signal< uint8_t > * _signal_intr
 
Signal< uint8_t > * _signal_send_status
 
Signal< uint32_t > * _signal_recv_status
 
Signal< uint32_t > * _signal_prog_addr
 
Signal< uint32_t > * _signal_prog_size
 
Signal< uint8_t > * _signal_prog_send
 
Signal< uint8_t > * _signal_prog_recv
 
TDmaMult_dma
 
Signal< uint8_t > * _sig_stall
 
Signal< uint8_t > * _sig_dma_prog
 
Signal< uint8_t > * _sig_intr
 
Signal< uint32_t > * _sig_burst_size
 
Signal< uint32_t > * _sig_nn_size
 
Signal< uint32_t > * _sig_out_size
 

Detailed Description

Author
Anderson Domingues
Date
10/04/18
Author
Alexandre Amory
Date
01/04/20

Definition at line 73 of file ProcessingTile.h.

Constructor & Destructor Documentation

§ ProcessingTile() [1/2]

ProcessingTile::ProcessingTile ( uint32_t  x,
uint32_t  y 
)

This file is part of project URSA.

More information on the project can be found at URSA's repository at GitHub

http://https://github.com/andersondomingues/ursa

Copyright (C) 2018 Anderson Domingues, ti.an.nosp@m.ders.nosp@m.ondom.nosp@m.ingu.nosp@m.es@gm.nosp@m.ail..nosp@m.com

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Default constructor. Instantiate and bind internal hardware to each other.

Definition at line 37 of file ProcessingTile.cpp.

37  : Tile(x, y) {
38 
39  //ni sig wires
40  _signal_stall = new Signal<uint8_t>(this->GetName() + ".stall");
41  _signal_intr = new Signal<uint8_t>(this->GetName() + ".intr");
42  _signal_send_status = new Signal<uint8_t>(this->GetName() + ".send_status");
43  _signal_recv_status = new Signal<uint32_t>(this->GetName() + ".recv_status");
44  _signal_prog_send = new Signal<uint8_t>(this->GetName() + ".progr_send");
45  _signal_prog_recv = new Signal<uint8_t>(this->GetName() + ".progr_recv");
46  _signal_prog_addr = new Signal<uint32_t>(this->GetName() + ".progr_addr");
47  _signal_prog_size = new Signal<uint32_t>(this->GetName() + ".progr_size");
48 
49  //create a cpu and memory in addition to current tile hardware
50  _mem0 = new Memory(this->GetName() + ".mem0", MEM0_SIZE, MEM0_BASE); //main
51  _cpu = new HFRiscV(this->GetName() + ".cpu", _signal_intr, _signal_stall, _mem0);
52  _netif = new DmaNetif (this->GetName() + ".netif");
53 
54  //binds netif to mem
55  _netif->SetMem0(_mem0);
56 
57  //bind control signals to hardware (netif side)
58  _netif->SetSignalStall(_signal_stall);
59  _netif->SetSignalIntr(_signal_intr);
60  _netif->SetSignalSendStatus(_signal_send_status);
61  _netif->SetSignalRecvStatus(_signal_recv_status);
62  _netif->SetSignalProgSend(_signal_prog_send);
63  _netif->SetSignalProgRecv(_signal_prog_recv);
64  _netif->SetSignalProgAddr(_signal_prog_addr);
65  _netif->SetSignalProgSize(_signal_prog_size);
66 
67  //bind netif to router
68  this->GetRouter()->SetOutputBuffer(_netif->GetInputBuffer(), LOCAL);
69  _netif->SetOutputBuffer(this->GetRouter()->GetInputBuffer(LOCAL));
70 
71  //create new memories for the NI
72  _mem1 = new Memory(this->GetName() + ".mem1", MEM1_SIZE, 0); //read from noc
73  _mem2 = new Memory(this->GetName() + ".mem2", MEM2_SIZE, 0); //write to noc
74 
75  //bind memories
76  _netif->SetMem1(_mem1);
77  _netif->SetMem2(_mem2);
78 
79  //bind self-id wire (care to save the value before the bind)
80  this->GetSignalId()->MapTo(_mem0->GetMap(MAGIC_TILE_ID), MAGIC_TILE_ID);
81 
82  //update naming of internal hardware parts (from internal class)
83  this->GetRouter()->SetName(this->GetName() + ".router");
84  this->GetDmaNetif()->SetName(this->GetName() + ".netif");
85  this->GetMem1()->SetName(this->GetName() + ".mem1");
86  this->GetMem2()->SetName(this->GetName() + ".mem2");
87 
88  //bind control signals to hardware (cpu side)
89  this->GetSignalStall()->MapTo(_mem0->GetMap(SIGNAL_CPU_STALL), SIGNAL_CPU_STALL);
90  this->GetSignalIntr()->MapTo(_mem0->GetMap(SIGNAL_CPU_INTR), SIGNAL_CPU_INTR);
93 
94  this->GetSignalProgSend()->MapTo(_mem0->GetMap(SIGNAL_PROG_SEND), SIGNAL_PROG_SEND);
95  this->GetSignalProgRecv()->MapTo(_mem0->GetMap(SIGNAL_PROG_RECV), SIGNAL_PROG_RECV);
96 
97  this->GetSignalProgAddr()->MapTo(_mem0->GetMap(SIGNAL_PROG_ADDR), SIGNAL_PROG_ADDR);
98  this->GetSignalProgSize()->MapTo(_mem0->GetMap(SIGNAL_PROG_SIZE), SIGNAL_PROG_SIZE);
99 
100  //reset control wires
101  _signal_stall->Write(0);
102  _signal_intr->Write(0);
103 
104  _signal_send_status->Write(0);
105  _signal_recv_status->Write(0);
106  _signal_prog_send->Write(0);
107  _signal_prog_recv->Write(0);
108  _signal_prog_addr->Write(0);
109  _signal_prog_size->Write(0);
110 
111  #ifdef MEMORY_ENABLE_COUNTERS
112  //map main memory counter
113  _mem0->GetSignalCounterStore()->MapTo(_mem0->GetMap(M0_COUNTER_STORE_ADDR), M0_COUNTER_STORE_ADDR);
114  _mem0->GetSignalCounterLoad()->MapTo(_mem0->GetMap(M0_COUNTER_LOAD_ADDR), M0_COUNTER_LOAD_ADDR);
115 
116  //map secondary memory counters
117  _mem1->GetSignalCounterStore()->MapTo(_mem0->GetMap(M1_COUNTER_STORE_ADDR), M1_COUNTER_STORE_ADDR);
118  _mem1->GetSignalCounterLoad()->MapTo(_mem0->GetMap(M1_COUNTER_LOAD_ADDR), M1_COUNTER_LOAD_ADDR);
119  _mem2->GetSignalCounterStore()->MapTo(_mem0->GetMap(M2_COUNTER_STORE_ADDR), M2_COUNTER_STORE_ADDR);
120  _mem2->GetSignalCounterLoad()->MapTo(_mem0->GetMap(M2_COUNTER_LOAD_ADDR), M2_COUNTER_LOAD_ADDR);
121  #endif
122 
123  #ifdef ROUTER_ENABLE_COUNTERS
124  GetRouter()->GetSignalCounterActive()->MapTo(_mem0->GetMap(ROUTER_COUNTER_ACTIVE_ADDR), ROUTER_COUNTER_ACTIVE_ADDR);
125  #endif
126 
127  //----------------- initialize counters for the cpu
128  #ifdef HFRISCV_ENABLE_COUNTERS
129  _cpu->GetSignalCounterArith()->MapTo(_mem0->GetMap(CPU_COUNTER_ARITH_ADDR), CPU_COUNTER_ARITH_ADDR);
130  _cpu->GetSignalCounterLogical()->MapTo(_mem0->GetMap(CPU_COUNTER_LOGICAL_ADDR), CPU_COUNTER_LOGICAL_ADDR);
131  _cpu->GetSignalCounterShift()->MapTo(_mem0->GetMap(CPU_COUNTER_SHIFT_ADDR), CPU_COUNTER_SHIFT_ADDR);
132  _cpu->GetSignalCounterBranches()->MapTo(_mem0->GetMap(CPU_COUNTER_BRANCHES_ADDR), CPU_COUNTER_BRANCHES_ADDR);
133  _cpu->GetSignalCounterJumps()->MapTo(_mem0->GetMap(CPU_COUNTER_JUMPS_ADDR), CPU_COUNTER_JUMPS_ADDR);
134  _cpu->GetSignalCounterLoadStore()->MapTo(_mem0->GetMap(CPU_COUNTER_LOADSTORE_ADDR), CPU_COUNTER_LOADSTORE_ADDR);
135  _cpu->GetSignalCounterCyclesTotal()->MapTo(_mem0->GetMap(CPU_COUNTER_CYCLES_TOTAL_ADDR), CPU_COUNTER_CYCLES_TOTAL_ADDR);
136  _cpu->GetSignalCounterCyclesStall()->MapTo(_mem0->GetMap(CPU_COUNTER_CYCLES_STALL_ADDR), CPU_COUNTER_CYCLES_STALL_ADDR);
137  _cpu->GetSignalHostTime()->MapTo(_mem0->GetMap(CPU_COUNTER_HOSTTIME_ADDR), CPU_COUNTER_HOSTTIME_ADDR);
138  #endif
139 }
#define MEM0_BASE
Signal< uint8_t > * GetSignalIntr()
#define MAGIC_TILE_ID
Definition: _MemoryMap.h:28
#define SIGNAL_PROG_RECV
Definition: _MemoryMap.h:21
void MapTo(bool keep_val=true)
Maps current Signal to the internal storage.
Definition: Signal.cpp:79
#define MEM0_SIZE
This file is part of project URSA.
Signal< uint8_t > * _signal_prog_send
Memory * GetMem2()
Get recv memory module.
#define SIGNAL_PROG_SEND
Definition: _MemoryMap.h:20
#define SIGNAL_PROG_ADDR
Definition: _MemoryMap.h:24
Signal< uint8_t > * GetSignalSendStatus()
Signal< uint8_t > * _signal_send_status
Signal< uint8_t > * _signal_intr
#define SIGNAL_CPU_STALL
Definition: _MemoryMap.h:12
Signal< uint8_t > * GetSignalStall()
#define SIGNAL_SEND_STATUS
Definition: _MemoryMap.h:14
std::string GetName()
Memory * GetMem1()
Get sender memory module.
#define MEM1_SIZE
This file is part of project URSA.
Definition: Tile.h:38
#define MEM2_SIZE
Definition: Tile.h:41
#define LOCAL
Signal< uint32_t > * GetSignalProgSize()
void Write(T val)
Writes some value to the bus.
Definition: Signal.cpp:127
Signal< uint32_t > * _signal_prog_size
HermesRouter * GetRouter()
Get current router of the PE.
Definition: Tile.cpp:83
#define SIGNAL_PROG_SIZE
Definition: _MemoryMap.h:25
HFRiscV * _cpu
Signal< uint32_t > * GetSignalId()
Get current signal for tile ID.
Definition: Tile.cpp:100
Signal< uint8_t > * GetSignalProgRecv()
Signal< uint8_t > * GetSignalProgSend()
Signal< uint8_t > * _signal_prog_recv
Signal< uint8_t > * _signal_stall
DmaNetif * _netif
#define SIGNAL_RECV_STATUS
Definition: _MemoryMap.h:16
Signal< uint32_t > * GetSignalProgAddr()
Signal< uint32_t > * _signal_prog_addr
DmaNetif * GetDmaNetif()
Get current NI module.
Signal< uint32_t > * GetSignalRecvStatus()
Signal< uint32_t > * _signal_recv_status
Tile(uint32_t x, uint32_t y)
This file is part of project URSA.
Definition: Tile.cpp:38
#define SIGNAL_CPU_INTR
Definition: _MemoryMap.h:13

§ ~ProcessingTile() [1/2]

ProcessingTile::~ProcessingTile ( )

Definition at line 141 of file ProcessingTile.cpp.

141  {
142 
143  delete(_cpu);
144  delete(_mem0);
145 
146  delete(_netif);
147  delete(_mem1);
148  delete(_mem2);
149 
150  //delete signals
151  delete(_signal_stall);
152  delete(_signal_intr);
153  delete(_signal_send_status);
154  delete(_signal_recv_status);
155  delete(_signal_prog_send);
156  delete(_signal_prog_recv);
157  delete(_signal_prog_addr);
158  delete(_signal_prog_size);
159 }
Signal< uint8_t > * _signal_prog_send
Signal< uint8_t > * _signal_send_status
Signal< uint8_t > * _signal_intr
Signal< uint32_t > * _signal_prog_size
HFRiscV * _cpu
Signal< uint8_t > * _signal_prog_recv
Signal< uint8_t > * _signal_stall
DmaNetif * _netif
Signal< uint32_t > * _signal_prog_addr
Signal< uint32_t > * _signal_recv_status

§ ProcessingTile() [2/2]

ProcessingTile::ProcessingTile ( )

This file is part of project URSA.

More information on the project can be found at URSA's repository at GitHub

http://https://github.com/andersondomingues/ursa

Copyright (C) 2018 Anderson Domingues, ti.an.nosp@m.ders.nosp@m.ondom.nosp@m.ingu.nosp@m.es@gm.nosp@m.ail..nosp@m.com

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Default constructor. Instantiate and bind internal hardware to each other.

Definition at line 32 of file ProcessingTile.cpp.

32  {
33  //DMA control signals
34  _sig_stall = new Signal<uint8_t>(SIGNAL_CPU_STALL, this->GetName() + ".stall");
35  _sig_dma_prog = new Signal<uint8_t>(SIGNAL_DMA_PROG, this->GetName() + ".dma_prog");
36  // dummy signal required by the cpu
37  _sig_intr = new Signal<uint8_t>(SIGNAL_CPU_INTR, this->GetName() + ".intr");
38 
39  //DMA data signals
40  _sig_burst_size = new Signal<uint32_t>(DMA_BURST_SIZE, this->GetName() + ".burst_size");
41  _sig_nn_size = new Signal<uint32_t>(DMA_NN_SIZE, this->GetName() + ".weight_mem_addr");
42  _sig_out_size = new Signal<uint32_t>(DMA_OUT_SIZE, this->GetName() + ".input_mem_addr");
43 
44  //create a cpu and memory in addition to current tile hardware
45  _mem0 = new Memory(this->GetName() + ".mem0", MEM0_SIZE, MEM0_BASE); //main
46  _cpu = new HFRiscV(this->GetName() + ".cpu", _sig_intr, _sig_stall, _mem0);
47 
48  // configurable DMA controller which is able to feed multiple MACs in parallel
49  _dma = new TDmaMult(this->GetName() + ".dma_mult", _sig_stall, _sig_dma_prog, _sig_burst_size,
50  _sig_nn_size, _sig_out_size, DMA_MAC_OUT_ARRAY, _mem0);
51 
52  //bind control signals to hardware (cpu side)
53  _sig_stall->MapTo(_mem0->GetMap(SIGNAL_CPU_STALL), SIGNAL_CPU_STALL);
54  _sig_dma_prog->MapTo(_mem0->GetMap(SIGNAL_DMA_PROG), SIGNAL_DMA_PROG);
55  _sig_intr->MapTo(_mem0->GetMap(SIGNAL_CPU_INTR), SIGNAL_CPU_INTR);
56 
57  _sig_burst_size->MapTo(_mem0->GetMap(DMA_BURST_SIZE), DMA_BURST_SIZE);
58  _sig_nn_size->MapTo(_mem0->GetMap(DMA_NN_SIZE), DMA_NN_SIZE);
59  _sig_out_size->MapTo(_mem0->GetMap(DMA_OUT_SIZE), DMA_OUT_SIZE);
60 
61  #ifdef MEMORY_ENABLE_COUNTERS
62  //map memory counters to memory space
63  _mem0->GetSignalCounterStore()->MapTo(_mem0->GetMap(M0_COUNTER_STORE_ADDR), M0_COUNTER_STORE_ADDR);
64  _mem0->GetSignalCounterLoad()->MapTo(_mem0->GetMap(M0_COUNTER_LOAD_ADDR), M0_COUNTER_LOAD_ADDR);
65  #endif
66 
67  #ifdef HFRISCV_ENABLE_COUNTERS
68  //map cpu counters to memory space
69  _cpu->GetSignalCounterArith()->MapTo(_mem0->GetMap(CPU_COUNTER_ARITH_ADDR), CPU_COUNTER_ARITH_ADDR);
70  _cpu->GetSignalCounterLogical()->MapTo(_mem0->GetMap(CPU_COUNTER_LOGICAL_ADDR), CPU_COUNTER_LOGICAL_ADDR);
71  _cpu->GetSignalCounterShift()->MapTo(_mem0->GetMap(CPU_COUNTER_SHIFT_ADDR), CPU_COUNTER_SHIFT_ADDR);
72  _cpu->GetSignalCounterBranches()->MapTo(_mem0->GetMap(CPU_COUNTER_BRANCHES_ADDR), CPU_COUNTER_BRANCHES_ADDR);
73  _cpu->GetSignalCounterJumps()->MapTo(_mem0->GetMap(CPU_COUNTER_JUMPS_ADDR), CPU_COUNTER_JUMPS_ADDR);
74  _cpu->GetSignalCounterLoadStore()->MapTo(_mem0->GetMap(CPU_COUNTER_LOADSTORE_ADDR), CPU_COUNTER_LOADSTORE_ADDR);
75  _cpu->GetSignalCounterCyclesTotal()->MapTo(_mem0->GetMap(CPU_COUNTER_CYCLES_TOTAL_ADDR), CPU_COUNTER_CYCLES_TOTAL_ADDR);
76  _cpu->GetSignalCounterCyclesStall()->MapTo(_mem0->GetMap(CPU_COUNTER_CYCLES_STALL_ADDR), CPU_COUNTER_CYCLES_STALL_ADDR);
77  _cpu->GetSignalHostTime()->MapTo(_mem0->GetMap(CPU_COUNTER_HOSTTIME_ADDR), CPU_COUNTER_HOSTTIME_ADDR);
78  #endif
79 
80  this->Reset();
81 }
#define MEM0_BASE
void MapTo(bool keep_val=true)
Maps current Signal to the internal storage.
Definition: Signal.cpp:79
#define DMA_OUT_SIZE
Definition: _MemoryMap.h:44
#define MEM0_SIZE
This file is part of project URSA.
#define SIGNAL_CPU_STALL
Definition: _MemoryMap.h:12
Signal< uint8_t > * _sig_dma_prog
std::string GetName()
Signal< uint32_t > * _sig_burst_size
#define DMA_BURST_SIZE
Definition: _MemoryMap.h:42
#define DMA_MAC_OUT_ARRAY
Definition: _MemoryMap.h:45
HFRiscV * _cpu
#define DMA_NN_SIZE
Definition: _MemoryMap.h:43
Signal< uint32_t > * _sig_out_size
Signal< uint8_t > * _sig_intr
Signal< uint8_t > * _sig_stall
Signal< uint32_t > * _sig_nn_size
#define SIGNAL_DMA_PROG
Definition: _MemoryMap.h:31
#define SIGNAL_CPU_INTR
Definition: _MemoryMap.h:13

§ ~ProcessingTile() [2/2]

ProcessingTile::~ProcessingTile ( )

Member Function Documentation

§ GetCpu() [1/2]

HFRiscV * ProcessingTile::GetCpu ( )

Definition at line 161 of file ProcessingTile.cpp.

161  {
162  return _cpu;
163 }
HFRiscV * _cpu

§ GetCpu() [2/2]

HFRiscV* ProcessingTile::GetCpu ( )

getters for the scheduler

§ GetDma()

TDmaMult * ProcessingTile::GetDma ( )

Definition at line 112 of file ProcessingTile.cpp.

112  {
113  return _dma;
114 }

§ GetDmaNetif()

DmaNetif * ProcessingTile::GetDmaNetif ( )

Get current NI module.

Returns
A pointer to the instance of NI

Definition at line 170 of file ProcessingTile.cpp.

170  {
171  return _netif;
172 }
DmaNetif * _netif

§ GetMem0() [1/2]

Memory * ProcessingTile::GetMem0 ( )

Definition at line 211 of file ProcessingTile.cpp.

211  {
212  return _mem0;
213 }

§ GetMem0() [2/2]

Memory* ProcessingTile::GetMem0 ( )

§ GetMem1()

Memory * ProcessingTile::GetMem1 ( )

Get sender memory module.

Returns
A pointer to the instance of memory

Definition at line 178 of file ProcessingTile.cpp.

178  {
179  return _mem1;
180 }

§ GetMem2()

Memory * ProcessingTile::GetMem2 ( )

Get recv memory module.

Returns
A pointer to the instance of memory

Definition at line 186 of file ProcessingTile.cpp.

186  {
187  return _mem2;
188 }

§ GetName()

std::string ProcessingTile::GetName ( )

Definition at line 134 of file ProcessingTile.cpp.

134  {
135  return "core!";
136 }

§ GetRouter()

HermesRouter * Tile::GetRouter ( )
inherited

Get current router of the PE.

Returns
A pointer to the instance of router

Definition at line 83 of file Tile.cpp.

83  {
84  return _router;
85 }
HermesRouter * _router
Definition: Tile.h:50

§ GetSignalDmaProg()

Signal< uint8_t > * ProcessingTile::GetSignalDmaProg ( )

Definition at line 118 of file ProcessingTile.cpp.

118 { return _sig_dma_prog; }
Signal< uint8_t > * _sig_dma_prog

§ GetSignalHostTime() [1/2]

Signal< uint32_t > * ProcessingTile::GetSignalHostTime ( )

Get current signal for systime signal.

Returns
A pointer to the instance of signal

Definition at line 207 of file ProcessingTile.cpp.

207  {
208  return _signal_hosttime;
209 }
Signal< uint32_t > * _signal_hosttime

§ GetSignalHostTime() [2/2]

Signal<uint32_t>* ProcessingTile::GetSignalHostTime ( )

Get current signal for systime signal.

Returns
A pointer to the instance of signal

§ GetSignalId()

Signal< uint32_t > * Tile::GetSignalId ( )
inherited

Get current signal for tile ID.

Returns
A pointer to the instance of signal

Definition at line 100 of file Tile.cpp.

100  {
101  return _signal_id;
102 }
Signal< uint32_t > * _signal_id
Definition: Tile.h:51

§ GetSignalIntr() [1/2]

Signal< uint8_t > * ProcessingTile::GetSignalIntr ( )

Definition at line 192 of file ProcessingTile.cpp.

192 { return _signal_intr; }
Signal< uint8_t > * _signal_intr

§ GetSignalIntr() [2/2]

Signal<uint8_t>* ProcessingTile::GetSignalIntr ( )

§ GetSignalProgAddr()

Signal< uint32_t > * ProcessingTile::GetSignalProgAddr ( )

Definition at line 200 of file ProcessingTile.cpp.

200 { return _signal_prog_addr; }
Signal< uint32_t > * _signal_prog_addr

§ GetSignalProgRecv()

Signal< uint8_t > * ProcessingTile::GetSignalProgRecv ( )

Definition at line 198 of file ProcessingTile.cpp.

198 { return _signal_prog_recv; }
Signal< uint8_t > * _signal_prog_recv

§ GetSignalProgSend()

Signal< uint8_t > * ProcessingTile::GetSignalProgSend ( )

Definition at line 197 of file ProcessingTile.cpp.

197 { return _signal_prog_send; }
Signal< uint8_t > * _signal_prog_send

§ GetSignalProgSize()

Signal< uint32_t > * ProcessingTile::GetSignalProgSize ( )

Definition at line 201 of file ProcessingTile.cpp.

201 { return _signal_prog_size; }
Signal< uint32_t > * _signal_prog_size

§ GetSignalRecvStatus()

Signal< uint32_t > * ProcessingTile::GetSignalRecvStatus ( )

Definition at line 195 of file ProcessingTile.cpp.

195 { return _signal_recv_status; }
Signal< uint32_t > * _signal_recv_status

§ GetSignalSendStatus()

Signal< uint8_t > * ProcessingTile::GetSignalSendStatus ( )

Definition at line 194 of file ProcessingTile.cpp.

194 { return _signal_send_status; }
Signal< uint8_t > * _signal_send_status

§ GetSignalStall() [1/2]

Signal< uint8_t > * ProcessingTile::GetSignalStall ( )

Definition at line 191 of file ProcessingTile.cpp.

191 { return _signal_stall; }
Signal< uint8_t > * _signal_stall

§ GetSignalStall() [2/2]

Signal<uint8_t>* ProcessingTile::GetSignalStall ( )

§ Reset()

void ProcessingTile::Reset ( )

Definition at line 97 of file ProcessingTile.cpp.

97  {
98  //reset control wires
99  _sig_stall->Write(0);
100  _sig_dma_prog ->Write(0);
101  _sig_intr->Write(0);
102 
103  //DMA data signals
105  _sig_nn_size->Write(0);
106  _sig_out_size->Write(0);
107 }
Signal< uint8_t > * _sig_dma_prog
Signal< uint32_t > * _sig_burst_size
void Write(T val)
Writes some value to the bus.
Definition: Signal.cpp:127
Signal< uint32_t > * _sig_out_size
Signal< uint8_t > * _sig_intr
Signal< uint8_t > * _sig_stall
Signal< uint32_t > * _sig_nn_size

§ SetMem0()

void ProcessingTile::SetMem0 ( Memory *  )

§ SetName()

void Tile::SetName ( std::string  name)
inherited

Set a name to this tile.

Parameters
nameName to be given to the tile. Please note that the name is autogenerated in accordance to the structure of the tile, so updating the name of the tile may not reflect on the naming of internal structures (to fix)

Definition at line 112 of file Tile.cpp.

112  {
113  _name = name;
114 }
std::string _name
Definition: Tile.h:48

§ SetSignalIntr()

void ProcessingTile::SetSignalIntr ( Signal< uint8_t > *  )

§ SetSignalProgAddr()

void ProcessingTile::SetSignalProgAddr ( Signal< uint32_t > *  )

§ SetSignalProgRecv()

void ProcessingTile::SetSignalProgRecv ( Signal< uint8_t > *  )

§ SetSignalProgSend()

void ProcessingTile::SetSignalProgSend ( Signal< uint8_t > *  )

§ SetSignalProgSize()

void ProcessingTile::SetSignalProgSize ( Signal< uint32_t > *  )

§ SetSignalRecvStatus()

void ProcessingTile::SetSignalRecvStatus ( Signal< uint32_t > *  )

§ SetSignalSendStatus()

void ProcessingTile::SetSignalSendStatus ( Signal< uint8_t > *  )

§ SetSignalStall()

void ProcessingTile::SetSignalStall ( Signal< uint8_t > *  )

§ ToString() [1/2]

std::string ProcessingTile::ToString ( )

Definition at line 215 of file ProcessingTile.cpp.

215  {
216  stringstream ss;
217  ss << this->GetName() << "={" << _cpu->GetName()
218  << ", " << this->GetRouter()->GetName()
219  << ", " << this->GetDmaNetif()->GetName() << "}";
220 
221  return ss.str();
222 }
std::string GetName()
HermesRouter * GetRouter()
Get current router of the PE.
Definition: Tile.cpp:83
HFRiscV * _cpu
DmaNetif * GetDmaNetif()
Get current NI module.

§ ToString() [2/2]

std::string ProcessingTile::ToString ( )

Member Data Documentation

§ _cpu

HFRiscV * ProcessingTile::_cpu
private

Definition at line 78 of file ProcessingTile.h.

§ _dma

TDmaMult* ProcessingTile::_dma
private

Definition at line 127 of file ProcessingTile.hpp.

§ _mem0

Memory * ProcessingTile::_mem0
private

Definition at line 81 of file ProcessingTile.h.

§ _mem1

Memory* ProcessingTile::_mem1
private

Definition at line 82 of file ProcessingTile.h.

§ _mem2

Memory* ProcessingTile::_mem2
private

Definition at line 83 of file ProcessingTile.h.

§ _netif

DmaNetif* ProcessingTile::_netif
private

Definition at line 77 of file ProcessingTile.h.

§ _shosttime

uint32_t ProcessingTile::_shosttime
private

Definition at line 90 of file ProcessingTile.h.

§ _sig_burst_size

Signal<uint32_t>* ProcessingTile::_sig_burst_size
private

Definition at line 146 of file ProcessingTile.hpp.

§ _sig_dma_prog

Signal<uint8_t>* ProcessingTile::_sig_dma_prog
private

Definition at line 138 of file ProcessingTile.hpp.

§ _sig_intr

Signal<uint8_t>* ProcessingTile::_sig_intr
private

Definition at line 142 of file ProcessingTile.hpp.

§ _sig_nn_size

Signal<uint32_t>* ProcessingTile::_sig_nn_size
private

Definition at line 151 of file ProcessingTile.hpp.

§ _sig_out_size

Signal<uint32_t>* ProcessingTile::_sig_out_size
private

Definition at line 154 of file ProcessingTile.hpp.

§ _sig_stall

Signal<uint8_t>* ProcessingTile::_sig_stall
private

Definition at line 135 of file ProcessingTile.hpp.

§ _signal_hosttime

Signal< uint32_t > * ProcessingTile::_signal_hosttime
private

Definition at line 91 of file ProcessingTile.h.

§ _signal_intr

Signal<uint8_t>* ProcessingTile::_signal_intr
private

Definition at line 94 of file ProcessingTile.h.

§ _signal_prog_addr

Signal<uint32_t>* ProcessingTile::_signal_prog_addr
private

Definition at line 97 of file ProcessingTile.h.

§ _signal_prog_recv

Signal<uint8_t>* ProcessingTile::_signal_prog_recv
private

Definition at line 100 of file ProcessingTile.h.

§ _signal_prog_send

Signal<uint8_t>* ProcessingTile::_signal_prog_send
private

Definition at line 99 of file ProcessingTile.h.

§ _signal_prog_size

Signal<uint32_t>* ProcessingTile::_signal_prog_size
private

Definition at line 98 of file ProcessingTile.h.

§ _signal_recv_status

Signal<uint32_t>* ProcessingTile::_signal_recv_status
private

Definition at line 96 of file ProcessingTile.h.

§ _signal_send_status

Signal<uint8_t>* ProcessingTile::_signal_send_status
private

Definition at line 95 of file ProcessingTile.h.

§ _signal_stall

Signal<uint8_t>* ProcessingTile::_signal_stall
private

Definition at line 93 of file ProcessingTile.h.


The documentation for this class was generated from the following files: