cloudFPGA (cF) API  1.0
The documentation of the source code of cloudFPGA (cF)
fmc.cpp File Reference

: More...

#include <stdio.h>
#include <stdint.h>
#include <assert.h>
#include "ap_int.h"
#include "ap_utils.h"
#include "fmc.hpp"
#include "http.hpp"
Include dependency graph for fmc.cpp:

Go to the source code of this file.

Functions

stream< uint8_t > internal_icap_fifo ("sInternalIcapFifo")
 
stream< uint8_t > icap_hangover_fifo ("sIcapHangoverFifo")
 
uint8_t bytesToPages (int len, bool update_global_variables)
 
void copyOutBuffer (ap_uint< 4 > numberOfPages, ap_uint< 32 > xmem[(32 *16)])
 
void emptyInBuffer ()
 
void emptyOutBuffer ()
 
uint32_t writeDisplaysToOutBuffer ()
 
void setRank (ap_uint< 32 > newRank)
 
void setSize (ap_uint< 32 > newSize)
 
ap_uint< 4 > copyAndCheckBurst (ap_uint< 32 > xmem[(32 *16)], ap_uint< 4 > ExpCnt, ap_uint< 7 > lastPageCnt_in)
 
void fmc (ap_uint< 32 > *MMIO_in, ap_uint< 32 > *MMIO_out, ap_uint< 1 > *layer_4_enabled, ap_uint< 1 > *layer_6_enabled, ap_uint< 1 > *layer_7_enabled, ap_uint< 1 > *nts_ready, ap_uint< 32 > *in_time_seconds, ap_uint< 32 > *in_time_minutes, ap_uint< 32 > *in_time_hours, ap_uint< 16 > *role_mmio_in, ap_uint< 16 > *uoe_drop_cnt_in, ap_uint< 8 > *toe_notif_drop_cnt_in, ap_uint< 8 > *toe_meta_drop_cnt_in, ap_uint< 8 > *toe_data_drop_cnt_in, ap_uint< 8 > *toe_crc_drop_cnt_in, ap_uint< 8 > *toe_sess_drop_cnt_in, ap_uint< 8 > *toe_ooo_drop_cnt_in, ap_uint< 32 > *HWICAP, ap_uint< 1 > decoupStatus, ap_uint< 1 > *setDecoup, ap_uint< 1 > *setSoftReset, ap_uint< 32 > xmem[(32 *16)], ap_uint< 32 > nalCtrl[(0x3ff/4)], ap_uint< 1 > *disable_ctrl_link, stream< TcpWord > &siNAL_Tcp_data, stream< AppMeta > &siNAL_Tcp_SessId, stream< TcpWord > &soNAL_Tcp_data, stream< AppMeta > &soNAL_Tcp_SessId, ap_uint< 32 > *role_rank, ap_uint< 32 > *cluster_size)
 

Variables

ap_uint< 8 > writeErrCnt = 0
 
ap_uint< 8 > fifoEmptyCnt = 0
 
ap_uint< 8 > fifoFullCnt = 0
 
ap_uint< 4 > xmem_page_trans_cnt = 0xF
 
uint8_t fsmHwicap = 0
 
bool fifo_operation_in_progress = false
 
uint8_t fifo_overflow_buffer [8]
 
bool process_fifo_overflow_buffer = false
 
uint8_t fifo_overflow_buffer_length = 8
 
uint8_t bufferIn [4096]
 
uint32_t bufferInPtrWrite = 0x0
 
uint32_t bufferInPtrMaxWrite = 0x0
 
uint32_t lastSeenBufferInPtrMaxWrite = 0x0
 
uint32_t bufferInPtrNextRead = 0x0
 
bool tcp_write_only_fifo = false
 
uint8_t bufferOut [1024]
 
uint16_t bufferOutPtrWrite = 0x0
 
uint16_t bufferOutContentLength = 0x0
 
uint16_t bufferOutPtrNextRead = 0x0
 
uint16_t lastSeenBufferOutPtrNextRead = 0x0
 
bool use_sequential_hwicap = false
 
uint32_t sequential_hwicap_address = 0
 
uint8_t httpState = 0
 
ap_uint< 32 > Display1 = 0
 
ap_uint< 32 > Display2 = 0
 
