blob: 311a2767b5a045f66f7344afe8977939a0921baf [file] [log] [blame]
import cocotb
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge, FallingEdge, ClockCycles
from scan_wrapper import *
# utility functions. using 2nd bit as reset and 1st bit as clock for synchronous design examples
async def reset(dut):
for i in range(2):
await RisingEdge(dut.ready);
dut.inputs.value = 0b10
await RisingEdge(dut.ready);
dut.inputs.value = 0b11
await RisingEdge(dut.ready);
dut.inputs.value = 0b0
async def single_cycle(dut):
await RisingEdge(dut.ready);
dut.inputs.value = 0b1
await RisingEdge(dut.ready);
dut.inputs.value = 0b0
@cocotb.test()
async def test(dut):
clock = Clock(dut.clk, 10, units="us")
cocotb.fork(clock.start())
dut.reset.value = 1
dut.active_select.value = 12 # 7 seg seconds
await ClockCycles(dut.clk, 10)
dut.reset.value = 0
await reset(dut)
dut.inputs.value = 0x00
for i in range(15):
print("clock {}".format(i))
await single_cycle(dut)