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)
