Commit 8335be0c authored by Alén Arias Vázquez's avatar Alén Arias Vázquez 😎

added header size

parent 16499777
......@@ -44,7 +44,7 @@ class RMQ:
"""
class RMQMaster(RMQ):
def __init__(self, dut, clk, if_name):
def __init__(self, dut, clk, if_name, header_size=1):
RMQ.__init__(self, dut=dut, clk=clk, if_name=if_name)
self.dut._log.info("Init RMQ Master")
self.rmq_i.data.setimmediatevalue(0)
......@@ -52,12 +52,13 @@ class RMQMaster(RMQ):
self.rmq_i.last.setimmediatevalue(0)
self.rmq_i.error.setimmediatevalue(0)
self.rmq_i.valid.setimmediatevalue(0)
self.hdr_size = header_size-1
def send_data(self, data):
data_len = len(data)
self.dut._log.info("Sending Data with length: {}".format(data_len))
for x in range(data_len):
if x == 0:
if x <= self.hdr_size:
self.push_fifo('HDR')
if x == (data_len-1):
self.push_fifo('LAST')
......@@ -97,13 +98,14 @@ class RMQMaster(RMQ):
"""
class RMQSlave(RMQ):
def __init__(self, dut, clk, if_name):
def __init__(self, dut, clk, if_name, header_size=2):
RMQ.__init__(self, dut=dut, clk=clk, if_name=if_name)
self.dut._log.info("Init RMQ Slave")
self.rmq_i.ready.setimmediatevalue(0)
self.rmq_i.pkt_ready.setimmediatevalue(0)
self.rmq_frame_c = 0
self.rmq_request_c = 0
self.rmq_word_c = 0
self.hdr_size = header_size -1
@cocotb.coroutine
def output_data_rmq(self):
......@@ -112,14 +114,16 @@ class RMQSlave(RMQ):
while(True):
if ((self.rmq_o.valid.value == 1) and (self.rmq_i.ready.value == 1)):
if (self.rmq_word_c == 0 or self.rmq_word_c == 1) and self.rmq_o.hdr.value == 0:
if (self.rmq_word_c <= self.hdr_size) and self.rmq_o.hdr.value == 0:
self.dut._log.error("Missing HEADER in reception")
raise SimFailure()
self.push_fifo(self.rmq_o.data.value.integer)
if self.rmq_o.last.value == 1:
self.rmq_word_c += 1
self.rmq_frame_c = self.rmq_frame_c + 1
self.dut._log.info("Received frame {} with length {}".format(self.rmq_frame_c, self.rmq_word_c))
self.rmq_request_c = self.rmq_request_c + 1
self.dut._log.info("Received frame {} with length {}".format(self.rmq_request_c, self.rmq_word_c))
self.rmq_word_c = 0
else:
self.rmq_word_c += 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment