Esempio n. 1
0
    def loop(self):
        dut = self.dut
        while True:
            yield RisingEdge(dut.clk)
            assertEquals(dut.io_nonStopWrited,truncUInt(int(dut.io_bus_w_payload_data) >> 4,dut.io_nonStopWrited),"io_nonStopWrited")
            if int(dut.io_bus_r_valid) & int(dut.io_bus_r_ready) == 1:
                if self.readAddresses.empty():
                    raise TestFailure("FAIL readAddresses is empty")
                addr = self.readAddresses.get()
                if addr == 9:
                    assertEquals(dut.io_bus_r_payload_data,self.regA << 10,"io_bus_r_payload_data")
                if addr == 7:
                    assertEquals(dut.io_bus_r_payload_data,self.regB << 10,"io_bus_r_payload_data")

                if addr == 2:
                    self.regB = 33


            if int(dut.io_bus_ar_valid) & int(dut.io_bus_ar_ready) == 1:
                addr = int(dut.io_bus_ar_payload_addr)
                self.readAddresses.put(addr)

            if (int(dut.io_bus_aw_valid) & int(dut.io_bus_aw_ready) & int(dut.io_bus_w_valid) & int(dut.io_bus_w_ready)) == 1:
                addr = int(dut.io_bus_aw_payload_addr)
                if addr == 9:
                    self.regA = truncUInt(int(dut.io_bus_w_payload_data) >> 10,20)
                if addr == 7:
                    self.regB = truncUInt(int(dut.io_bus_w_payload_data) >> 10,20)
                if addr == 15:
                    self.regA = 11
    def loop(self):
        dut = self.dut
        while True:
            yield RisingEdge(dut.clk)
            assertEquals(dut.io_nonStopWrited,truncUInt(int(dut.io_bus_w_payload_data) >> 4,dut.io_nonStopWrited),"io_nonStopWrited")
            if int(dut.io_bus_r_valid) & int(dut.io_bus_r_ready) == 1:
                if self.readAddresses.empty():
                    raise TestFailure("FAIL readAddresses is empty")
                addr = self.readAddresses.get()
                if addr == 9:
                    assertEquals(dut.io_bus_r_payload_data,self.regA << 10,"io_bus_r_payload_data")
                if addr == 7:
                    assertEquals(dut.io_bus_r_payload_data,self.regB << 10,"io_bus_r_payload_data")

                if addr == 2:
                    self.regB = 33


            if int(dut.io_bus_ar_valid) & int(dut.io_bus_ar_ready) == 1:
                addr = int(dut.io_bus_ar_payload_addr)
                self.readAddresses.put(addr)

            if (int(dut.io_bus_aw_valid) & int(dut.io_bus_aw_ready) & int(dut.io_bus_w_valid) & int(dut.io_bus_w_ready)) == 1:
                addr = int(dut.io_bus_aw_payload_addr)
                if addr == 9:
                    self.regA = truncUInt(int(dut.io_bus_w_payload_data) >> 10,20)
                if addr == 7:
                    self.regB = truncUInt(int(dut.io_bus_w_payload_data) >> 10,20)
                if addr == 15:
                    self.regA = 11
Esempio n. 3
0
 def __init__(self, dut):
     self.io_outSFix_0 = truncUInt(
         sint(dut.io_inSFix_0) + ((sint(dut.io_inSFix_1) << 2)),
         dut.io_outSFix_0)
     self.io_outSFix_1 = truncUInt(
         (sint(dut.io_inSFix_0) * sint(dut.io_inSFix_1)) >> 5,
         dut.io_outSFix_1)
     self.io_outBundleA_a_sfix = truncUInt(
         sint(dut.io_inBundleA_a_sfix) >> 2, dut.io_outBundleA_a_sfix)
Esempio n. 4
0
def test1(dut):
    dut.log.info("Cocotb test boot")

    cocotb.fork(ClockDomainAsyncReset(dut.clk, dut.reset))
    outA_ref = 0
    outB_ref = 0
    for i in range(0,1000):
        randSignal(dut.io_inA)
        randSignal(dut.io_inB)
        yield RisingEdge(dut.clk)
        assertEquals(outA_ref,dut.io_outA,"io_outA")
        assertEquals(outB_ref, dut.io_outB, "io_outB")
        outA_ref = truncUInt(outA_ref + int(dut.io_inA), dut.io_outA)
        outB_ref = truncUInt(outB_ref + int(dut.io_inB), dut.io_outB)
    dut.log.info("Cocotb test done")
    def loop(self):
        dut = self.dut
        while True:
            yield RisingEdge(dut.clk)
            assertEquals(
                dut.io_nonStopWrited,
                truncUInt(
                    int(dut.io_bus_w_payload_data) >> 4, dut.io_nonStopWrited),
                "io_nonStopWrited")
            # when read to addr=2 and write to addr=7 happen at the same cycle
            # the former takes precedence
            regBassigned = False
            if int(dut.io_bus_r_valid) & int(dut.io_bus_r_ready) == 1:
                if self.readAddresses.empty():
                    raise TestFailure("FAIL readAddresses is empty")
                addr = self.readAddresses.get()
                if addr == 9:
                    assertEquals(dut.io_bus_r_payload_data, self.regA << 10,
                                 "io_bus_r_payload_data")
                if addr == 7:
                    assertEquals(dut.io_bus_r_payload_data, self.regB << 10,
                                 "io_bus_r_payload_data")

                if addr == 2:
                    self.regB = 33
                    regBassigned = True

            if int(dut.io_bus_ar_valid) & int(dut.io_bus_ar_ready) == 1:
                addr = int(dut.io_bus_ar_payload_addr)
                self.readAddresses.put(addr)

            if (int(dut.io_bus_aw_valid) & int(dut.io_bus_aw_ready)
                    & int(dut.io_bus_w_valid) & int(dut.io_bus_w_ready)) == 1:
                addr = int(dut.io_bus_aw_payload_addr)
                if addr == 9:
                    self.regA = truncUInt(
                        int(dut.io_bus_w_payload_data) >> 10, 20)
                if addr == 7 and not regBassigned:
                    self.regB = truncUInt(
                        int(dut.io_bus_w_payload_data) >> 10, 20)
                if addr == 15:
                    self.regA = 11
