working read retrans

This commit is contained in:
Tsz Wing Kwok 2022-11-21 22:08:42 +01:00
parent be1f14c867
commit 12478f220f
5 changed files with 21 additions and 17 deletions

View File

@ -212,7 +212,7 @@ void rx_process_exh(
if (!input.empty())
{
input.read(currWord);
std::cout << "[RX PROCESS EXH" << INSTID << "]: EXH NO HEADER" << std::endl;
std::cout << "[RX PROCESS EXH " << INSTID << "]: EXH NO HEADER" << std::endl;
#ifdef DBG_FULL
std::cout << "\t";
print(std::cout, currWord);
@ -333,8 +333,9 @@ void rx_ibh_fsm(
#if RETRANS_EN
//CASE Requester: Update oldest-unacked-reqeust
if (isResponse && !emeta.isNak)
if (isResponse && !emeta.isNak && meta.op_code != RC_RDMA_READ_RESP_FIRST && meta.op_code != RC_RDMA_READ_RESP_MIDDLE)
{
// TODO: not clear for READ_RESP_FIRST
std::cout << std::hex <<"[RX IBH FSM " << INSTID << "]: retrans release, psn " << meta.psn << std::endl;
rx2retrans_release_upd.write(retransRelease(meta.dest_qp, meta.psn));
}
@ -1633,7 +1634,7 @@ void generate_exh(
packetInfoFifo.write(info);
sendWord.keep((AETH_SIZE/8)-1, 0) = 0xFF;
sendWord.keep(WIDTH-1, (AETH_SIZE/8)) = 0;
sendWord.keep(WIDTH/8 -1, (AETH_SIZE/8)) = 0;
sendWord.last = 1;
#ifdef DBG_FULL

View File

@ -38,6 +38,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using namespace hls;
//#define DBG_IBV
// #define RETRANS_EN
const uint32_t BTH_SIZE = 96;
const uint32_t RETH_SIZE = 128;

View File

@ -71,20 +71,20 @@ struct readReqTableEntry
template <int INSTID>
void read_req_table(stream<txReadReqUpdate>& tx_readReqTable_upd,
#if !RETRANS_EN
stream<rxReadReqUpdate>& rx_readReqTable_upd_req);
#else
#ifdef RETRANS_EN
stream<rxReadReqUpdate>& rx_readReqTable_upd_req,
stream<rxReadReqRsp>& rx_readReqTable_upd_rsp);
#else
stream<rxReadReqUpdate>& rx_readReqTable_upd_req);
#endif
template <int INSTID = 0>
void read_req_table(stream<txReadReqUpdate>& tx_readReqTable_upd,
#if !RETRANS_EN
stream<rxReadReqUpdate>& rx_readReqTable_upd_req)
#else
#ifdef RETRANS_EN
stream<rxReadReqUpdate>& rx_readReqTable_upd_req,
stream<rxReadReqRsp>& rx_readReqTable_upd_rsp)
#else
stream<rxReadReqUpdate>& rx_readReqTable_upd_req)
#endif
{
#pragma HLS PIPELINE II=1

View File

@ -24,11 +24,11 @@ def print_array(array, file = None):
if x["instid"] == -1:
print("[{}]: {}".format(x["module"], x["msg"]))
if file is not None:
file.write("[{}]: {}".format(x["module"], x["msg"]))
file.write("[{}]: {}\n".format(x["module"], x["msg"]))
else:
print("[{} {}]: {}".format(x["module"], x["instid"], x["msg"]))
if file is not None:
file.write("[{} {}]: {}".format(x["module"], x["instid"], x["msg"]))
file.write("[{} {}]: {}\n".format(x["module"], x["instid"], x["msg"]))
def main():
conf = None

View File

@ -167,19 +167,21 @@ int main(int argc, char* argv[]){
ap_uint<512> params;
params(63,0) = 0x000; // laddr
params(127,64) = 0x100; // raddr
params(159,128) = 128; // length
params(159,128) = 16 * 1024; // length
for (int i=0; i<1000; i++)
s_axis_sq_meta_n0.write(txMeta(RC_RDMA_WRITE_ONLY, 0x00, 0, params));
for (int i=0; i<1; i++)
// s_axis_sq_meta_n0.write(txMeta(RC_RDMA_WRITE_ONLY, 0x00, 0, params));
s_axis_sq_meta_n0.write(txMeta(RC_RDMA_READ_REQUEST, 0x00, 0, params));
while (count < 200000)
while (count < 20000)
{
// add some randomness into dropping
ap_uint<8> drop_rand = std::rand() / (RAND_MAX / 50) + 50;
ap_uint<8> drop_rand = std::rand() / (RAND_MAX / 3) + 3;
IBTRUN(0);
IBTRUN(1);
SWITCHRUN(drop_rand);
// SWITCHRUN(drop_rand);
SWITCHRUN(3);
DRAMRUN(0);
DRAMRUN(1);
count++;