dut = InverseDQ0(1000)

async def test_angle(d, q, enc):
    await dut.input.send({'dq': (d, q), 'enc': enc})

    a, b, c = (await dut.output.recv())['current']

    print(f'{d=}, {q=}, {enc=}, {a=}, {b=}, {c=}')

async def testbench():
    for i in range(10):
        await Tick()

    await test_angle(1000, 0, 0)

    await test_angle(0, 1000, 0)

    await test_angle(1000, 1000, 0)

    await test_angle(0, 1000, 333)

    for i in range(10):
        await Tick()

sim = Simulator(dut)
sim.add_clock(1 / 75e6)
sim.add_sync_process(testbench)
with sim.write_vcd('dq0_am.vcd'):
    sim.run()