def get_case(dut, a, b, c):
- yield dut.c.v.eq(c)
- yield dut.c.stb.eq(1)
- yield
- yield
- c_ack = (yield dut.c.ack)
- assert c_ack == 0
-
yield dut.a.v.eq(a)
yield dut.a.stb.eq(1)
yield
a_ack = (yield dut.a.ack)
assert a_ack == 0
+ yield dut.a.stb.eq(0)
+
yield dut.b.v.eq(b)
yield dut.b.stb.eq(1)
+ yield
+ yield
b_ack = (yield dut.b.ack)
assert b_ack == 0
+ yield dut.b.stb.eq(0)
+
+ yield dut.c.v.eq(c)
+ yield dut.c.stb.eq(1)
+ yield
+ yield
+ c_ack = (yield dut.c.ack)
+ assert c_ack == 0
+
+ yield dut.c.stb.eq(0)
+
+ yield dut.z.ack.eq(1)
+
while True:
- yield
out_z_stb = (yield dut.z.stb)
if not out_z_stb:
+ yield
continue
- yield dut.a.stb.eq(0)
- yield dut.b.stb.eq(0)
- yield dut.c.stb.eq(0)
- yield dut.z.ack.eq(1)
- yield
+
+ out_z = yield dut.z.v
+
yield dut.z.ack.eq(0)
- yield
- yield
break
- out_z = yield dut.z.v
return out_z
def check_case(dut, a, b, c, z):
out_z = yield from get_case(dut, a, b, c)
- assert out_z == z, "Output z 0x%x not equal to expected 0x%x" % (out_z, z)
+ assert out_z == z, "Output z 0x%x != 0x%x" % (out_z, z)
def testbench(dut):
yield from check_case(dut, 0, 0, 0, 0)