ap_uint< 32 > Display3 = 0
 
ap_uint< 32 > Display4 = 0
 
ap_uint< 32 > Display5 = 0
 
ap_uint< 32 > Display6 = 0
 
ap_uint< 32 > Display7 = 0
 
ap_uint< 32 > Display8 = 0
 
ap_uint< 32 > Display9 = 0
 
ap_uint< 28 > wordsWrittenToIcapCnt = 0
 
ap_uint< 28 > tcp_words_received = 0
 
ap_uint< 32 > nodeRank = 0
 
ap_uint< 32 > clusterSize = 0
 
ap_uint< 1 > toDecoup_persistent = 0
 
ap_uint< 8 > nal_status_request_cnt = 0
 
ap_uint< 32 > nal_status [16]
 
bool nal_status_disabled = false
 
ap_uint< 8 > fpga_status [8]
 
ap_uint< 32 > ctrl_link_next_check_seconds = 0
 
ap_uint< 32 > mrt_copy_index = 0
 
ap_uint< 16 > current_role_mmio = 0
 
ap_uint< 32 > fpga_time_seconds = 0
 
ap_uint< 32 > fpga_time_minutes = 0
 
ap_uint< 32 > fpga_time_hours = 0
 
ap_uint< 16 > nts_udp_drop_cnt = 0
 
ap_uint< 8 > nts_tcp_notif_drop_cnt = 0
 
ap_uint< 8 > nts_tcp_meta_drop_cnt = 0
 
ap_uint< 8 > nts_tcp_data_drop_cnt = 0
 
ap_uint< 8 > nts_tcp_crc_drop_cnt = 0
 
ap_uint< 8 > nts_tcp_sess_drop_cnt = 0
 
ap_uint< 8 > nts_tcp_ooo_drop_cnt = 0
 
ap_uint< 7 > lastResponsePageCnt = 0
 
ap_uint< 4 > responePageCnt = 0
 
uint8_t currentGlobalOperation = 0
 
bool streaming_mode_persistent = false
 
bool transferError_persistent = false
 
bool invalidPayload_persistent = false
 
bool globalOperationDone_persistent = false
 
bool axi_wasnot_ready_persistent = false
 
ap_uint< 32 > global_state_wait_counter_persistent = 0
 
AppMeta currentTcpSessId = 0
 
bool TcpSessId_updated_persistent = false
 
ap_uint< 1 > tcpModeEnabled = 0
 
uint8_t tcp_iteration_count = 0
 
ap_uint< 1 > flag_check_xmem_pattern = 0
 
ap_uint< 1 > flag_silent_skip = 0
 
ap_uint< 1 > last_xmem_page_received_persistent = 0
 
ap_uint< 1 > flag_continuous_tcp_rx = 0
 
ap_uint< 1 > flag_enable_fake_hwicap = 0
 
uint8_t fsmTcpSessId_RX = 0
 
uint8_t fsmTcpSessId_TX = 0
 
uint8_t fsmTcpData_RX = 0
 
uint8_t fsmTcpData_TX = 0
 
bool run_nested_loop_helper = false
 
bool goto_done_if_idle_tcp_rx = false
 
ap_uint< 4 > received_TCP_SessIds_cnt = 0
 
uint8_t last_3_chars [3]
 
ap_uint< 2 > detected_http_nl_cnt = 0
 
ap_uint< 2 > target_http_nl_cnt = 0
 
uint32_t positions_of_detected_http_nl [4]
 
uint8_t buffer_hangover_bytes [3]
 
bool hwicap_hangover_present = true
 
uint8_t hwicap_hangover_size = 0
 
bool tables_initialized = false
 
ap_uint< 32 > current_MRT [64]
 
ap_uint< 32 > current_nrc_config [16]
 
ap_uint< 32 > current_nrc_mrt_version = 0
 
bool need_to_update_nrc_mrt = false
 
bool need_to_update_nrc_config = false
 
uint8_t linkCtrlFSM = 1
 
ap_uint< 32 > max_discovered_node_id = 0
 

Detailed Description

:

Copyright 2016 – 2021 IBM Corporation

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

System: : cloudFPGA Component : Shell, FPGA Management Core (FMC) Language : Vivado HLS

Definition in file fmc.cpp.