blob: 6eadd7e3f18fd883bfa3a175028c313f4d0ab987 [file] [log] [blame]
import cocotb
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge, FallingEdge, ClockCycles, with_timeout
@cocotb.test()
async def test_start(dut):
clock = Clock(dut.clk, 25, units="ns") # 40M
cocotb.fork(clock.start())
dut.driver_sel.value = 0b01 # logic analyser
dut.RSTB.value = 0
dut.power1.value = 0
dut.power2.value = 0
dut.power3.value = 0
dut.power4.value = 0
await ClockCycles(dut.clk, 8)
dut.power1.value = 1
await ClockCycles(dut.clk, 8)
dut.power2.value = 1
await ClockCycles(dut.clk, 8)
dut.power3.value = 1
await ClockCycles(dut.clk, 8)
dut.power4.value = 1
await ClockCycles(dut.clk, 80)
dut.RSTB.value = 1
# wait with a timeout for the project to become active
await with_timeout(RisingEdge(dut.fw_ready), 350, 'us')
print("firmware ready")
# wait
await with_timeout(RisingEdge(dut.fw_done), 2800, 'us')
assert(dut.fw_done == 1)
assert(dut.data_rx == 1)
await ClockCycles(dut.clk, 100)