from caravel_cocotb.caravel_interfaces import test_configure
from caravel_cocotb.caravel_interfaces import report_test
from caravel_cocotb.caravel_interfaces import UART
from caravel_cocotb.caravel_interfaces import SPI
import cocotb
import random
from cocotb.triggers import Timer
from cocotb.result import TestFailure
def dut_driver(dut):
a = random.randrange(0, 2)
b = random.randrange(0, 2)
dut.a.value = a
dut.b.value = b
def dut_check(dut):
if (dut.a.value and dut.b.value) != dut.y.value:
print("AND Gate failed - not really possible..still.. result is incorrect: %s != 0" % str(dut.y))
else:
dut.log.info("PASS!")
@cocotb.test() # decorator to mark the test function as cocotb test
@report_test # wrapper for configure test reporting files
async def and_gate_test(dut):
caravelEnv = await test_configure(dut)
dut.log.info("Start of test!")
dut.log.info("Drive random values in AND Gate!")
for i in range(10):
yield Timer(10000)
dut_driver(dut)
yield Timer(100)
dut_check(dut)