cloudFPGA (cF) API  1.0
The documentation of the source code of cloudFPGA (cF)
toe.cpp
Go to the documentation of this file.
1 
17 
43 
56 #include "toe.hpp"
57 #include "toe_utils.hpp"
62 #include "./timers/timers.hpp"
70 
71 
77 #define USE_DEPRECATED_DIRECTIVES
78 
79 
83 #ifndef __SYNTHESIS__
84  extern bool gTraceEvent;
85 #endif
86 #define THIS_NAME "TOE"
87 
88 #define TRACE_OFF 0x0000
89 #define TRACE_RDY 1 << 1
90 #define TRACE_ALL 0xFFFF
91 
92 #define DEBUG_LEVEL (TRACE_OFF)
93 
94 
106 template<typename T> void pStreamMux(
107  stream<T> &si1,
108  stream<T> &si2,
109  stream<T> &so) {
110 
111  //-- DIRECTIVES FOR THIS PROCESS ------------------------------------------
112  #pragma HLS PIPELINE II=1 enable_flush
113  #pragma HLS INLINE off
114 
115  if (!si1.empty())
116  so.write(si1.read());
117  else if (!si2.empty())
118  so.write(si2.read());
119 }
120 
121 
122 
133 void pReady(
134  StsBool &piPRt_Ready,
135  StsBit &poNTS_Ready)
136 {
137  const char *myName = concat3(THIS_NAME, "/", "Rdy");
138 
139  poNTS_Ready = (piPRt_Ready == true) ? 1 : 0;
140 
141  if (DEBUG_LEVEL & TRACE_RDY) {
142  if (poNTS_Ready)
143  printInfo(myName, "Process [TOE] is ready.\n");
144  }
145 }
146 
147 
157  volatile ap_uint<32> &poSimCycCount)
158 {
159  //-- STATIC CONTROL VARIABLES (with RESET) --------------------------------
160  #ifdef __SYNTHESIS__
161  static ap_uint<32> sCounter = 0xFFFFFFF9;
162  #else
163  static ap_uint<32> sCounter = 0x00000000;
164  #endif
165  #pragma HLS reset variable=sCounter
166 
167  sCounter += 1;
168  // [Un-comment this line ]poSimCycCount = sCounter;
169 }
170 
171 
172 
231 void toe(
232 
233  //------------------------------------------------------
234  //-- MMIO Interfaces
235  //------------------------------------------------------
236  Ip4Addr piMMIO_IpAddr,
237  stream<StsBit> &soMMIO_RxMemWrErr,
238  stream<ap_uint<8> > &soMMIO_NotifDropCnt,
239  stream<ap_uint<8> > &soMMIO_MetaDropCnt,
240  stream<ap_uint<8> > &soMMIO_DataDropCnt,
241  stream<ap_uint<8> > &soMMIO_CrcDropCnt,
242  stream<ap_uint<8> > &soMMIO_SessDropCnt,
243  stream<ap_uint<8> > &soMMIO_OooDropCnt,
244 
245  //------------------------------------------------------
246  //-- NTS Interfaces
247  //------------------------------------------------------
248  StsBit &poNTS_Ready,
249 
250  //------------------------------------------------------
251  //-- IPRX / IP Rx / Data Interface
252  //------------------------------------------------------
253  stream<AxisIp4> &siIPRX_Data,
254 
255  //------------------------------------------------------
256  //-- IPTX / IP Tx / Data Interface
257  //------------------------------------------------------
258  stream<AxisIp4> &soIPTX_Data,
259 
260  //------------------------------------------------------
261  //-- TAIF / Rx Data Interfaces
262  //------------------------------------------------------
263  stream<TcpAppNotif> &soTAIF_Notif,
264  stream<TcpAppRdReq> &siTAIF_DReq,
265  stream<TcpAppData> &soTAIF_Data,
266  stream<TcpAppMeta> &soTAIF_Meta,
267 
268  //------------------------------------------------------
269  //-- TAIF / Listen Port Interfaces
270  //------------------------------------------------------
271  stream<TcpAppLsnReq> &siTAIF_LsnReq,
272  stream<TcpAppLsnRep> &soTAIF_LsnRep,
273 
274  //------------------------------------------------------
275  //-- TAIF / Tx Data Interfaces
276  //------------------------------------------------------
277  stream<TcpAppData> &siTAIF_Data,
278  stream<TcpAppSndReq> &siTAIF_SndReq,
279  stream<TcpAppSndRep> &soTAIF_SndRep,
280 
281  //------------------------------------------------------
282  //-- TAIF / Open connection Interfaces
283  //------------------------------------------------------
284  stream<TcpAppOpnReq> &siTAIF_OpnReq,
285  stream<TcpAppOpnRep> &soTAIF_OpnRep,
286 
287  //------------------------------------------------------
288  //-- TAIF / Close Interfaces
289  //------------------------------------------------------
290  stream<TcpAppClsReq> &siTAIF_ClsReq,
291  //-- Not USed &soTAIF_ClsSts,
292 
293  //------------------------------------------------------
294  //-- MEM / Rx PATH / S2MM Interface
295  //------------------------------------------------------
296  //-- Not Used &siMEM_RxP_RdSts,
297  stream<DmCmd> &soMEM_RxP_RdCmd,
298  stream<AxisApp> &siMEM_RxP_Data,
299  stream<DmSts> &siMEM_RxP_WrSts,
300  stream<DmCmd> &soMEM_RxP_WrCmd,
301  stream<AxisApp> &soMEM_RxP_Data,
302 
303  //------------------------------------------------------
304  //-- MEM / Tx PATH / S2MM Interface
305  //------------------------------------------------------
306  //-- Not Used &siMEM_TxP_RdSts,
307  stream<DmCmd> &soMEM_TxP_RdCmd,
308  stream<AxisApp> &siMEM_TxP_Data,
309  stream<DmSts> &siMEM_TxP_WrSts,
310  stream<DmCmd> &soMEM_TxP_WrCmd,
311  stream<AxisApp> &soMEM_TxP_Data,
312 
313  //------------------------------------------------------
314  //-- CAM / Session Lookup & Update Interfaces
315  //------------------------------------------------------
316  stream<CamSessionLookupRequest> &soCAM_SssLkpReq,
317  stream<CamSessionLookupReply> &siCAM_SssLkpRep,
318  stream<CamSessionUpdateRequest> &soCAM_SssUpdReq,
319  stream<CamSessionUpdateReply> &siCAM_SssUpdRep,
320 
321  //------------------------------------------------------
322  //-- DEBUG Interfaces
323  //------------------------------------------------------
324  stream<ap_uint<16> > &soDBG_SssRelCnt,
325  stream<ap_uint<16> > &soDBG_SssRegCnt,
326  stream<RxBufPtr> &soDBG_RxFreeSpace,
327  stream<ap_uint<32> > &soDBG_TcpIpRxByteCnt,
328  stream<ap_uint< 8> > &soDBG_OooDebug
330  ap_uint<32> &poSimCycCount
331  #endif
332  )
333 {
334  //-- DIRECTIVES FOR THIS PROCESS -------------------------------------------
335  #pragma HLS DATAFLOW
336  #pragma HLS INLINE
337  #pragma HLS INTERFACE ap_ctrl_none port=return
338 
339  //-------------------------------------------------------------------------
340  //-- LOCAL STREAMS AND SIGNALS
341  //-- (Sorted by the name of the modules which generate them)
342  //-------------------------------------------------------------------------
343 
344  //-------------------------------------------------------------------------
345  //-- ACK Delayer (AKd)
346  //-------------------------------------------------------------------------
347  static stream<ExtendedEvent> ssAKdToTXe_Event ("ssAKdToTXe_Event");
348  #pragma HLS stream variable=ssAKdToTXe_Event depth=cDepth_AKdToTXe_Event
349  #pragma HLS DATA_PACK variable=ssAKdToTXe_Event
350 
351  static stream<SigBit> ssAKdToEVe_RxEventSig ("ssAKdToEVe_RxEventSig");
352  #pragma HLS stream variable=ssAKdToEVe_RxEventSig depth=cDepth_AKdToEVe_Event
353 
354  static stream<SigBit> ssAKdToEVe_TxEventSig ("ssAKdToEVe_TxEventSig");
355  #pragma HLS stream variable=ssAKdToEVe_TxEventSig depth=cDepth_AKdToEVe_Event
356 
357  //-------------------------------------------------------------------------
358  //-- Event Engine (EVe)
359  //-------------------------------------------------------------------------
360  static stream<ExtendedEvent> ssEVeToAKd_Event ("ssEVeToAKd_Event");
361  #pragma HLS stream variable=ssEVeToAKd_Event depth=cDepth_EVeToAKd_Event
362  #pragma HLS DATA_PACK variable=ssEVeToAKd_Event
363 
364  //-------------------------------------------------------------------------
365  //-- Port Table (PRt)
366  //-------------------------------------------------------------------------
367  StsBool sPRtToRdy_Ready;
368 
369  static stream<RepBit> ssPRtToRXe_PortStateRep ("ssPRtToRXe_PortStateRep");
370  #pragma HLS stream variable=ssPRtToRXe_PortStateRep depth=4
371 
372  static stream<AckBit> ssPRtToRAi_OpnLsnPortRep ("ssPRtToRAi_OpnLsnPortRep");
373  #pragma HLS stream variable=ssPRtToRAi_OpnLsnPortRep depth=4
374 
375  static stream<TcpPort> ssPRtToTAi_GetFreePortRep ("ssPRtToTAi_GetFreePortRep");
376  #pragma HLS stream variable=ssPRtToTAi_GetFreePortRep depth=4
377 
378  //-- Rx Application Interface (RAi) ---------------------------------------
379  static stream<TcpPort> ssRAiToPRt_OpnLsnPortReq ("ssRAiToPRt_OpnLsnPortReq");
380  #pragma HLS stream variable=ssRAiToPRt_OpnLsnPortReq depth=4
381 
382  static stream<RAiRxSarQuery> ssRAiToRSt_RxSarQry ("ssRAiToRSt_RxSarQry");
383  #pragma HLS stream variable=ssRAiToRSt_RxSarQry depth=cDepth_RAiToRSt_Qry
384  #pragma HLS DATA_PACK variable=ssRAiToRSt_RxSarQry
385 
386  //-------------------------------------------------------------------------
387  //-- Rx Engine (RXe)
388  //-------------------------------------------------------------------------
389  static stream<SessionLookupQuery> ssRXeToSLc_SessLkpReq ("ssRXeToSLc_SessLkpReq");
390  #pragma HLS stream variable=ssRXeToSLc_SessLkpReq depth=4
391  #pragma HLS DATA_PACK variable=ssRXeToSLc_SessLkpReq
392 
393  static stream<TcpPort> ssRXeToPRt_PortStateReq ("ssRXeToPRt_PortStateReq");
394  #pragma HLS stream variable=ssRXeToPRt_PortStateReq depth=4
395 
396  static stream<StateQuery> ssRXeToSTt_SessStateQry ("ssRXeToSTt_SessStateQry");
397  #pragma HLS stream variable=ssRXeToSTt_SessStateQry depth=2
398  #pragma HLS DATA_PACK variable=ssRXeToSTt_SessStateQry
399 
400  static stream<RXeRxSarQuery> ssRXeToRSt_RxSarQry ("ssRXeToRSt_RxSarQry");
401  #pragma HLS stream variable=ssRXeToRSt_RxSarQry depth=cDepth_RXeToRSt_Qry
402  #pragma HLS DATA_PACK variable=ssRXeToRSt_RxSarQry
403 
404  static stream<RXeTxSarQuery> ssRXeToTSt_TxSarQry ("ssRXeToTSt_TxSarQry");
405  #pragma HLS stream variable=ssRXeToTSt_TxSarQry depth=cDepth_RXeToTSt_Qry
406  #pragma HLS DATA_PACK variable=ssRXeToTSt_TxSarQry
407 
408  static stream<RXeReTransTimerCmd> ssRXeToTIm_ReTxTimerCmd ("ssRXeToTIm_ReTxTimerCmd");
409  #pragma HLS stream variable=ssRXeToTIm_ReTxTimerCmd depth=2
410  #pragma HLS DATA_PACK variable=ssRXeToTIm_ReTxTimerCmd
411 
412  static stream<SessionId> ssRXeToTIm_CloseTimer ("ssRXeToTIm_CloseTimer");
413  #pragma HLS stream variable=ssRXeToTIm_CloseTimer depth=2
414 
415  static stream<SessionId> ssRXeToTIm_ClrProbeTimer ("ssRXeToTIm_ClrProbeTimer");
416  #pragma HLS stream variable=ssRXeToTIm_ClrProbeTimer depth=2
417 
418  static stream<TcpAppNotif> ssRXeToRAi_Notif ("ssRXeToRAi_Notif");
419  #pragma HLS stream variable=ssRXeToRAi_Notif depth=4
420  #pragma HLS DATA_PACK variable=ssRXeToRAi_Notif
421 
422  static stream<SessState> ssRXeToTAi_SessOpnSts ("ssRXeToTAi_SessOpnSts");
423  #pragma HLS stream variable=ssRXeToTAi_SessOpnSts depth=4
424  #pragma HLS DATA_PACK variable=ssRXeToTAi_SessOpnSts
425 
426  static stream<ExtendedEvent> ssRXeToEVe_Event ("ssRXeToEVe_Event");
427  #pragma HLS stream variable=ssRXeToEVe_Event depth=cDepth_RXeToEVe_Event
428  #pragma HLS DATA_PACK variable=ssRXeToEVe_Event
429 
430  //-- Rx SAR Table (RSt) ---------------------------------------------------
431  static stream<RxSarReply> ssRStToRXe_RxSarRep ("ssRStToRXe_RxSarRep");
432  #pragma HLS stream variable=ssRStToRXe_RxSarRep depth=2
433  #pragma HLS DATA_PACK variable=ssRStToRXe_RxSarRep
434 
435  static stream<RAiRxSarReply> ssRStToRAi_RxSarRep ("ssRStToRAi_RxSarRep");
436  #pragma HLS stream variable=ssRStToRAi_RxSarRep depth=2
437  #pragma HLS DATA_PACK variable=ssRStToRAi_RxSarRep
438 
439  static stream<RxSarReply> ssRStToTXe_RxSarRep ("ssRStToTXe_RxSarRep");
440  #pragma HLS stream variable=ssRStToTXe_RxSarRep depth=2
441  #pragma HLS DATA_PACK variable=ssRStToTXe_RxSarRep
442 
443  //-------------------------------------------------------------------------
444  //-- Session Lookup Controller (SLc)
445  //-------------------------------------------------------------------------
446  static stream<SessionLookupReply> ssSLcToRXe_SessLkpRep ("ssSLcToRXe_SessLkpRep");
447  #pragma HLS stream variable=ssSLcToRXe_SessLkpRep depth=4
448  #pragma HLS DATA_PACK variable=ssSLcToRXe_SessLkpRep
449 
450  static stream<SessionLookupReply> ssSLcToTAi_SessLookupRep ("ssSLcToTAi_SessLookupRep");
451  #pragma HLS stream variable=ssSLcToTAi_SessLookupRep depth=4
452  #pragma HLS DATA_PACK variable=ssSLcToTAi_SessLookupRep
453 
454  static stream<TcpPort> ssSLcToPRt_ReleasePort ("ssSLcToPRt_ReleasePort");
455  #pragma HLS stream variable=ssSLcToPRt_ReleasePort depth=4
456 
457  static stream<fourTuple> ssSLcToTXe_ReverseLkpRep ("ssSLcToTXe_ReverseLkpRep");
458  #pragma HLS stream variable=ssSLcToTXe_ReverseLkpRep depth=4
459  #pragma HLS DATA_PACK variable=ssSLcToTXe_ReverseLkpRep
460 
461  //-------------------------------------------------------------------------
462  //-- State Table (STt)
463  //-------------------------------------------------------------------------
464  static stream<TcpState> ssSTtToRXe_SessStateRep ("ssSTtToRXe_SessStateRep");
465  #pragma HLS stream variable=ssSTtToRXe_SessStateRep depth=cDepth_STtToRXe_Rep
466 
467  static stream<TcpState> ssSTtToTAi_AcceptStateRep ("ssSTtToTAi_AcceptStateRep");
468  #pragma HLS stream variable=ssSTtToTAi_AcceptStateRep depth=cDepth_STtToTAi_Rep
469 
470  static stream<TcpState> ssSTtToTAi_SessStateRep ("ssSTtToTAi_SessStateRep");
471  #pragma HLS stream variable=ssSTtToTAi_SessStateRep depth=2
472 
473  static stream<SessionId> ssSTtToSLc_SessReleaseCmd ("ssSTtToSLc_SessReleaseCmd");
474  #pragma HLS stream variable=ssSTtToSLc_SessReleaseCmd depth=2
475 
476  //-------------------------------------------------------------------------
477  //-- Tx Application Interface (TAi)
478  //-------------------------------------------------------------------------
479  static stream<ReqBit> ssTAiToPRt_GetFeePortReq ("ssTAiToPRt_GetFeePortReq");
480  #pragma HLS stream variable=ssTAiToPRt_GetFeePortReq depth=4
481 
482  static stream<SocketPair> ssTAiToSLc_SessLookupReq ("ssTAiToSLc_SessLookupReq");
483  #pragma HLS DATA_PACK variable=ssTAiToSLc_SessLookupReq
484  #pragma HLS stream variable=ssTAiToSLc_SessLookupReq depth=4
485 
486  static stream<Event> ssTAiToEVe_Event ("ssTAiToEVe_Event");
487  #pragma HLS stream variable=ssTAiToEVe_Event depth=cDepth_TAiToEVe_Event
488  #pragma HLS DATA_PACK variable=ssTAiToEVe_Event
489 
490  static stream<TAiTxSarPush> ssTAiToTSt_PushCmd ("ssTAiToTSt_PushCmd");
491  #pragma HLS stream variable=ssTAiToTSt_PushCmd depth=cDepth_TAiToTSt_Cmd
492  #pragma HLS DATA_PACK variable=ssTAiToTSt_PushCmd
493 
494  static stream<StateQuery> ssTAiToSTt_AcceptStateQry ("ssTAiToSTt_AcceptStateQry");
495  #pragma HLS stream variable=ssTAiToSTt_AcceptStateQry depth=2
496  #pragma HLS DATA_PACK variable=ssTAiToSTt_AcceptStateQry
497 
498  static stream<TcpSessId> ssTAiToSTt_SessStateReq ("ssTAiToSTt_SessStateReq");
499  #pragma HLS stream variable=ssTAiToSTt_SessStateReq depth=2
500 
501  //-------------------------------------------------------------------------
502  //-- Timers (TIm)
503  //-------------------------------------------------------------------------
504  static stream<Event> ssTImToEVe_Event ("ssTImToEVe_Event");
505  #pragma HLS stream variable=ssTImToEVe_Event depth=cDepth_TImToEVe_Event
506  #pragma HLS DATA_PACK variable=ssTImToEVe_Event
507 
508  static stream<SessionId> ssTImToSTt_SessCloseCmd ("ssTImToSTt_SessCloseCmd");
509  #pragma HLS stream variable=ssTImToSTt_SessCloseCmd depth=2
510 
511  static stream<SessState> ssTImToTAi_Notif ("ssTImToTAi_Notif");
512  #pragma HLS stream variable=ssTImToTAi_Notif depth=4
513  #pragma HLS DATA_PACK variable=ssTImToTAi_Notif
514 
515  static stream<TcpAppNotif> ssTImToRAi_Notif ("ssTImToRAi_Notif");
516  #pragma HLS stream variable=ssTImToRAi_Notif depth=4
517  #pragma HLS DATA_PACK variable=ssTImToRAi_Notif
518 
519  //-------------------------------------------------------------------------
520  //-- Tx Engine (TXe)
521  //-------------------------------------------------------------------------
522  static stream<SigBit> ssTXeToEVe_RxEventSig ("ssTXeToEVe_RxEventSig");
523  #pragma HLS stream variable=ssTXeToEVe_RxEventSig depth=cDepth_TXeToEVe_Event
524 
525  static stream<SessionId> ssTXeToRSt_RxSarReq ("ssTXeToRSt_RxSarReq");
526  #pragma HLS stream variable=ssTXeToRSt_RxSarReq depth=cDepth_TXeToRSt_Req
527 
528  static stream<TXeTxSarQuery> ssTXeToTSt_TxSarQry ("ssTXeToTSt_TxSarQry");
529  #pragma HLS stream variable=ssTXeToTSt_TxSarQry depth=cDepth_TXeToTSt_Qry
530  #pragma HLS DATA_PACK variable=ssTXeToTSt_TxSarQry
531 
532  static stream<SessionId> ssTXeToSLc_ReverseLkpReq ("ssTXeToSLc_ReverseLkpReq");
533  #pragma HLS stream variable=ssTXeToSLc_ReverseLkpReq depth=4
534 
535  static stream<TXeReTransTimerCmd> ssTXeToTIm_SetReTxTimer ("ssTXeToTIm_SetReTxTimer");
536  #pragma HLS stream variable=ssTXeToTIm_SetReTxTimer depth=2
537  #pragma HLS DATA_PACK variable=ssTXeToTIm_SetReTxTimer
538 
539  static stream<SessionId> ssTXeToTIm_SetProbeTimer ("ssTXeToTIm_SetProbeTimer");
540  #pragma HLS stream variable=ssTXeToTIm_SetProbeTimer depth=2
541 
542  //-------------------------------------------------------------------------
543  //-- Tx SAR Table (TSt)
544  //-------------------------------------------------------------------------
545  static stream<RXeTxSarReply> ssTStToRXe_TxSarRep ("ssTStToRXe_TxSarRep");
546  #pragma HLS stream variable=ssTStToRXe_TxSarRep depth=cDepth_TStToRXe_Rep
547  #pragma HLS DATA_PACK variable=ssTStToRXe_TxSarRep
548 
549  static stream<TXeTxSarReply> ssTStToTXe_TxSarRep ("ssTStToTXe_TxSarRep");
550  #pragma HLS stream variable=ssTStToTXe_TxSarRep depth=cDepth_TStToTXe_Rep
551  #pragma HLS DATA_PACK variable=ssTStToTXe_TxSarRep
552 
553  static stream<TStTxSarPush> ssTStToTAi_PushCmd ("ssTStToTAi_PushCmd");
554  #pragma HLS stream variable=ssTStToTAi_PushCmd depth=cDepth_TStToTAi_Cmd
555  #pragma HLS DATA_PACK variable=ssTStToTAi_PushCmd
556 
557 
561  //-- Session Lookup Controller (SLc) -----------------------------------
563  ssRXeToSLc_SessLkpReq,
564  ssSLcToRXe_SessLkpRep,
565  ssSTtToSLc_SessReleaseCmd,
566  ssSLcToPRt_ReleasePort,
567  ssTAiToSLc_SessLookupReq,
568  ssSLcToTAi_SessLookupRep,
569  ssTXeToSLc_ReverseLkpReq,
570  ssSLcToTXe_ReverseLkpRep,
571  soCAM_SssLkpReq,
572  siCAM_SssLkpRep,
573  soCAM_SssUpdReq,
574  siCAM_SssUpdRep,
575  soDBG_SssRelCnt,
576  soDBG_SssRegCnt);
577 
578  //-- State Table (STt) -------------------------------------------------
579  state_table(
580  ssRXeToSTt_SessStateQry,
581  ssSTtToRXe_SessStateRep,
582  ssTAiToSTt_AcceptStateQry,
583  ssSTtToTAi_AcceptStateRep,
584  ssTAiToSTt_SessStateReq,
585  ssSTtToTAi_SessStateRep,
586  ssTImToSTt_SessCloseCmd,
587  ssSTtToSLc_SessReleaseCmd);
588 
589  //-- RX SAR Table (RSt) ------------------------------------------------
590  rx_sar_table(
591  ssRXeToRSt_RxSarQry,
592  ssRStToRXe_RxSarRep,
593  ssRAiToRSt_RxSarQry,
594  ssRStToRAi_RxSarRep,
595  ssTXeToRSt_RxSarReq,
596  ssRStToTXe_RxSarRep);
597 
598  //-- TX SAR Table (TSt) ------------------------------------------------
599  tx_sar_table(
600  ssRXeToTSt_TxSarQry,
601  ssTStToRXe_TxSarRep,
602  ssTXeToTSt_TxSarQry,
603  ssTStToTXe_TxSarRep,
604  ssTAiToTSt_PushCmd,
605  ssTStToTAi_PushCmd);
606 
607  //-- Port Table (PRt) --------------------------------------------------
608  port_table(
609  sPRtToRdy_Ready,
610  ssRXeToPRt_PortStateReq,
611  ssPRtToRXe_PortStateRep,
612  ssRAiToPRt_OpnLsnPortReq,
613  ssPRtToRAi_OpnLsnPortRep,
614  ssTAiToPRt_GetFeePortReq,
615  ssPRtToTAi_GetFreePortRep,
616  ssSLcToPRt_ReleasePort);
617 
618  //-- Timers (TIm) ------------------------------------------------------
619  timers(
620  ssRXeToTIm_ReTxTimerCmd,
621  ssRXeToTIm_ClrProbeTimer,
622  ssRXeToTIm_CloseTimer,
623  ssTXeToTIm_SetReTxTimer,
624  ssTXeToTIm_SetProbeTimer,
625  ssTImToSTt_SessCloseCmd,
626  ssTImToEVe_Event,
627  ssTImToTAi_Notif,
628  ssTImToRAi_Notif);
629 
630  //-- Event Engine (EVe) ------------------------------------------------
631  event_engine(
632  ssTAiToEVe_Event,
633  ssRXeToEVe_Event,
634  ssTImToEVe_Event,
635  ssEVeToAKd_Event,
636  ssAKdToEVe_RxEventSig,
637  ssAKdToEVe_TxEventSig,
638  ssTXeToEVe_RxEventSig);
639 
640  //-- Ack Delayer (AKd)) ----------------------------------------------
641  ack_delay(
642  ssEVeToAKd_Event,
643  ssAKdToEVe_RxEventSig,
644  ssAKdToEVe_TxEventSig,
645  ssAKdToTXe_Event);
646 
647 
648 
652  //-- RX Engine (RXe) --------------------------------------------------
653  rx_engine(
654  siIPRX_Data,
655  ssRXeToSLc_SessLkpReq,
656  ssSLcToRXe_SessLkpRep,
657  ssRXeToSTt_SessStateQry,
658  ssSTtToRXe_SessStateRep,
659  ssRXeToPRt_PortStateReq,
660  ssPRtToRXe_PortStateRep,
661  ssRXeToRSt_RxSarQry,
662  ssRStToRXe_RxSarRep,
663  ssRXeToTSt_TxSarQry,
664  ssTStToRXe_TxSarRep,
665  ssRXeToTIm_ReTxTimerCmd,
666  ssRXeToTIm_ClrProbeTimer,
667  ssRXeToTIm_CloseTimer,
668  ssRXeToEVe_Event,
669  ssRXeToTAi_SessOpnSts,
670  ssRXeToRAi_Notif,
671  soMEM_RxP_WrCmd,
672  soMEM_RxP_Data,
673  siMEM_RxP_WrSts,
674  soMMIO_RxMemWrErr,
675  soMMIO_CrcDropCnt,
676  soMMIO_SessDropCnt,
677  soMMIO_OooDropCnt,
678  soDBG_RxFreeSpace,
679  soDBG_TcpIpRxByteCnt,
680  soDBG_OooDebug);
681 
682  //-- TX Engine (TXe) --------------------------------------------------
683  tx_engine(
684  ssAKdToTXe_Event,
685  ssTXeToEVe_RxEventSig,
686  ssTXeToRSt_RxSarReq,
687  ssRStToTXe_RxSarRep,
688  ssTXeToTSt_TxSarQry,
689  ssTStToTXe_TxSarRep,
690  soMEM_TxP_RdCmd,
691  siMEM_TxP_Data,
692  ssTXeToTIm_SetReTxTimer,
693  ssTXeToTIm_SetProbeTimer,
694  ssTXeToSLc_ReverseLkpReq,
695  ssSLcToTXe_ReverseLkpRep,
696  soIPTX_Data);
697 
698 
699 
703  //-- Rx Application Interface (RAi) -----------------------------------
705  soTAIF_Notif,
706  siTAIF_DReq,
707  soTAIF_Data,
708  soTAIF_Meta,
709  siTAIF_LsnReq,
710  soTAIF_LsnRep,
711  ssRAiToPRt_OpnLsnPortReq,
712  ssPRtToRAi_OpnLsnPortRep,
713  ssRXeToRAi_Notif,
714  ssTImToRAi_Notif,
715  ssRAiToRSt_RxSarQry,
716  ssRStToRAi_RxSarRep,
717  soMEM_RxP_RdCmd,
718  siMEM_RxP_Data,
719  soMMIO_NotifDropCnt,
720  soMMIO_MetaDropCnt,
721  soMMIO_DataDropCnt);
722 
723  //-- Tx Application Interface (TAi) ------------------------------------
725  siTAIF_OpnReq,
726  soTAIF_OpnRep,
727  siTAIF_ClsReq,
728  siTAIF_Data,
729  siTAIF_SndReq,
730  soTAIF_SndRep,
731  soMEM_TxP_WrCmd,
732  soMEM_TxP_Data,
733  siMEM_TxP_WrSts,
734  ssTAiToSTt_SessStateReq,
735  ssSTtToTAi_SessStateRep,
736  ssTAiToSTt_AcceptStateQry, // [FIXME- ReEname ConnectStateQry]
737  ssSTtToTAi_AcceptStateRep,
738  ssTAiToSLc_SessLookupReq,
739  ssSLcToTAi_SessLookupRep,
740  ssTAiToPRt_GetFeePortReq,
741  ssPRtToTAi_GetFreePortRep,
742  ssTStToTAi_PushCmd,
743  ssTAiToTSt_PushCmd,
744  ssRXeToTAi_SessOpnSts,
745  ssTAiToEVe_Event,
746  ssTImToTAi_Notif,
747  piMMIO_IpAddr);
748 
749 
753  //-- Ready signal generator -------------------------------------------
754  pReady(
755  sPRtToRdy_Ready,
756  poNTS_Ready);
757 
758  #if TOE_FEATURE_USED_FOR_DEBUGGING
759  //-- Testbench counter incrementer (for debugging) --------------------
760  pTbSimCount(
761  poSimCycCount);
762  #endif
763 
764 }
765 
766 
812 #if HLS_VERSION == 2017
813  void toe_top(
814  //------------------------------------------------------
815  //-- MMIO Interfaces
816  //------------------------------------------------------
817  Ip4Addr piMMIO_IpAddr,
818  stream<StsBit> &soMMIO_RxMemWrErr,
819  stream<ap_uint<8> > &soMMIO_NotifDropCnt,
820  stream<ap_uint<8> > &soMMIO_MetaDropCnt,
821  stream<ap_uint<8> > &soMMIO_DataDropCnt,
822  stream<ap_uint<8> > &soMMIO_CrcDropCnt,
823  stream<ap_uint<8> > &soMMIO_SessDropCnt,
824  stream<ap_uint<8> > &soMMIO_OooDropCnt,
825  //------------------------------------------------------
826  //-- NTS Interfaces
827  //------------------------------------------------------
828  StsBit &poNTS_Ready,
829  //------------------------------------------------------
830  //-- IPRX / IP Rx / Data Interface
831  //------------------------------------------------------
832  stream<AxisIp4> &siIPRX_Data,
833  //------------------------------------------------------
834  //-- IPTX / IP Tx / Data Interface
835  //------------------------------------------------------
836  stream<AxisIp4> &soIPTX_Data,
837  //------------------------------------------------------
838  //-- TAIF / Rx Data Interfaces
839  //------------------------------------------------------
840  stream<TcpAppNotif> &soTAIF_Notif,
841  stream<TcpAppRdReq> &siTAIF_DReq,
842  stream<TcpAppData> &soTAIF_Data,
843  stream<TcpAppMeta> &soTAIF_Meta,
844  //------------------------------------------------------
845  //-- TAIF / Listen Port Interfaces
846  //------------------------------------------------------
847  stream<TcpAppLsnReq> &siTAIF_LsnReq,
848  stream<TcpAppLsnRep> &soTAIF_LsnRep,
849  //------------------------------------------------------
850  //-- TAIF / Tx Data Interfaces
851  //------------------------------------------------------
852  stream<TcpAppData> &siTAIF_Data,
853  stream<TcpAppSndReq> &siTAIF_SndReq,
854  stream<TcpAppSndRep> &soTAIF_SndRep,
855  //------------------------------------------------------
856  //-- TAIF / Open connection Interfaces
857  //------------------------------------------------------
858  stream<TcpAppOpnReq> &siTAIF_OpnReq,
859  stream<TcpAppOpnRep> &soTAIF_OpnRep,
860  //------------------------------------------------------
861  //-- TAIF / Close Interfaces
862  //------------------------------------------------------
863  stream<TcpAppClsReq> &siTAIF_ClsReq,
864  //-- Not USed &soTAIF_ClsSts,
865  //------------------------------------------------------
866  //-- MEM / Rx PATH / S2MM Interface
867  //------------------------------------------------------
868  //-- Not Used &siMEM_RxP_RdSts,
869  stream<DmCmd> &soMEM_RxP_RdCmd,
870  stream<AxisApp> &siMEM_RxP_Data,
871  stream<DmSts> &siMEM_RxP_WrSts,
872  stream<DmCmd> &soMEM_RxP_WrCmd,
873  stream<AxisApp> &soMEM_RxP_Data,
874  //------------------------------------------------------
875  //-- MEM / Tx PATH / S2MM Interface
876  //------------------------------------------------------
877  //-- Not Used &siMEM_TxP_RdSts,
878  stream<DmCmd> &soMEM_TxP_RdCmd,
879  stream<AxisApp> &siMEM_TxP_Data,
880  stream<DmSts> &siMEM_TxP_WrSts,
881  stream<DmCmd> &soMEM_TxP_WrCmd,
882  stream<AxisApp> &soMEM_TxP_Data,
883  //------------------------------------------------------
884  //-- CAM / Session Lookup & Update Interfaces
885  //------------------------------------------------------
886  stream<CamSessionLookupRequest> &soCAM_SssLkpReq,
887  stream<CamSessionLookupReply> &siCAM_SssLkpRep,
888  stream<CamSessionUpdateRequest> &soCAM_SssUpdReq,
889  stream<CamSessionUpdateReply> &siCAM_SssUpdRep,
890  //------------------------------------------------------
891  //-- DEBUG Interfaces
892  //------------------------------------------------------
893  stream<ap_uint<16> > &soDBG_SssRelCnt,
894  stream<ap_uint<16> > &soDBG_SssRegCnt,
895  stream<RxBufPtr> &soDBG_RxFreeSpace,
896  stream<ap_uint<32> > &soDBG_TcpIpRxByteCnt,
897  stream<ap_uint< 8> > &soDBG_OooDebug
899  ,
900  ap_uint<32> &poSimCycCount
901  #endif
902  )
903 {
904  //-- DIRECTIVES FOR THE INTERFACES -----------------------------------------
905  #pragma HLS INTERFACE ap_ctrl_none port=return
906 
907 
908 
909 
910 
911  //-- MMIO Interfaces
912  #pragma HLS INTERFACE ap_stable port=piMMIO_IpAddr
913  #pragma HLS RESOURCE core=AXI4Stream variable=soMMIO_RxMemWrErr metadata="-bus_bundle soMMIO_RxMemWrErr"
914  #pragma HLS RESOURCE core=AXI4Stream variable=soMMIO_NotifDropCnt metadata="-bus_bundle soMMIO_NotifDropCnt"
915  #pragma HLS RESOURCE core=AXI4Stream variable=soMMIO_MetaDropCnt metadata="-bus_bundle soMMIO_MetaDropCnt"
916  #pragma HLS RESOURCE core=AXI4Stream variable=soMMIO_DataDropCnt metadata="-bus_bundle soMMIO_DataDropCnt"
917  #pragma HLS RESOURCE core=AXI4Stream variable=soMMIO_CrcDropCnt metadata="-bus_bundle soMMIO_CrcDropCnt"
918  #pragma HLS RESOURCE core=AXI4Stream variable=soMMIO_SessDropCnt metadata="-bus_bundle soMMIO_SessDropCnt"
919  #pragma HLS RESOURCE core=AXI4Stream variable=soMMIO_OooDropCnt metadata="-bus_bundle soMMIO_OooDropCnt"
920  //-- NTS Interfaces
921  #pragma HLS INTERFACE ap_none register port=poNTS_Ready
922  //-- IPRX / IP Rx Data Interface ------------------------------------------
923  #pragma HLS RESOURCE core=AXI4Stream variable=siIPRX_Data metadata="-bus_bundle siIPRX_Data"
924  //-- IPTX / IP Tx Data Interface -----------------------------------------
925  #pragma HLS RESOURCE core=AXI4Stream variable=soIPTX_Data metadata="-bus_bundle soIPTX_Data"
926  //-- TAIF / ROLE Rx Data Interfaces ---------------------------------------
927  #pragma HLS RESOURCE core=AXI4Stream variable=siTAIF_DReq metadata="-bus_bundle siTAIF_DReq"
928  #pragma HLS DATA_PACK variable=siTAIF_DReq
929  #pragma HLS RESOURCE core=AXI4Stream variable=soTAIF_Notif metadata="-bus_bundle soTAIF_Notif"
930  #pragma HLS DATA_PACK variable=soTAIF_Notif
931  #pragma HLS RESOURCE core=AXI4Stream variable=soTAIF_Data metadata="-bus_bundle soTAIF_Data"
932  #pragma HLS RESOURCE core=AXI4Stream variable=soTAIF_Meta metadata="-bus_bundle soTAIF_Meta"
933  //-- TAIF / ROLE Rx Listen Interface -------------------------------------
934  #pragma HLS RESOURCE core=AXI4Stream variable=siTAIF_LsnReq metadata="-bus_bundle siTAIF_LsnReq"
935  #pragma HLS RESOURCE core=AXI4Stream variable=soTAIF_LsnRep metadata="-bus_bundle soTAIF_LsnRep"
936  //-- TAIF / ROLE Tx Data Interfaces ---------------------------------------
937  #pragma HLS RESOURCE core=AXI4Stream variable=siTAIF_Data metadata="-bus_bundle siTAIF_Data"
938  #pragma HLS RESOURCE core=AXI4Stream variable=siTAIF_SndReq metadata="-bus_bundle siTAIF_SndReq"
939  #pragma HLS DATA_PACK variable=siTAIF_SndReq
940  #pragma HLS RESOURCE core=AXI4Stream variable=soTAIF_SndRep metadata="-bus_bundle soTAIF_SndRep"
941  #pragma HLS DATA_PACK variable=soTAIF_SndRep
942  //-- TAIF / ROLE Tx Ctrl Interfaces ---------------------------------------
943  #pragma HLS RESOURCE core=AXI4Stream variable=siTAIF_OpnReq metadata="-bus_bundle siTAIF_OpnReq"
944  #pragma HLS DATA_PACK variable=siTAIF_OpnReq
945  #pragma HLS RESOURCE core=AXI4Stream variable=soTAIF_OpnRep metadata="-bus_bundle soTAIF_OpnRep"
946  #pragma HLS DATA_PACK variable=soTAIF_OpnRep
947  #pragma HLS RESOURCE core=AXI4Stream variable=siTAIF_ClsReq metadata="-bus_bundle siTAIF_ClsReq"
948  //-- MEM / Nts0 / RxP Interface -------------------------------------------
949  #pragma HLS RESOURCE core=AXI4Stream variable=soMEM_RxP_RdCmd metadata="-bus_bundle soMEM_RxP_RdCmd"
950  #pragma HLS DATA_PACK variable=soMEM_RxP_RdCmd
951  #pragma HLS RESOURCE core=AXI4Stream variable=siMEM_RxP_Data metadata="-bus_bundle siMEM_RxP_Data"
952  #pragma HLS RESOURCE core=AXI4Stream variable=siMEM_RxP_WrSts metadata="-bus_bundle siMEM_RxP_WrSts"
953  #pragma HLS DATA_PACK variable=siMEM_RxP_WrSts
954  #pragma HLS RESOURCE core=AXI4Stream variable=soMEM_RxP_WrCmd metadata="-bus_bundle soMEM_RxP_WrCmd"
955  #pragma HLS DATA_PACK variable=soMEM_RxP_WrCmd
956  #pragma HLS RESOURCE core=AXI4Stream variable=soMEM_RxP_Data metadata="-bus_bundle soMEM_RxP_Data"
957  //-- MEM / Nts0 / TxP Interface -------------------------------------------
958  #pragma HLS RESOURCE core=AXI4Stream variable=soMEM_TxP_RdCmd metadata="-bus_bundle soMEM_TxP_RdCmd"
959  #pragma HLS DATA_PACK variable=soMEM_TxP_RdCmd
960  #pragma HLS RESOURCE core=AXI4Stream variable=siMEM_TxP_Data metadata="-bus_bundle siMEM_TxP_Data"
961  #pragma HLS RESOURCE core=AXI4Stream variable=siMEM_TxP_WrSts metadata="-bus_bundle siMEM_TxP_WrSts"
962  #pragma HLS DATA_PACK variable=siMEM_TxP_WrSts
963  #pragma HLS RESOURCE core=AXI4Stream variable=soMEM_TxP_WrCmd metadata="-bus_bundle soMEM_TxP_WrCmd"
964  #pragma HLS DATA_PACK variable=soMEM_TxP_WrCmd
965  #pragma HLS RESOURCE core=AXI4Stream variable=soMEM_TxP_Data metadata="-bus_bundle soMEM_TxP_Data"
966  //-- CAM / Session Lookup & Update Interfaces -----------------------------
967  #pragma HLS RESOURCE core=AXI4Stream variable=siCAM_SssLkpRep metadata="-bus_bundle siCAM_SssLkpRep"
968  #pragma HLS DATA_PACK variable=siCAM_SssLkpRep
969  #pragma HLS RESOURCE core=AXI4Stream variable=siCAM_SssUpdRep metadata="-bus_bundle siCAM_SssUpdRep"
970  #pragma HLS DATA_PACK variable=siCAM_SssUpdRep
971  #pragma HLS RESOURCE core=AXI4Stream variable=soCAM_SssLkpReq metadata="-bus_bundle soCAM_SssLkpReq"
972  #pragma HLS DATA_PACK variable=soCAM_SssLkpReq
973  #pragma HLS RESOURCE core=AXI4Stream variable=soCAM_SssUpdReq metadata="-bus_bundle soCAM_SssUpdReq"
974  #pragma HLS DATA_PACK variable=soCAM_SssUpdReq
975  //-- DEBUG Interfaces
976  #pragma HLS RESOURCE core=AXI4Stream variable=soDBG_SssRelCnt metadata="-bus_bundle soDBG_SssRelCnt"
977  #pragma HLS RESOURCE core=AXI4Stream variable=soDBG_SssRegCnt metadata="-bus_bundle soDBG_SssRegCnt"
978  #pragma HLS RESOURCE core=AXI4Stream variable=soDBG_RxFreeSpace metadata="-bus_bundle soDBG_RxFreeSpace"
979  #pragma HLS RESOURCE core=AXI4Stream variable=soDBG_TcpIpRxByteCnt metadata="-bus_bundle soDBG_TcpIpRxByteCnt"
980  #pragma HLS RESOURCE core=AXI4Stream variable=soDBG_OooDebug metadata="-bus_bundle soDBG_OooDebug"
981  //-- DEBUG / Simulation Counter Interfaces
982  #if TOE_FEATURE_USED_FOR_DEBUGGING
983  #pragma HLS INTERFACE ap_none register port=poSimCycCount
984  #endif
985 
986  //-- DIRECTIVES FOR THIS PROCESS -------------------------------------------
987  #pragma HLS DATAFLOW
988 
989  //-- MAIN TOE PROCESS ------------------------------------------------------
990  toe(
991  //-- MMIO Interfaces
992  piMMIO_IpAddr,
993  soMMIO_RxMemWrErr,
994  soMMIO_NotifDropCnt,
995  soMMIO_MetaDropCnt,
996  soMMIO_DataDropCnt,
997  soMMIO_CrcDropCnt,
998  soMMIO_SessDropCnt,
999  soMMIO_OooDropCnt,
1000  //-- NTS Interfaces
1001  poNTS_Ready,
1002  //-- IPRX / IP Rx / Data Interface
1003  siIPRX_Data,
1004  //-- IPTX / IP Tx / Data Interface
1005  soIPTX_Data,
1006  //-- TAIF / Rx Data Interfaces
1007  soTAIF_Notif,
1008  siTAIF_DReq,
1009  soTAIF_Data,
1010  soTAIF_Meta,
1011  //-- TAIF / Listen Port Interfaces
1012  siTAIF_LsnReq,
1013  soTAIF_LsnRep,
1014  //-- TAIF / Tx Data Interfaces
1015  siTAIF_Data,
1016  siTAIF_SndReq,
1017  soTAIF_SndRep,
1018  //-- TAIF / Open connection Interfaces
1019  siTAIF_OpnReq,
1020  soTAIF_OpnRep,
1021  //-- TAIF / Close Interfaces
1022  siTAIF_ClsReq,
1023  //-- Not Used soTAIF_ClsSts,
1024  //-- MEM / Rx PATH / S2MM Interface
1025  //-- Not Used siMEM_RxP_RdSts,
1026  soMEM_RxP_RdCmd,
1027  siMEM_RxP_Data,
1028  siMEM_RxP_WrSts,
1029  soMEM_RxP_WrCmd,
1030  soMEM_RxP_Data,
1031  //-- MEM / Tx PATH / S2MM Interface
1032  //-- Not Used siMEM_TxP_RdSts,
1033  soMEM_TxP_RdCmd,
1034  siMEM_TxP_Data,
1035  siMEM_TxP_WrSts,
1036  soMEM_TxP_WrCmd,
1037  soMEM_TxP_Data,
1038  //-- CAM / Session Lookup & Update Interfaces
1039  soCAM_SssLkpReq,
1040  siCAM_SssLkpRep,
1041  soCAM_SssUpdReq,
1042  siCAM_SssUpdRep,
1043  //-- DEBUG Interfaces
1044  soDBG_SssRelCnt,
1045  soDBG_SssRegCnt,
1046  soDBG_RxFreeSpace,
1047  soDBG_TcpIpRxByteCnt,
1048  soDBG_OooDebug
1050  poSimCycCount
1051  #endif
1052  );
1053 
1054 }
1055 #else
1056  void toe_top(
1057  //------------------------------------------------------
1058  //-- MMIO Interfaces
1059  //------------------------------------------------------
1060  Ip4Addr piMMIO_IpAddr,
1061  stream<StsBit> &soMMIO_RxMemWrErr,
1062  stream<ap_uint<8> > &soMMIO_NotifDropCnt,
1063  stream<ap_uint<8> > &soMMIO_MetaDropCnt,
1064  stream<ap_uint<8> > &soMMIO_DataDropCnt,
1065  stream<ap_uint<8> > &soMMIO_CrcDropCnt,
1066  stream<ap_uint<8> > &soMMIO_SessDropCnt,
1067  stream<ap_uint<8> > &soMMIO_OooDropCnt,
1068  //------------------------------------------------------
1069  //-- NTS Interfaces
1070  //------------------------------------------------------
1071  StsBit &poNTS_Ready,
1072  //------------------------------------------------------
1073  //-- IPRX / IP Rx / Data Interface
1074  //------------------------------------------------------
1075  stream<AxisRaw> &siIPRX_Data,
1076  //------------------------------------------------------
1077  //-- IPTX / IP Tx / Data Interface
1078  //------------------------------------------------------
1079  stream<AxisRaw> &soIPTX_Data,
1080  //------------------------------------------------------
1081  //-- TAIF / Rx Data Interfaces
1082  //------------------------------------------------------
1083  stream<TcpAppNotif> &soTAIF_Notif,
1084  stream<TcpAppRdReq> &siTAIF_DReq,
1085  stream<TcpAppData> &soTAIF_Data,
1086  stream<TcpAppMeta> &soTAIF_Meta,
1087  //------------------------------------------------------
1088  //-- TAIF / Listen Port Interfaces
1089  //------------------------------------------------------
1090  stream<TcpAppLsnReq> &siTAIF_LsnReq,
1091  stream<TcpAppLsnRep> &soTAIF_LsnRep,
1092  //------------------------------------------------------
1093  //-- TAIF / Tx Data Interfaces
1094  //------------------------------------------------------
1095  stream<TcpAppData> &siTAIF_Data,
1096  stream<TcpAppSndReq> &siTAIF_SndReq,
1097  stream<TcpAppSndRep> &soTAIF_SndRep,
1098  //------------------------------------------------------
1099  //-- TAIF / Open connection Interfaces
1100  //------------------------------------------------------
1101  stream<TcpAppOpnReq> &siTAIF_OpnReq,
1102  stream<TcpAppOpnRep> &soTAIF_OpnRep,
1103  //------------------------------------------------------
1104  //-- TAIF / Close Interfaces
1105  //------------------------------------------------------
1106  stream<TcpAppClsReq> &siTAIF_ClsReq,
1107  //-- Not USed &soTAIF_ClsSts,
1108  //------------------------------------------------------
1109  //-- MEM / Rx PATH / S2MM Interface
1110  //------------------------------------------------------
1111  //-- Not Used &siMEM_RxP_RdSts,
1112  stream<DmCmd> &soMEM_RxP_RdCmd,
1113  stream<AxisApp> &siMEM_RxP_Data,
1114  stream<DmSts> &siMEM_RxP_WrSts,
1115  stream<DmCmd> &soMEM_RxP_WrCmd,
1116  stream<AxisApp> &soMEM_RxP_Data,
1117  //------------------------------------------------------
1118  //-- MEM / Tx PATH / S2MM Interface
1119  //------------------------------------------------------
1120  //-- Not Used &siMEM_TxP_RdSts,
1121  stream<DmCmd> &soMEM_TxP_RdCmd,
1122  stream<AxisApp> &siMEM_TxP_Data,
1123  stream<DmSts> &siMEM_TxP_WrSts,
1124  stream<DmCmd> &soMEM_TxP_WrCmd,
1125  stream<AxisApp> &soMEM_TxP_Data,
1126  //------------------------------------------------------
1127  //-- CAM / Session Lookup & Update Interfaces
1128  //------------------------------------------------------
1129  stream<CamSessionLookupRequest> &soCAM_SssLkpReq,
1130  stream<CamSessionLookupReply> &siCAM_SssLkpRep,
1131  stream<CamSessionUpdateRequest> &soCAM_SssUpdReq,
1132  stream<CamSessionUpdateReply> &siCAM_SssUpdRep,
1133  //------------------------------------------------------
1134  //-- DEBUG Interfaces
1135  //------------------------------------------------------
1136  stream<ap_uint<16> > &soDBG_SssRelCnt,
1137  stream<ap_uint<16> > &soDBG_SssRegCnt,
1138  stream<RxBufPtr> &soDBG_RxFreeSpace,
1139  stream<ap_uint<32> > &soDBG_TcpIpRxByteCnt,
1140  stream<ap_uint< 8> > &soDBG_OooDebug
1142  ap_uint<32> &poSimCycCount
1143  #endif
1144  )
1145 {
1146 
1147  //-- DIRECTIVES FOR THE INTERFACES -----------------------------------------
1148  #pragma HLS INTERFACE ap_ctrl_none port=return
1149 
1150  //-- MMIO Interfaces
1151  #pragma HLS INTERFACE ap_stable port=piMMIO_IpAddr name=piMMIO_IpAddr
1152  #pragma HLS INTERFACE axis register both port=soMMIO_RxMemWrErr name=soMMIO_RxMemWrErr
1153  #pragma HLS INTERFACE axis register both port=soMMIO_NotifDropCnt name=soMMIO_NotifDropCnt
1154  #pragma HLS INTERFACE axis register both port=soMMIO_MetaDropCnt name=soMMIO_MetaDropCnt
1155  #pragma HLS INTERFACE axis register both port=soMMIO_DataDropCnt name=soMMIO_DataDropCnt
1156  #pragma HLS INTERFACE axis register both port=soMMIO_CrcDropCnt name=soMMIO_CrcDropCnt
1157  #pragma HLS INTERFACE axis register both port=soMMIO_SessDropCnt name=soMMIO_SessDropCnt
1158  #pragma HLS INTERFACE axis register both port=soMMIO_OooDropCnt name=soMMIO_OooDropCnt
1159  //-- NTS Interfaces
1160  #pragma HLS INTERFACE ap_none register port=poNTS_Ready name=poNTS_Ready
1161  //-- IPRX / IP Rx Data Interface -------------------------------------------
1162  #pragma HLS INTERFACE axis off port=siIPRX_Data name=siIPRX_Data
1163  //-- IPTX / IP Tx Data Interface -------------------------------------------
1164  #pragma HLS INTERFACE axis off port=soIPTX_Data name=soIPTX_Data
1165  //-- TAIF / ROLE Rx Data Interfaces ----------------------------------------
1166  #pragma HLS INTERFACE axis off port=siTAIF_DReq name=siTAIF_DReq
1167  #pragma HLS DATA_PACK variable=siTAIF_DReq
1168  #pragma HLS INTERFACE axis off port=soTAIF_Notif name=soTAIF_Notif
1169  #pragma HLS DATA_PACK variable=soTAIF_Notif
1170  #pragma HLS INTERFACE axis off port=soTAIF_Data name=soTAIF_Data
1171  #pragma HLS INTERFACE axis off port=soTAIF_Meta name=soTAIF_Meta
1172  //-- TAIF / ROLE Rx Listen Interface ---------------------------------------
1173  #pragma HLS INTERFACE axis off port=siTAIF_LsnReq name=siTAIF_LsnReq
1174  #pragma HLS INTERFACE axis off port=soTAIF_LsnRep name=soTAIF_LsnRep
1175  //-- TAIF / ROLE Tx Data Interfaces ----------------------------------------
1176  #pragma HLS INTERFACE axis off port=siTAIF_Data name=siTAIF_Data
1177  #pragma HLS INTERFACE axis off port=siTAIF_SndReq name=siTAIF_SndReq
1178  #pragma HLS DATA_PACK variable=siTAIF_SndReq
1179  #pragma HLS INTERFACE axis off port=soTAIF_SndRep name=soTAIF_SndRep
1180  #pragma HLS DATA_PACK variable=soTAIF_SndRep
1181  //-- TAIF / ROLE Tx Ctrl Interfaces ----------------------------------------
1182  #pragma HLS INTERFACE axis off port=siTAIF_OpnReq name=siTAIF_OpnReq
1183  #pragma HLS DATA_PACK variable=siTAIF_OpnReq
1184  #pragma HLS INTERFACE axis off port=soTAIF_OpnRep name=soTAIF_OpnRep
1185  #pragma HLS DATA_PACK variable=soTAIF_OpnRep
1186  #pragma HLS INTERFACE axis off port=siTAIF_ClsReq name=siTAIF_ClsReq
1187  //-- MEM / Nts0 / RxP Interface --------------------------------------------
1188  #pragma HLS INTERFACE axis off port=soMEM_RxP_RdCmd name=soMEM_RxP_RdCmd
1189  #pragma HLS DATA_PACK variable=soMEM_RxP_RdCmd
1190  #pragma HLS INTERFACE axis off port=siMEM_RxP_Data name=siMEM_RxP_Data
1191  #pragma HLS INTERFACE axis off port=siMEM_RxP_WrSts name=siMEM_RxP_WrSts
1192  #pragma HLS DATA_PACK variable=siMEM_RxP_WrSts
1193  #pragma HLS INTERFACE axis off port=soMEM_RxP_WrCmd name=soMEM_RxP_WrCmd
1194  #pragma HLS DATA_PACK variable=soMEM_RxP_WrCmd
1195  #pragma HLS INTERFACE axis off port=soMEM_RxP_Data name=soMEM_RxP_Data
1196  //-- MEM / Nts0 / TxP Interface --------------------------------------------
1197  #pragma HLS INTERFACE axis off port=soMEM_TxP_RdCmd name=soMEM_TxP_RdCmd
1198  #pragma HLS DATA_PACK variable=soMEM_TxP_RdCmd
1199  #pragma HLS INTERFACE axis off port=siMEM_TxP_Data name=siMEM_TxP_Data
1200  #pragma HLS INTERFACE axis off port=siMEM_TxP_WrSts name=siMEM_TxP_WrSts
1201  #pragma HLS DATA_PACK variable=siMEM_TxP_WrSts
1202  #pragma HLS INTERFACE axis off port=soMEM_TxP_WrCmd name=soMEM_TxP_WrCmd
1203  #pragma HLS DATA_PACK variable=soMEM_TxP_WrCmd
1204  #pragma HLS INTERFACE axis off port=soMEM_TxP_Data name=soMEM_TxP_Data
1205  //-- CAM / Session Lookup & Update Interfaces ------------------------------
1206  #pragma HLS INTERFACE axis register both port=soCAM_SssLkpReq name=soCAM_SssLkpReq
1207  #pragma HLS DATA_PACK variable=soCAM_SssLkpReq
1208  #pragma HLS INTERFACE axis off port=siCAM_SssLkpRep name=siCAM_SssLkpRep
1209  #pragma HLS DATA_PACK variable=siCAM_SssLkpRep
1210  #pragma HLS INTERFACE axis register both port=soCAM_SssUpdReq name=soCAM_SssUpdReq
1211  #pragma HLS DATA_PACK variable=soCAM_SssUpdReq
1212  #pragma HLS INTERFACE axis off port=siCAM_SssUpdRep name=siCAM_SssUpdRep
1213  #pragma HLS DATA_PACK variable=siCAM_SssUpdRep
1214  //-- DEBUG Interfaces
1215  #pragma HLS INTERFACE axis register both port=soDBG_SssRelCnt name=soDBG_SssRelCnt
1216  #pragma HLS INTERFACE axis register both port=soDBG_SssRegCnt name=soDBG_SssRegCnt
1217  #pragma HLS INTERFACE axis register both port=soDBG_RxFreeSpace name=soDBG_RxFreeSpace
1218  #pragma HLS INTERFACE axis register both port=soDBG_TcpIpRxByteCnt name=soDBG_TcpIpRxByteCnt
1219  #pragma HLS INTERFACE axis register both port=soDBG_OooDebug name=soDBG_OooDebug
1220  //-- DEBUG / Simulation Counter Interfaces
1221  #if TOE_FEATURE_USED_FOR_DEBUGGING
1222  #pragma HLS INTERFACE ap_ovld register port=poSimCycCount name=poSimCycCount
1223  #endif
1224 
1225  //-- DIRECTIVES FOR THIS PROCESS -------------------------------------------
1226  #pragma HLS DATAFLOW disable_start_propagation
1227 
1228  //-- LOCAL INPUT and OUTPUT STREAMS ----------------------------------------
1229  static stream<AxisIp4> ssiIPRX_Data ("ssiIPRX_Data");
1230  static stream<AxisIp4> ssoIPTX_Data ("ssoIPTX_Data");
1231 
1232  //-- INPUT STREAM CASTING --------------------------------------------------
1233  pAxisRawCast(siIPRX_Data, ssiIPRX_Data);
1234 
1235  //-- MAIN TOE PROCESS ------------------------------------------------------
1236  toe(
1237  //-- MMIO Interfaces
1238  piMMIO_IpAddr,
1239  soMMIO_RxMemWrErr,
1240  soMMIO_NotifDropCnt,
1241  soMMIO_MetaDropCnt,
1242  soMMIO_DataDropCnt,
1243  soMMIO_CrcDropCnt,
1244  soMMIO_SessDropCnt,
1245  soMMIO_OooDropCnt,
1246  //-- NTS Interfaces
1247  poNTS_Ready,
1248  //-- IPRX / IP Rx / Data Interface
1249  ssiIPRX_Data,
1250  //-- IPTX / IP Tx / Data Interface
1251  ssoIPTX_Data,
1252  //-- TAIF / Rx Data Interfaces
1253  soTAIF_Notif,
1254  siTAIF_DReq,
1255  soTAIF_Data,
1256  soTAIF_Meta,
1257  //-- TAIF / Listen Port Interfaces
1258  siTAIF_LsnReq,
1259  soTAIF_LsnRep,
1260  //-- TAIF / Tx Data Interfaces
1261  siTAIF_Data,
1262  siTAIF_SndReq,
1263  soTAIF_SndRep,
1264  //-- TAIF / Open connection Interfaces
1265  siTAIF_OpnReq,
1266  soTAIF_OpnRep,
1267  //-- TAIF / Close Interfaces
1268  siTAIF_ClsReq,
1269  //-- Not Used soTAIF_ClsSts,
1270  //-- MEM / Rx PATH / S2MM Interface
1271  //-- Not Used siMEM_RxP_RdSts,
1272  soMEM_RxP_RdCmd,
1273  siMEM_RxP_Data,
1274  siMEM_RxP_WrSts,
1275  soMEM_RxP_WrCmd,
1276  soMEM_RxP_Data,
1277  //-- MEM / Tx PATH / S2MM Interface
1278  //-- Not Used siMEM_TxP_RdSts,
1279  soMEM_TxP_RdCmd,
1280  siMEM_TxP_Data,
1281  siMEM_TxP_WrSts,
1282  soMEM_TxP_WrCmd,
1283  soMEM_TxP_Data,
1284  //-- CAM / Session Lookup & Update Interfaces
1285  soCAM_SssLkpReq,
1286  siCAM_SssLkpRep,
1287  soCAM_SssUpdReq,
1288  siCAM_SssUpdRep,
1289  //-- DEBUG Interfaces
1290  soDBG_SssRelCnt,
1291  soDBG_SssRegCnt,
1292  soDBG_RxFreeSpace,
1293  soDBG_TcpIpRxByteCnt,
1294  soDBG_OooDebug
1296  poSimCycCount
1297  #endif
1298  );
1299 
1300  //-- OUTPUT STREAM CASTING -------------------------------------------------
1301  pAxisRawCast(ssoIPTX_Data, soIPTX_Data);
1302 
1303 }
1304 #endif // HLS_VERSION
1305 
: ACK Delayer (AKd) of the TCP Offload Engine (TOE)
: Event Engine (EVe) of the TCP Offload Engine (TOE)
bool StsBool
Definition: nal.hpp:246
void pStreamMux(stream< T > &si1, stream< T > &si2, stream< T > &so)
A 2-to-1 generic Stream Multiplexer.
Definition: timers.cpp:90
void rx_engine(stream< AxisIp4 > &siIPRX_Data, stream< SessionLookupQuery > &soSLc_SessLkReq, stream< SessionLookupReply > &siSLc_SessLkRep, stream< StateQuery > &soSTt_StateQry, stream< TcpState > &siSTt_StateRep, stream< TcpPort > &soPRt_PortStateReq, stream< RepBit > &siPRt_PortStateRep, stream< RXeRxSarQuery > &soRSt_RxSarQry, stream< RxSarReply > &siRSt_RxSarRep, stream< RXeTxSarQuery > &soTSt_TxSarQry, stream< RXeTxSarReply > &siTSt_TxSarRep, stream< RXeReTransTimerCmd > &soTIm_ReTxTimerCmd, stream< SessionId > &soTIm_ClearProbeTimer, stream< SessionId > &soTIm_CloseTimer, stream< ExtendedEvent > &soEVe_SetEvent, stream< SessState > &soTAi_SessOpnSts, stream< TcpAppNotif > &soRAi_RxNotif, stream< DmCmd > &soMEM_WrCmd, stream< AxisApp > &soMEM_WrData, stream< DmSts > &siMEM_WrSts, stream< StsBit > &soMMIO_RxMemWrErr, stream< ap_uint< 8 > > &soMMIO_CrcDropCnt, stream< ap_uint< 8 > > &soMMIO_SessDropCnt, stream< ap_uint< 8 > > &soMMIO_OooDropCnt, stream< RxBufPtr > &soDBG_RxFreeSpace, stream< ap_uint< 32 > > &soDBG_TcpIpRxByteCnt, stream< ap_uint< 8 > > &soDBG_OooDebug)
Receive Engine (RXe)
Definition: rx_engine.cpp:2000
void toe(Ip4Addr piMMIO_IpAddr, stream< StsBit > &soMMIO_RxMemWrErr, stream< ap_uint< 8 > > &soMMIO_NotifDropCnt, stream< ap_uint< 8 > > &soMMIO_MetaDropCnt, stream< ap_uint< 8 > > &soMMIO_DataDropCnt, stream< ap_uint< 8 > > &soMMIO_CrcDropCnt, stream< ap_uint< 8 > > &soMMIO_SessDropCnt, stream< ap_uint< 8 > > &soMMIO_OooDropCnt, StsBit &poNTS_Ready, stream< AxisIp4 > &siIPRX_Data, stream< AxisIp4 > &soIPTX_Data, stream< TcpAppNotif > &soTAIF_Notif, stream< TcpAppRdReq > &siTAIF_DReq, stream< TcpAppData > &soTAIF_Data, stream< TcpAppMeta > &soTAIF_Meta, stream< TcpAppLsnReq > &siTAIF_LsnReq, stream< TcpAppLsnRep > &soTAIF_LsnRep, stream< TcpAppData > &siTAIF_Data, stream< TcpAppSndReq > &siTAIF_SndReq, stream< TcpAppSndRep > &soTAIF_SndRep, stream< TcpAppOpnReq > &siTAIF_OpnReq, stream< TcpAppOpnRep > &soTAIF_OpnRep, stream< TcpAppClsReq > &siTAIF_ClsReq, stream< DmCmd > &soMEM_RxP_RdCmd, stream< AxisApp > &siMEM_RxP_Data, stream< DmSts > &siMEM_RxP_WrSts, stream< DmCmd > &soMEM_RxP_WrCmd, stream< AxisApp > &soMEM_RxP_Data, stream< DmCmd > &soMEM_TxP_RdCmd, stream< AxisApp > &siMEM_TxP_Data, stream< DmSts > &siMEM_TxP_WrSts, stream< DmCmd > &soMEM_TxP_WrCmd, stream< AxisApp > &soMEM_TxP_Data, stream< CamSessionLookupRequest > &soCAM_SssLkpReq, stream< CamSessionLookupReply > &siCAM_SssLkpRep, stream< CamSessionUpdateRequest > &soCAM_SssUpdReq, stream< CamSessionUpdateReply > &siCAM_SssUpdRep, stream< ap_uint< 16 > > &soDBG_SssRelCnt, stream< ap_uint< 16 > > &soDBG_SssRegCnt, stream< RxBufPtr > &soDBG_RxFreeSpace, stream< ap_uint< 32 > > &soDBG_TcpIpRxByteCnt, stream< ap_uint< 8 > > &soDBG_OooDebug)
Main process of the TCP Offload Engine (TOE0.
Definition: toe.cpp:231
void rx_sar_table(stream< RXeRxSarQuery > &siRXe_RxSarQry, stream< RxSarReply > &soRXe_RxSarRep, stream< RAiRxSarQuery > &siRAi_RxSarQry, stream< RAiRxSarReply > &soRAi_RxSarRep, stream< SessionId > &siTXe_RxSarReq, stream< RxSarReply > &soTxe_RxSarRep)
Rx SAR Table (RSt)
void ack_delay(stream< ExtendedEvent > &siEVe_Event, stream< SigBit > &soEVe_RxEventSig, stream< SigBit > &soEVe_TxEventSig, stream< ExtendedEvent > &soTXe_Event)
ACK Delayer (AKd)
Definition: ack_delay.cpp:95
void session_lookup_controller(stream< SessionLookupQuery > &siRXe_SessLookupReq, stream< SessionLookupReply > &soRXe_SessLookupRep, stream< SessionId > &siSTt_SessReleaseCmd, stream< TcpPort > &soPRt_ClosePortCmd, stream< SocketPair > &siTAi_SessLookupReq, stream< SessionLookupReply > &soTAi_SessLookupRep, stream< SessionId > &siTXe_ReverseLkpReq, stream< fourTuple > &soTXe_ReverseLkpRep, stream< CamSessionLookupRequest > &soCAM_SessLookupReq, stream< CamSessionLookupReply > &siCAM_SessLookupRep, stream< CamSessionUpdateRequest > &soCAM_SessUpdateReq, stream< CamSessionUpdateReply > &siCAM_SessUpdateRep, stream< ap_uint< 16 > > &soSssRelCnt, stream< ap_uint< 16 > > &soSssRegCnt)
Session Lookup Controller (SLc)
void timers(stream< RXeReTransTimerCmd > &siRXe_ReTxTimerCmd, stream< SessionId > &siRXe_ClrProbeTimer, stream< SessionId > &siRXe_CloseTimer, stream< TXeReTransTimerCmd > &siTXe_ReTxTimerCmd, stream< SessionId > &siTXe_SetProbeTimer, stream< SessionId > &soSTt_SessCloseCmd, stream< Event > &soEVe_Event, stream< SessState > &soTAi_Notif, stream< TcpAppNotif > &soRAi_Notif)
The Timers (TIm)
Definition: timers.cpp:505
void tx_sar_table(stream< RXeTxSarQuery > &siRXe_TxSarQry, stream< RXeTxSarReply > &soRXe_TxSarRep, stream< TXeTxSarQuery > &siTXe_TxSarQry, stream< TXeTxSarReply > &soTXe_TxSarRep, stream< TAiTxSarPush > &siTAi_PushCmd, stream< TStTxSarPush > &soTAi_PushCmd)
Tx Sar Table (TSt). Stores the data structures for managing the TCP Tx buffer and Tx sliding window.
void tx_app_interface(stream< TcpAppOpnReq > &siTAIF_OpnReq, stream< TcpAppOpnRep > &soTAIF_OpnRep, stream< TcpAppClsReq > &siTAIF_ClsReq, stream< TcpAppData > &siTAIF_Data, stream< TcpAppSndReq > &siTAIF_SndReq, stream< TcpAppSndRep > &soTAIF_SndRep, stream< DmCmd > &soMEM_TxP_WrCmd, stream< AxisApp > &soMEM_TxP_Data, stream< DmSts > &siMEM_TxP_WrSts, stream< SessionId > &soSTt_SessStateReq, stream< TcpState > &siSTt_SessStateRep, stream< StateQuery > &soSTt_ConnectStateQry, stream< TcpState > &siSTt_ConnectStateRep, stream< SocketPair > &soSLc_SessLookupReq, stream< SessionLookupReply > &siSLc_SessLookupRep, stream< ReqBit > &soPRt_GetFreePortReq, stream< TcpPort > &siPRt_GetFreePortRep, stream< TStTxSarPush > &siTSt_PushCmd, stream< TAiTxSarPush > &soTSt_PushCmd, stream< SessState > &siRXe_ActSessState, stream< Event > &soEVe_Event, stream< SessState > &siTIm_Notif, Ip4Addr piMMIO_IpAddr)
Tx Application Interface (TAi)
void port_table(StsBool &poTOE_Ready, stream< TcpPort > &siRXe_GetPortStateReq, stream< RepBit > &soRXe_GetPortStateRep, stream< TcpPort > &siRAi_OpenLsnPortReq, stream< AckBit > &soRAi_OpenLsnPortAck, stream< ReqBit > &siTAi_GetFreePortReq, stream< TcpPort > &soTAi_GetFreePortRep, stream< TcpPort > &siSLc_CloseActPortCmd)
Port Table (PRt)
Definition: port_table.cpp:453
void state_table(stream< StateQuery > &siRXe_SessStateQry, stream< TcpState > &soRXe_SessStateRep, stream< StateQuery > &siTAi_ConnectStateQry, stream< TcpState > &soTAi_ConnectStateRep, stream< SessionId > &siTAi_StreamStateReq, stream< TcpState > &soTAi_StreamStateRep, stream< SessionId > &siTIm_SessCloseCmd, stream< SessionId > &soSLc_SessReleaseCmd)
State Table (STt)
Definition: state_table.cpp:99
void event_engine(stream< Event > &siTAi_Event, stream< ExtendedEvent > &siRXe_Event, stream< Event > &siTIm_Event, stream< ExtendedEvent > &soAKd_Event, stream< SigBit > &siAKd_RxEventSig, stream< SigBit > &siAKd_TxEventSig, stream< SigBit > &siTXe_RxEventSig)
The Event Engine (EVe) arbitrates the incoming events and forwards them to the Tx Engine (TXe) via th...
#define TRACE_RDY
Definition: toe.cpp:89
bool gTraceEvent
Definition: tb_nal.cpp:151
void pReady(StsBool &piPRt_Ready, StsBit &poNTS_Ready)
Ready (Rdy)
Definition: toe.cpp:133
#define THIS_NAME
Definition: toe.cpp:86
#define TOE_FEATURE_USED_FOR_DEBUGGING
Definition: toe.hpp:103
void toe_top(Ip4Addr piMMIO_IpAddr, stream< StsBit > &soMMIO_RxMemWrErr, stream< ap_uint< 8 > > &soMMIO_NotifDropCnt, stream< ap_uint< 8 > > &soMMIO_MetaDropCnt, stream< ap_uint< 8 > > &soMMIO_DataDropCnt, stream< ap_uint< 8 > > &soMMIO_CrcDropCnt, stream< ap_uint< 8 > > &soMMIO_SessDropCnt, stream< ap_uint< 8 > > &soMMIO_OooDropCnt, StsBit &poNTS_Ready, stream< AxisRaw > &siIPRX_Data, stream< AxisRaw > &soIPTX_Data, stream< TcpAppNotif > &soTAIF_Notif, stream< TcpAppRdReq > &siTAIF_DReq, stream< TcpAppData > &soTAIF_Data, stream< TcpAppMeta > &soTAIF_Meta, stream< TcpAppLsnReq > &siTAIF_LsnReq, stream< TcpAppLsnRep > &soTAIF_LsnRep, stream< TcpAppData > &siTAIF_Data, stream< TcpAppSndReq > &siTAIF_SndReq, stream< TcpAppSndRep > &soTAIF_SndRep, stream< TcpAppOpnReq > &siTAIF_OpnReq, stream< TcpAppOpnRep > &soTAIF_OpnRep, stream< TcpAppClsReq > &siTAIF_ClsReq, stream< DmCmd > &soMEM_RxP_RdCmd, stream< AxisApp > &siMEM_RxP_Data, stream< DmSts > &siMEM_RxP_WrSts, stream< DmCmd > &soMEM_RxP_WrCmd, stream< AxisApp > &soMEM_RxP_Data, stream< DmCmd > &soMEM_TxP_RdCmd, stream< AxisApp > &siMEM_TxP_Data, stream< DmSts > &siMEM_TxP_WrSts, stream< DmCmd > &soMEM_TxP_WrCmd, stream< AxisApp > &soMEM_TxP_Data, stream< CamSessionLookupRequest > &soCAM_SssLkpReq, stream< CamSessionLookupReply > &siCAM_SssLkpRep, stream< CamSessionUpdateRequest > &soCAM_SssUpdReq, stream< CamSessionUpdateReply > &siCAM_SssUpdRep, stream< ap_uint< 16 > > &soDBG_SssRelCnt, stream< ap_uint< 16 > > &soDBG_SssRegCnt, stream< RxBufPtr > &soDBG_RxFreeSpace, stream< ap_uint< 32 > > &soDBG_TcpIpRxByteCnt, stream< ap_uint< 8 > > &soDBG_OooDebug)
Top of TCP Offload Engine (TOE)
Definition: toe.cpp:1056
void rx_app_interface(stream< TcpAppNotif > &soTAIF_Notif, stream< TcpAppRdReq > &siTAIF_DataReq, stream< TcpAppData > &soTAIF_Data, stream< TcpAppMeta > &soTAIF_Meta, stream< TcpAppLsnReq > &siTAIF_LsnReq, stream< TcpAppLsnRep > &soTAIF_LsnRep, stream< TcpPort > &soPRt_LsnReq, stream< AckBit > &siPRt_LsnAck, stream< TcpAppNotif > &siRXe_Notif, stream< TcpAppNotif > &siTIm_Notif, stream< RAiRxSarQuery > &soRSt_RxSarReq, stream< RAiRxSarReply > &siRSt_RxSarRep, stream< DmCmd > &soMEM_RxP_RdCmd, stream< AxisApp > &siMEM_RxP_Data, stream< ap_uint< 8 > > &soMMIO_NotifDropCnt, stream< ap_uint< 8 > > &soMMIO_MetaDropCnt, stream< ap_uint< 8 > > &soMMIO_DataDropCnt)
Rx Application Interface (RAi)
void tx_engine(stream< ExtendedEvent > &siAKd_Event, stream< SigBit > &soEVe_RxEventSig, stream< SessionId > &soRSt_RxSarReq, stream< RxSarReply > &siRSt_RxSarRep, stream< TXeTxSarQuery > &soTSt_TxSarQry, stream< TXeTxSarReply > &siTSt_TxSarRep, stream< DmCmd > &soMEM_Txp_RdCmd, stream< AxisApp > &siMEM_TxP_Data, stream< TXeReTransTimerCmd > &soTIm_ReTxTimerCmd, stream< SessionId > &soTIm_SetProbeTimer, stream< SessionId > &soSLc_ReverseLkpReq, stream< fourTuple > &siSLc_ReverseLkpRep, stream< AxisIp4 > &soIPTX_Data)
Transmit Engine (TXe)
Definition: tx_engine.cpp:1517
#define DEBUG_LEVEL
Definition: toe.cpp:92
void pTbSimCount(volatile ap_uint< 32 > &poSimCycCount)
Testbench Simulation Counter.
Definition: toe.cpp:156
ap_uint< 1 > StsBit
Definition: nts_types.hpp:116
ap_uint< 32 > Ip4Addr
Definition: AxisIp4.hpp:169
void pAxisRawCast(hls::stream< TypeIn > &si, hls::stream< TypeOut > &so)
AxisRaw cast - Casts an AxisRaw stream to/from an AxisRaw derived class.
Definition: AxisRaw.hpp:148
#define printInfo(callerName, format,...)
A macro to print an information message.
Definition: nts_utils.hpp:169
#define concat3(firstCharConst, secondCharConst, thirdCharConst)
Definition: nts_utils.hpp:161
: Port Table (PRt) of the TCP Offload Engine (TOE)
: Rx Application Interface (RAi) of the TCP Offload Engine (TOE)
: Rx Engine (RXe) of the TCP Offload Engine (TOE)
: Rx Segmentation And Re-assembly Table (RSt).
: State Table (STt) for the TCP Offload Engine (TOE)
: Timers (TIm) for the TCP Offload Engine (TOE)
: TCP Offload Engine (TOE)
: Utilities and helpers for the TCP Offload Engine (TOE)
: Tx Application Interface (TAi)
: Tx Engine (TXe) of the TCP Offload Engine (TOE)
: Tx Segmentation and re-assembly Table (TSt)