def barrier(): for i in range(NUM_PORTS): simLib.fPort(i + 1).write("%08d"%CMD_BARRIER + " // BARRIER\n") simLib.fPort(i + 1).write("%08x"%(numExpectedPktsPHY[i]) + " // Number of Packets\n") simLib.fPCI().write("%08d"%CMD_PCI_BARRIER + " // BARRIER\n") for i in range(NUM_PORTS): simLib.fPCI().write("%08x"%(numExpectedPktsDMA[i]) + " // Number of expected pkts received via DMA port " + str(i + 1) + "\n") resetBarrier()
def nftest_send_phy(ifaceName, pkt, exp = True): if connections[ifaceName] == ifaceName: print "Error: cannot send on phy of a port in loopback" sys.exit(1) sent_phy[ifaceName].append(pkt) if sim: for pkt_s in pkt: pkt_s.tuser_sport = 1 << (int(ifaceName[2:3])*2) # physical ports are even-numbered for i in range(len(pkt)): simPkt.pktSendPHY(int(ifaceName[2:3])+1, pkt) f = simLib.fPort(int(ifaceName[2]) + 1) axitools.axis_dump( pkt, f, 256, 1e-9 ) else: hwPktLib.send(iface_map[connections[ifaceName]], pkt, exp)
def nftest_send_phy(ifaceName, pkt): if connections[ifaceName] == ifaceName: print "Error: cannot send on phy of a port in loopback" sys.exit(1) sent_phy[ifaceName].append(pkt) if sim: for pkt_s in pkt: pkt_s.tuser_sport = 1 << (int(ifaceName[2:3])*2) # physical ports are even-numbered for i in range(len(pkt)): simPkt.pktSendPHY(int(ifaceName[2:3])+1, pkt) f = simLib.fPort(int(ifaceName[2]) + 1) axitools.axis_dump( pkt, f, 256, 1e-9 ) else: hwPktLib.send(iface_map[connections[ifaceName]], pkt)
def delay(nanoSeconds): for i in range(NUM_PORTS): simLib.fPort(i+1).write("%08d"%CMD_DELAY + " // DELAY\n") simLib.fPort(i+1).write("%08x"%(MSB_MASK & nanoSeconds) + " // Delay (MSB) " + str(nanoSeconds)+" ns\n") simLib.fPort(i+1).write("%08x"%(MSB_MASK & nanoSeconds) + " // Delay (LSB) " + str(nanoSeconds)+" ns\n") simLib.fPCI().write("%08d"%CMD_PCI_DELAY+" // DELAY\n") simLib.fPCI().write("%08x"%(MSB_MASK & nanoSeconds) + " // Delay (MSB) " + str(nanoSeconds) + " ns\n") simLib.fPCI().write("%08x"%(LSB_MASK & nanoSeconds) + " // Delay (LSB) " + str(nanoSeconds) + " ns\n")
def pktSendPHY(toPort, pkt): f = simLib.fPort(toPort) # convert packet to string strpkt = "" strpktHdr = "" count = 1 for x in str(pkt): strpktHdr += "%02x "%ord(x) strpkt += "%02x"%ord(x) if count < 4: count += 1 else: strpkt += "\n" count = 1 # pad if pkt ends in incomplete word if len(pkt)%4 != 0: count -= 1 while count != 4: strpkt += '00' count += 1 # format nicely DA = str.replace(strpktHdr[0:17], ' ', ':') SA = str.replace(strpktHdr[18:35], ' ', ':') ethType = str.replace(strpktHdr[36:41], ' ', '') samplePkt = str.replace(strpktHdr[42:60], '\n', '') # increment counter SentPktsPHYcount[toPort-1] += 1 # write packet f.write("// Packet " + str(SentPktsPHYcount[toPort-1]) + "\n") f.write("// DA: " + DA + " SA: " + SA + " [" + ethType + "] " + samplePkt + "...\n") f.write("%08d"%CMD_SEND + " // SEND\n") pktLen = len(pkt) f.write("%08x"%pktLen + " // Length without CRC\n") f.write("%08d"%toPort + " // Port " + str(toPort) + "\n") f.write(str.rstrip(strpkt)) f.write('\neeeeffff // End of pkt marker for pkt ' + str(SentPktsPHYcount[toPort-1]) + ' (this is not sent).\n')
def barrier(): for i in range(NUM_PORTS): # 0,1,2,3 simLib.fPort(i + 1).write("# BARRIER\n") simLib.fPort(i + 1).write("B " + "%d\n" % CMD_BARRIER) simLib.fPort(i + 1).write("# EXPECTED\n") simLib.fPort(i + 1).write("N " + "%d\n" % (numExpectedPktsPHY[i])) simLib.fPort(i + 1).write("# SENT\n") simLib.fPort(i + 1).write("S " + "%d\n\n" % (numSendPktsPHY[i])) simLib.fDMA().write("# BARRIER\n") simLib.fDMA().write("B " + "%d\n" % CMD_BARRIER) simLib.fDMA().write("# EXPECTED\n") simLib.fDMA().write("N " + "%d\n" % (numExpectedPktsDMA[0])) simLib.fDMA().write("# SENT\n") simLib.fDMA().write("S " + "%d\n\n" % (numSendPktsDMA[0])) simLib.fregstim().write("# BARRIER\n") simLib.fregstim().write("B " + "%d\n" % CMD_BARRIER_REG) for i in range(NUM_PORTS): simLib.fregstim().write("# Interface " + "%d\n" % (i)) simLib.fregstim().write("N " + "%d\n" % (numExpectedPktsPHY[i])) simLib.fregstim().write("S " + "%d\n" % (numSendPktsPHY[i])) simLib.fregstim().write("# DMA\n") simLib.fregstim().write("N " + "%d\n" % (numExpectedPktsDMA[i])) simLib.fregstim().write("S " + "%d\n" % (numSendPktsDMA[i])) resetBarrier()
def barrier(): for i in range(NUM_PORTS): # 0,1,2,3 simLib.fPort(i + 1).write("# BARRIER\n") simLib.fPort(i + 1).write("B " + "%d\n"%CMD_BARRIER) simLib.fPort(i + 1).write("# EXPECTED\n") simLib.fPort(i + 1).write("N " + "%d\n"%(numExpectedPktsPHY[i])) simLib.fPort(i + 1).write("# SENT\n") simLib.fPort(i + 1).write("S " + "%d\n\n"%(numSendPktsPHY[i])) simLib.fDMA().write("# BARRIER\n") simLib.fDMA().write("B " + "%d\n"%CMD_BARRIER) simLib.fDMA().write("# EXPECTED\n") simLib.fDMA().write("N " + "%d\n"%(numExpectedPktsDMA[0])) simLib.fDMA().write("# SENT\n") simLib.fDMA().write("S " + "%d\n\n"%(numSendPktsDMA[0])) simLib.fregstim().write("# BARRIER\n") simLib.fregstim().write("B " + "%d\n"%CMD_BARRIER_REG) for i in range(NUM_PORTS): #if numSendPktsPHY[i] == 0: # simLib.fregstim().write("") #else: #if numExpectedPktsPHY[i] == numSendPktsPHY[i]: # simLib.fregstim().write("N " + "%d\n"%(numSendPktsPHY[i])) # simLib.fregstim().write("N " + "%d\n"%(numExpectedPktsPHY[i])) #else: simLib.fregstim().write("# Interface " + "%d\n"%(i)) #simLib.fregstim().write("S " + "%d\n"%(numSendPktsPHY[i])) simLib.fregstim().write("N " + "%d\n"%(numExpectedPktsPHY[i])) simLib.fregstim().write("S " + "%d\n"%(numSendPktsPHY[i])) #if numSendPktsDMA[i] == 0: # simLib.fregstim().write("") # else: simLib.fregstim().write("# DMA\n") #simLib.fregstim().write("S " + "%d\n"%(numSendPktsDMA[i])) simLib.fregstim().write("N " + "%d\n"%(numExpectedPktsDMA[i])) simLib.fregstim().write("S " + "%d\n"%(numSendPktsDMA[i])) #simLib.fregexpect().write("# BARRIER\n") #simLib.fregexpect().write("B " + "%d\n"%CMD_BARRIER_REG) resetBarrier()