| 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) |
| |