Tracking and documenting the status of SUServo on NAC3 here.
The blocker to getting SUServo to work with NAC3 right now is having to deal with the type of io_update in the AD9910 class in coredevice:
if not self.cpld.io_update:
self.io_update = RegIOUpdate(self.cpld, self.chip_select)
# NAC3TODO
raise NotImplementedError
else:
self.io_update = self.cpld.io_update
Even with a TypeVar in place of RegIOUpdate in the member declarations, it still won't compile due to https://git.m-labs.hk/M-Labs/nac3/issues/227.
IoUpdateT = TypeVar("IoUpdateT", RegIOUpdate, TTLOut)
io_update: KernelInvariant[IoUpdateT]