dut = InverseDQ0(1000) async def test_angle(d, q, enc): await dut.dq.d.set(d) await dut.dq.q.set(q) await dut.enc.set(enc) await dut.valid.set(1) await Tick() await dut.valid.set(0) for i in range(15): await Tick() a = await dut.output.current[0].get() b = await dut.output.current[1].get() c = await dut.output.current[2].get() 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()