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()
示例#2
0
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()
示例#3
0
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)
示例#4
0
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)
示例#5
0
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 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")
示例#8
0
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')
示例#9
0
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()
示例#10
0
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()