Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
scGridPoint.h
Go to the documentation of this file.
1 
5  /* @author János Végh (jvegh)
6  * @bug No known bugs.
7  */
8 
9 #ifndef scGridPoint_h
10 #define scGridPoint_h
11 
12 //#include <iomanip> // std::setfill, std::setw
13 //#include <systemc>
14 // "tlm.h"
15 //#include "tlm_utils/simple_initiator_socket.h"
16 //#include <cstring>
17 //#include "scIGPCB.h" //#include "scIGPfifo.h"
18 #include "scIGPMessage_if.h"
19 //#include "scLatchFIFO.h"
20 //#include "scGPMessagefifo.h"
21 //#include "scHThread.h" // Included by "scIGPMessage_if.h"
22 
23 // These macros are used for benchmarking
24 // The work storage variable are defined as member functions, at the end
25 // Reset is done in constructor; the sum is collected and may be read in destructor
26 // The work storage also usable in derived classes
27 #define MAKE_TIME_BENCHMARKING // uncomment to measure the time with benchmarking macros
28 #include "MacroTimeBenchmarking.h" // Must be after the define to have its effect
29 #define SC_MAKE_TIME_BENCHMARKING // uncomment to measure the time with benchmarking macros
30 #include "MacroScTimeBenchmarking.h" // Must be after the define to have its effect
31 
32 
33 #include "scGridEnumTypes.h" // Single bits related to operation
34 #include "scIGPMessage.h"
35 
36 class scProcessor;
37 class scIGPMessage;
38 class scClusterBus;
39 class scIGPCB;
40 class scSynapticConnect;
41 extern string sc_time_to_nsec_Get(const int d, const int w, sc_time T);
42 
43 // Define execution time measuring macros, per module
44 // Define this anyhow; if false no code is generated
45 
46 // Functions to find out which type of memory is addressed
47 bool IsMemory(ClusterAddress_t CA);
48 bool IsMemory0(ClusterAddress_t CA);
49 bool IsMemory1(ClusterAddress_t CA);
50 bool IsMemory2(ClusterAddress_t CA);
51 bool IsMemory3(ClusterAddress_t CA);
52 
127 class scGridPoint : public GridPoint
128  ,public scClusterBusSlave_if
129  ,public scIGPMessage_if
130 {
131  friend class scHThread; //friend class scAbstractNeurerConnection;
132  friend class scSynapticConnect;
133 public:
134  //Port declarations : scGridPoint status bits
136  msPort; // Port declarations
137 
138 // std::unique_ptr< scClusterBusMaster_blocking > bus_port;
139 // sc_port<scClusterBus_blocking_if*> bus_port;
140 
141  //Channel/Submodule* definitions
142  // TLM-2 socket, defaults to 32-bits wide, base protocol
143  // TLM-2 blocking transport method
144  //virtual
145 // void ICB_b_transport(const ClusterNeighbor Index, unsigned char* data, const int size );
146 
147  // Constructor declaration:
155  scGridPoint(sc_core::sc_module_name nm, // Just the SystemC name
156  scProcessor* Processor, // The present system is prepared for one processor only, but ...
157  const GridPoint GP
158  , bool StandAlone
159  );
160  ~scGridPoint();//{}
161  SC_HAS_PROCESS(scGridPoint); // We have the constructor in the .cpp file
162  // Group dealing with identification
163  // The physical ID and the corresponding mask cannot be changed
164 /* SC_GRIDPOINT_ID_TYPE
165  FETCHID_Get(void){ return msFETCHTHREADID;} ///< Get internal ID (sequence number) of the scGridPoint
166  SC_GRIDPOINT_ID_TYPE
167  EXECHID_Get(void){ return msEXECTHREADID;} ///< Get internal ID (sequence number) of the scGridPoint
168  */
173  void
174  AddDefaultAliasNames(void) ;
175  SC_GRIDPOINT_ID_TYPE
176  ID_Get(){return msID;}
177  SC_GRIDPOINT_MASK_TYPE
178  IDMask_Get(void){ return msMask.ID;}
179  // Directly HW-related functionality
180  string
181  Name_Get(void){ return string(name());}
182 
183  void
184  AddHThread(unsigned int H, scHThread* P)
185  { assert(P);
186  assert(H<MAX_HTHREADS);
187  mHThreads[H] = P;}
188  scHThread*
189  AllocateAHThread(void);
193  virtual void
194  CreateThreads(void);
195  void
196  Reset(void);
197 
198 
199  void
200  ResetForParent(scGridPoint* Parent);
201  bool
202  Deallocate(void);
203  void
204  RouteMessage(scIGPMessage* Message);
205  void
206  SendDirectMessageTo(scGridPoint* Target, scIGPMessage* Message);
207  scGridPoint*
208  Parent_Get(void) { return msParent;}
209  void
210  Parent_Set(scGridPoint *P) { msParent = P;}
211  // Implement the inter-gridpoint direct and inter-cluster bus communication
212  scIGPCB*
214  {
215  assert(!(index<cm_Head || index>=cm_Broadcast));
216  return msIGPCB[index];
217  }
218  scIGPCB*
219  msIGPCB[7]; // The Inter-scGridPoint facilities from (!) Head to NW
220  SC_WORD_TYPE
221  Register_Get(int R){ return HThreadExec_Get()->Register_Get(R);}
222  // direct Slave Interface; mainly for testing without the bus
223  bool
224  direct_read(int *data, unsigned int address);
225  bool
226  direct_write(int *data, unsigned int address);
227  bool
228  direct_read(scIGPMessage* M);
229  bool
230  direct_write(scIGPMessage* M);
231 
232  // Slave Interface, through the bus
233  ClusterBusStatus
234  read(int *data, unsigned int address){return CLUSTER_BUS_OK;}
235  ClusterBusStatus
236  write(int *data, unsigned int address){return CLUSTER_BUS_OK;}
237  ClusterBusStatus
238  read(scIGPMessage* M);
239  ClusterBusStatus
240  write(scIGPMessage* M);
241 
242  // State-bits-related functionality
243  void
244  AllocatedBit_Set(bool V=true);
245  bool
246  AllocatedBit_Get(void) { return msStatus.Allocated;}
247  void
248  PreAllocatedBit_Set(bool V=true);
249  bool // The GridPoints can have own preallocated GridPoints; must be administered both here and at Topology level
250  PreAllocatedBit_Get(void){ return msStatus.PreAllocated;}
251  void
252  DeniedBit_Set(bool P=true);
253  bool
254  DeniedBit_Get(void)
255  { return msStatus.Denied;}
256  bool
257  AvailableBit_Get(void)
258  { return msStatus.Available;}
259  void
260  MetaBit_Set(bool P=true);
261  bool
262  MetaBit_Get(void){ return msStatus.Meta;}
263  void
264  WaitBit_Set(bool P=true);
265  bool
266  WaitBit_Get(void){ return msStatus.Wait;}
267  bool
268  IsAvailable(void)
269  { return AvailableBit_Get();}
270  bool
271  IsAllocated(void) { return AllocatedBit_Get();}
272  bool
273  IsPreAllocated(void) { return PreAllocatedBit_Get();}
274  bool
275  IsDenied(void) { return DeniedBit_Get();}
276  bool
277  IsWaiting(void) { return msStatus.Wait;}
278  struct{
279  sc_core::sc_event
280  MakeFetch, FetchReady // These event signals the begin and end of the instruction fetch process
281  ,MakeExec, ExecReady // These event signals the begin and end of the instruction execute process
282  ,MakeSend, SendReady // These event signals the begin and end of the message sending process
283  ,TransportedToIGPCB // No dedicated method, just wait after sending the message
284  ,SIGNAL_StateBit
285  ,Msg_Reg_Received // The core received a register-type message
286  ,Msg_Qt_Received // The core received a QT-type message
287  ,Msg_Mem_Received // The core received a memory-type message
288  ;
289  }EVENT_GRID; //< These events are handled at gridpoint level
291 // ,NEXT // The required action is carrried ot, may take the next one
292 
293  string
295  {
296  ostringstream oss;
297  oss << "0x" << hex << std::setfill('0') << std::setw((FMEMORY_ADDRESS_WIDTH+3)/4) << msMemoryAddress << dec;
298  return oss.str();
299  }
300  // Return a hexa word dscribing the status
301  string
302  StringOfMessage_Get(scIGPMessage* Message);
303 
304  string
305  StringOfStatus_Get(void)
306  {
307  ostringstream oss;
308  oss << "0x" << hex << std::setfill('0') << std::setw(4) << mStatus << dec;
309  return oss.str();
310  }
315  string
321  void
322  SIGNAL_method(void);
323  void
324  doWriteSignals(void);
325  SC_GRIDPOINT_MASK_TYPE
326  PreAllocatedMask_Get(void);
327  bool
328  PreAllocatedMask_Set(SC_GRIDPOINT_MASK_TYPE Mask);
329  virtual void
330  ProcessMessage(scIGPMessage* Message);
331 
332  void
333  ChildrenMaskBit_Set(scGridPoint* C);
334  void
335  ChildrenMaskBit_Clear( scGridPoint* C);
336  SC_GRIDPOINT_MASK_TYPE
337  ChildrenMask_Get(void) { return msMask.Children;}
338  void
339  ChildrenMask_Set(SC_GRIDPOINT_MASK_TYPE M) { msMask.Children = M;}
340 
341  SC_HTHREAD_MASK_TYPE
342  HThreadsMask_Get(void){SC_HTHREAD_MASK_TYPE MyMask =(int16_t)(msMask.AllocatedHThreads).to_ulong();
343  return MyMask;}
344 
345  void
346  PreAllocatedMaskBit_Set(scGridPoint* C, bool V=true);
347  bool
348  IsPreAllocatedFor(scGridPoint* C);
349  virtual bool
350  IsMorphingInstructionFetched(scHThread* H){return true;}
351  // Bits directly handling signals
352  uint32_t readDataMem(uint32_t addr, int size);
353  void
354  HandleSuspending(void);
360  scHThread*
361  HThread_Get(SC_HTHREAD_ID_TYPE H)
362  { assert((H>=0) && (H<MAX_HTHREADS));
363  return mHThreads[H];}
364 /* void
365  HThread_Set(SC_HTHREAD_ID_TYPE H){ assert((H>=0) && (H<MAX_HTHREADS)); mHThread = mHThreads[H];}/// Set the actual HThread
366 */
367  scHThread*
368  HThreadExec_Get(void) { //assert(mHThreadExec);
369  return mHThreadExec;}
370  scHThread*
371  HThreadFetch_Get(void) { //assert(mHThreadFetch);
372  return mHThreadFetch;}
373  scHThread*
374  HThreadSend_Get(void) { //assert(mHThreadFetch);
375  return mHThreadSend;}
376  scHThread*
377  HThreadReceive_Get(void) { //assert(mHThreadFetch);
378  return mHThreadReceive;}
379  void
380  HThreadExec_Set(scHThread* H){mHThreadExec = H; }
381  void
382  HThreadFetch_Set(scHThread* H){mHThreadFetch = H; }
383  void
384  HThreadSend_Set(scHThread* H){mHThreadSend = H; }
385  void
386  HThreadReceive_Set(scHThread* H){mHThreadReceive = H; }
392  void
393  CooperationMode_Set(core_cooperationmode_t M) { msCooperationMode = M;}
394  string
395  PrologString_Get(void);
396  void
397  MemoryAddress_Set(SC_ADDRESS_TYPE MA) { msMemoryAddress = MA;}
398  SC_ADDRESS_TYPE
399  QTOffset_Get(SC_HTHREAD_ID_TYPE H)
400  { assert((H>=0)&(H<MAX_HTHREADS)); return mHThreads[H]->QTOffset_Get();}
401  string
402  StringOfName_Get(SC_HTHREAD_ID_TYPE H)
403  { assert((H>=0)&(H<MAX_HTHREADS)); return mHThreads[H]->StringOfName_Get();}
404 
405  bool
406  CatchedAllocationError(scGridPoint* Parent);
407  scGridPoint*
408  AllocateFor(scGridPoint* Parent);
409  scGridPoint*
410  PreAllocateFor(scGridPoint* Parent);
411 
412  scIGPMessage*
413  CreateRegisterMessageTo(scGridPoint* To, SC_GRIDPOINT_MASK_TYPE Mask);
423  scIGPMessage*
424  CreateQtCreateMessageTo(scGridPoint* To, SC_ADDRESS_TYPE PC, SC_GRIDPOINT_MASK_TYPE Mask, SC_GRIDPOINT_MASK_TYPE BackMask);
425  scIGPMessage*
426  CreateQtKillMessageTo(scGridPoint* To);
427  scIGPMessage*
428  CreateSpecialMessageTo(scGridPoint* To, int16_t Key, int8_t RegNo, int32_t R);
429  void
430  Status_Set(uint16_t S) {mStatus = S;}
431  uint16_t
432  Status_Get(void) { return mStatus;}
433  void
434  ConnectToClusterBus(scClusterBus* ClusterBus); // Connect this gridpoint to the inter-cluster bus
435  scIGPMessage*
436  CreateMemoryReadMessage(unsigned int Address, int Length);
437  scIGPMessage*
438  CreateMemoryWriteMessage(unsigned int Address, int Length);
439  int32_t
440  FlagWordLength_Get(void) {return 0;}
441  int32_t
442  ConditionCode_Get(void) {return 0;}
443  void
444  ConditionCode_Set(int32_t C){}
445  SC_GRIDPOINT_MASK_TYPE
446  doWaitMask_Get(SC_ADDRESS_TYPE Offset);
447  virtual scGridPoint*
448  doFindHostToProcess(SC_ADDRESS_TYPE Offs, SC_GRIDPOINT_MASK_TYPE Mask);
449  bool
450  doCanTerminate( SC_GRIDPOINT_MASK_TYPE Address);
451  virtual void
452  doCreateQT(scIGPMessage* Message){};
453  bool
454  doProcessMMessage(scIGPMessage* Message);
455  virtual bool
456  doProcessQMessage(scIGPMessage* Message);
457  bool
458  doProcessRMessage(scIGPMessage* Message);
465  virtual void
467  { }
468 
469  virtual void
470  doSkipQTCode(void){}
471 /* SC_ADDRESS_TYPE
472  PC_Get() { return exec.PC;}
473  void
474  PC_Set(SC_ADDRESS_TYPE P) {exec.PC = P;}
475  void
476  fetchNewPC_Set(SC_ADDRESS_TYPE PC){ fetch.NewPC = PC;} ///< Set the PC of the core for fetching the next instruction
477  SC_ADDRESS_TYPE
478  fetchPC_Get(void) {return fetch.PC;} ///< Get PC of the core where the instruction is/was fetched
479  void
480  fetchPC_Set(SC_ADDRESS_TYPE PC){ fetch.PC = PC;} ///< Set PC of the core where the instruction will be fetched
481 */
486  void
487  FETCH_thread();
493  virtual bool
499  void
500  EXEC_thread();
505  void
506  SEND_thread();
510  virtual bool
512  void NotifyThreadOnMemoryArrival()
513  { mHThreadFetch->EVENT_HTHREAD.MemoryContentArrived.notify();}
514 
515  // It is administered in the scGridPoint if a HThread is allocated
516  void
517  HThreadAllocatedBit_Set(SC_HTHREAD_ID_TYPE H, bool B)
518  { assert(H < MAX_HTHREADS); msMask.AllocatedHThreads[H] = B;}
519  bool
520  HThreadAllocatedBit_Get(SC_HTHREAD_ID_TYPE H)
521  { assert(H < MAX_HTHREADS); return msMask.AllocatedHThreads[H];}
522 
523 
524  bool
525  OperatingBit_Get(GridPointOperatingBit_t B);
526  bool
527  OperatingGroup_Get(GridPointOperatingBit_t G);
528  int OperatingBits_Get(void){return mGridPointOperatingStateBit.to_ulong();}
529  bool IsObserved(void)
530  {return mObservedHThreads;}
536  void
537  ObservedHThreadBit_Set(SC_HTHREAD_MASK_TYPE M, bool B);
538  protected:
539  SC_HTHREAD_MASK_TYPE
541  int16_t
542  InstanceCount_Get(void) {return mInstanceCount % 50;}
543 
552  scIGPMessage*
553  CreateMessageTo(scGridPoint* To, IGPMessageType Type, int Length);
554  void
555  AvailableBit_Set(void);
556  void
557  SleepingBit_Set(void);
558  void
559  SetupMessageAddressTo(scGridPoint* GP);
560 
561  SC_GRIDPOINT_ID_TYPE
563  scHThread
564  *mHThreadFetch, *mHThreadExec, *mHThreadSend, *mHThreadReceive;
565  scGridPoint*
568  msStatus;
573  RegisterLatch_fifo*
574  msRegisterLatch;
575  SC_ADDRESS_TYPE
576  msMemoryAddress;
577  SC_ADDRESS_TYPE
578  msWaitOffset; // The offset of the QT we are waiting for
579  sc_time
581 
587 // int32_t mMemoryBuffer[MAX_HTHREADS_LIMIT][MAX_IGPCBUFFER_SIZE];
588  // Simple accessor functions
591  uint16_t
592  mInstanceCount; // How many times this object was instantiated
593  scHThread*
594  mHThreads[MAX_HTHREADS];
595  void OperatingGroup_Set(GridPointOperatingBit_t G, bool B);
596  void OperatingBit_Set(GridPointOperatingBit_t B, bool V);
597  protected:
598  // -- These bits are used in monitoring (by the simulator) gridpoint
599  std::bitset<gob_Max>
600  mGridPointOperatingStateBit;
601  // -- These variables are used to benchmark the running time spent in the objects
602  chrono::steady_clock::time_point
603  m_running_time; // A work variable, do not touch outside the macros
604  std::chrono::duration< int64_t, nano>
605  m_part_time, m_sum_time; // Work variables, contain actual benchmark duration and their sum
606 
607 }; // of scGridPoint
608 
609 #endif // scGridPoint_h
610 
611 // Fast memory; reset
IsMemory1
bool IsMemory1(ClusterAddress_t CA)
If it is memory 1 (cache)
IsMemory0
bool IsMemory0(ClusterAddress_t CA)
If it is memory 0 (register)
scGridPoint::Name_Get
string Name_Get(void)
< Return the SC name of the module
Definition: scGridPoint.h:181
scGridPoint::FETCH_thread
void FETCH_thread()
FETCH_thread makes the actual "instruction fetch".
IsMemory3
bool IsMemory3(ClusterAddress_t CA)
If it is memory 3 (convential, "far")
scGridPoint::CooperationMode_Get
core_cooperationmode_t CooperationMode_Get(void)
Send a notification to the thread that the requested memory content is available.
Definition: scGridPoint.h:391
scGridPoint::IGPCB_Get
scIGPCB * IGPCB_Get(ClusterNeighbor index)
< Get address of the communication block
Definition: scGridPoint.h:213
cm_Broadcast
@ cm_Broadcast
All cluster members (broadcast)
Definition: Clustering.h:42
scGridPoint::HThreadReceive_Get
scHThread * HThreadReceive_Get(void)
< Return the fetching thread
Definition: scGridPoint.h:377
scGridPoint::ObservedHThreadBit_Set
void ObservedHThreadBit_Set(SC_HTHREAD_MASK_TYPE M, bool B)
Set if HThread M is observed.
scGridPoint::HThreadAllocatedBit_Get
bool HThreadAllocatedBit_Get(SC_HTHREAD_ID_TYPE H)
< Return if HThread is active
Definition: scGridPoint.h:520
GridPoint
This class handles the topological information for the modules. Provides a lot of math-only utility f...
Definition: GridPoint.h:33
scGridPoint::IDMask_Get
SC_GRIDPOINT_MASK_TYPE IDMask_Get(void)
< Return the mask form of the ID
Definition: scGridPoint.h:178
GridPointSignal_t
The signals issued by the scGridPoint.
Definition: scGridEnumTypes.h:92
scGridPoint::CreateThreads
virtual void CreateThreads(void)
< Create threads for HThreads sharing this processing unit
GridPointMask_t::ID
SC_GRIDPOINT_MASK_TYPE ID
One-hot bitmask corresponding to mID of the scGridPoint.
Definition: scGridEnumTypes.h:159
scIGPMessage_if.h
Functionality of scIGPMessage-related stuff.
scGridPoint::scGridPoint
scGridPoint(sc_core::sc_module_name nm, scProcessor *Processor, const GridPoint GP, bool StandAlone)
scGridPoint Creates an GP for Processor scGridPoint at position, with name nm
scIGPMessage
The scIGPMessage class.
Definition: scIGPMessage.h:97
scGridPoint::mObservedHThreads
SC_HTHREAD_MASK_TYPE mObservedHThreads
The observed HThreads of this scGridPoint.
Definition: scGridPoint.h:540
scGridPoint::HThreadExec_Get
scHThread * HThreadExec_Get(void)
< Return the executing thread
Definition: scGridPoint.h:368
scHThread
The scHThread class.
Definition: scHThread.h:138
GridPointMask_t
The set of scGridPoint objects can be defined by by a mask word, the bits corresponding to single mod...
Definition: scGridEnumTypes.h:156
scGridPoint::CreateMessageTo
scIGPMessage * CreateMessageTo(scGridPoint *To, IGPMessageType Type, int Length)
Create a message and put the addresses into the message.
scProcessor
Implements a module-name alias facility (i.e., user-provided names. Given that the basic units is scH...
Definition: scProcessor.h:130
core_cooperationmode_t
core_cooperationmode_t
Codes of mass processing operating modes.
Definition: scGridEnumTypes.h:174
GridPointStatusBit_t::PreAllocated
bool PreAllocated
< Whether this scGridPoint is preallocated by another one
Definition: scGridEnumTypes.h:123
GridPointOperatingBit_t
GridPointOperatingBit_t
the names of the bits in the bitset for operating them
Definition: scGridEnumTypes.h:23
scGridPoint::mHThreads
scHThread * mHThreads[MAX_HTHREADS]
Stores the address of HThreads.
Definition: scGridPoint.h:594
IsMemory
bool IsMemory(ClusterAddress_t CA)
If it is any kind of memory.
scGridPoint::StringOfMemoryAddress_Get
string StringOfMemoryAddress_Get(void)
! Removed temporarily, until NEXT in AbstractCore fully implemented
Definition: scGridPoint.h:294
GridPointStatusBit_t::Allocated
bool Allocated
< Whether this GridPoint is allocated by another one
Definition: scGridEnumTypes.h:120
ClusterNeighbor
ClusterNeighbor
The neighborship in the cluster: the members are referred to with their geographic direction.
Definition: Clustering.h:34
scGridPoint::doExecInstruction
virtual bool doExecInstruction(scHThread *H)
Send a message.
scGridPoint
This class implements the autonomous grid point functionality: it is a communicating GridPoint....
Definition: scGridPoint.h:127
GridPointStatusBit_t
The values are stored here, and set through writing into GridPointStatusBitSignal_t.
Definition: scGridEnumTypes.h:113
scGridPoint::CreateQtCreateMessageTo
scIGPMessage * CreateQtCreateMessageTo(scGridPoint *To, SC_ADDRESS_TYPE PC, SC_GRIDPOINT_MASK_TYPE Mask, SC_GRIDPOINT_MASK_TYPE BackMask)
scGridPoint::CreateQtCreateMessageTo It can be needed to pass a QT message for Q_CREATE and Q_KILL
ClusterAddress_t
A GridPoint can be addressed also by its cluster address of type ClusterAddress_t....
Definition: Clustering.h:58
IsMemory2
bool IsMemory2(ClusterAddress_t CA)
If it is memory 2 (I/O buffer)
scGridPoint::StringOfClusterAddress_Get
string StringOfClusterAddress_Get(void)
scGridPoint::EXEC_thread
void EXEC_thread()
EXEC_thread makes the actual "instruction exec".
scGridPoint::msWaitBegin
sc_time msWaitBegin
The beginning of the waiting period.
Definition: scGridPoint.h:580
GridPointMask_t::Children
SC_GRIDPOINT_MASK_TYPE Children
(immediate) Children of this scGridPoint
Definition: scGridEnumTypes.h:160
GridPointStatusBit_t::Denied
bool Denied
< Whether this scGridPoint is denied, from any reason
Definition: scGridEnumTypes.h:118
GridPointMask_t::AllocatedHThreads
std::bitset< MAX_HTHREADS > AllocatedHThreads
Stores the mask of registers to backlink.
Definition: scGridEnumTypes.h:169
scGridPoint::PreAllocatedMaskBit_Set
void PreAllocatedMaskBit_Set(scGridPoint *C, bool V=true)
Get the mask of allocating cores.
scGridPoint::msMask
GridPointMask_t msMask
This aggregate comprises all masks belonging to the GridPoint.
Definition: scGridPoint.h:572
scHThread::StringOfName_Get
string StringOfName_Get(void)
Return alias name of default name.
scGridEnumTypes.h
Function prototypes for the scEMPA simulator, simulator main file.
scGridPoint::ID_Get
SC_GRIDPOINT_ID_TYPE ID_Get()
< Return the unique ID of the scGridPoint
Definition: scGridPoint.h:176
scGridPoint::doSetQTAddresses
virtual void doSetQTAddresses(scGridPoint *Parent)
doSetQTAddresses
Definition: scGridPoint.h:466
scGridPoint::HThreadAllocatedBit_Set
void HThreadAllocatedBit_Set(SC_HTHREAD_ID_TYPE H, bool B)
< Set thread H either active or inactive
Definition: scGridPoint.h:517
scGridPoint::msParent
scGridPoint * msParent
Parent gridpoint.
Definition: scGridPoint.h:566
scGridPoint::msSignal
GridPointSignal_t msSignal
This aggregate comprises all signals shown to the outer world.
Definition: scGridPoint.h:570
scGridPoint::SIGNAL_method
void SIGNAL_method(void)
ClusterHead_Get.
scHThread::EVENT_HTHREAD
struct scHThread::@3 EVENT_HTHREAD
These events are handled at thread level.
scGridPoint::AddDefaultAliasNames
void AddDefaultAliasNames(void)
scGridPoint::doFetchInstruction
virtual bool doFetchInstruction(scHThread *H)
doFetchInstruction The actual fetching is done in the subclassed routine Here it imitates the action ...
scGridPoint::msCooperationMode
core_cooperationmode_t msCooperationMode
Definition: scGridPoint.h:590
scSynapticConnect
Handles input from an axon of a remote neuron, firing to this synapsis. Handles the input broken-line...
Definition: AbstractNeurerConnection.h:37
scGridPoint::PreAllocateFor
scGridPoint * PreAllocateFor(scGridPoint *Parent)
Allocate this core for running a QT.
scGridPoint::SEND_thread
void SEND_thread()
SEND_thread Send the actual message.
scGridPoint::msID
SC_GRIDPOINT_ID_TYPE msID
ID if the scGridPoint.
Definition: scGridPoint.h:562
GridPointStatusBit_t::Wait
bool Wait
< The GridPoint is blocked (surely Allocated, maybe Meta)
Definition: scGridEnumTypes.h:126
scIGPMessage.h
Basic messaging forms between scGridPoints.
IGPMessageType
The basic message types of scIGPMessage messages.
scGridPoint::HThreadSend_Get
scHThread * HThreadSend_Get(void)
< Return the fetching thread
Definition: scGridPoint.h:374
GridPointStatusBit_t::Available
bool Available
< !(Denied | Allocated | PreAllocated)
Definition: scGridEnumTypes.h:128
scGridPoint::AddHThread
void AddHThread(unsigned int H, scHThread *P)
< Add a HW thread to the scGridPoint
Definition: scGridPoint.h:184
scIGPMessage_if
This class communication interface for scIGPMessage communication for the autonous communication func...
Definition: scIGPMessage_if.h:109
GridPointSignalPort_t
Port declarations: these signals go out to the scProcessor.
Definition: scGridEnumTypes.h:74
scGridPoint::HThreadFetch_Get
scHThread * HThreadFetch_Get(void)
< Return the fetching thread
Definition: scGridPoint.h:371
GridPointStatusBit_t::Meta
bool Meta
< Executing a metainstruction (surely Allocated)
Definition: scGridEnumTypes.h:124