Esempio n. 6
0
def test1(dut):
    dut.log.info("Cocotb test boot")
    from cocotblib.misc import cocotbXHack
    cocotbXHack()
    #random.seed(0)

    cocotb.fork(ClockDomainAsyncReset(dut.clk, dut.reset))
    while True:
        yield RisingEdge(dut.clk)
        if int(dut.io_internalClkCounter) == 2:
            break
    counter = 3
    for i in range(0,1000):
        yield RisingEdge(dut.clk)
        yield RisingEdge(dut.clk)
        assertEquals(counter, dut.io_internalClkCounter, "io_internalClkCounter")
        counter = truncUInt(counter + 1, dut.io_internalClkCounter)

    dut.log.info("Cocotb test done")
Esempio n. 7
0
    def __init__(self, dut):
        self.io_complexLiteral = 5986

        self.io_outAA_bod_gggg = truncUInt(
            int(dut.io_inAABits) >> 0, dut.io_outAA_bod_gggg)
        self.io_outAA_bod_aosi = truncUInt(
            int(dut.io_inAABits) >> 1, dut.io_outAA_bod_aosi)
        self.io_outAA_ahe = truncUInt(
            int(dut.io_inAABits) >> 4, dut.io_outAA_ahe)
        self.io_outAA_zwg = truncUInt(
            int(dut.io_inAABits) >> 5, dut.io_outAA_zwg)
        self.io_outAA_vsw = truncUInt(
            int(dut.io_inAABits) >> 6, dut.io_outAA_vsw)
        self.io_outAA_lwee = truncUInt(
            int(dut.io_inAABits) >> 7, dut.io_outAA_lwee)

        self.io_outAABits = (int(dut.io_inAA_bod_gggg) << 0) + \
                            (int(dut.io_inAA_bod_aosi) << 1) + \
                            (int(dut.io_inAA_ahe) << 4) + \
                            (int(dut.io_inAA_zwg) << 5) + \
                            (int(dut.io_inAA_vsw) << 6) + \
                            (int(dut.io_inAA_lwee) << 7)

        self.io_outUIntAdder = (int(dut.io_inUIntA) +
                                int(dut.io_inUIntB)) & 0xFF

        self.io_assign_bitDemux = 0
        self.io_assign_bitDemux = setBit(self.io_assign_bitDemux,
                                         int(dut.io_assign_sel_0),
                                         int(dut.io_conds_0))
        if int(dut.io_conds_1) == 1:
            self.io_assign_bitDemux = setBit(self.io_assign_bitDemux,
                                             int(dut.io_assign_sel_1),
                                             int(dut.io_conds_2))
        elif int(dut.io_conds_3) == 1:
            self.io_assign_bitDemux = setBit(self.io_assign_bitDemux,
                                             int(dut.io_assign_sel_0),
                                             int(dut.io_conds_4))
        if int(dut.io_conds_5) == 1:
            self.io_assign_bitDemux = setBit(self.io_assign_bitDemux,
                                             int(dut.io_assign_sel_1),
                                             int(dut.io_conds_6))
        self.io_assign_bitDemux = setBit(self.io_assign_bitDemux, 5, 1)
Esempio n. 8
0
 def clockProcess(self):
     while True:
         yield RisingEdge(self.dut.clk)
         if int(self.dut.enable) == 1:
             yield Timer(1)
             self.value = truncUInt(self.value + 1, self.dut.gray)
Esempio n. 9
0
 def clockProcess(self):
     while True:
         yield RisingEdge(self.dut.clk)
         if int(self.dut.enable) == 1:
             yield Timer(1)
             self.value = truncUInt(self.value + 1, self.dut.gray)
Esempio n. 10
0
def check(signal,bitCount,value):
    if len(signal) != bitCount or int(signal) != truncUInt(value, bitCount):
        raise TestFailure("FAIL %s    %d != %d" % (signal._path, int(signal), truncUInt(value, bitCount)))
Esempio n. 11
0
def check(signal,bitCount,value):
    if len(signal) != bitCount or int(signal) != truncUInt(value, bitCount):
        raise TestFailure("FAIL %s    %d != %d" % (signal._path, int(signal), truncUInt(value, bitCount)))