I wanted to do a project to learn FPGA's and the thing I picked was a PWM sinewave generator with the first harmonic of significant amplitude at something like the 54th harmonic.
Currently I am just working to a 4ns pulse accuracy, but I should get to 1ns or lower accuracy once I sort out a few tricks with the FPGA - I am still a VHDL beginner. The thing about this approach is that as long as you can minimize switching issues, the AC accuracy comes down to the DC accuracy, plus errors that are calculable. I only need something like 40 PWM pulses a cycle, so at 1KHz, there is only a 40kHz pulse rate. Using CMOS switches with a 5ns rise time connected to an accurate DC reference, the errors can be very low. It is only the differences between the rising and falling edges that matter, and they can be observed and compensated for. When you only have to make a low pass filter to eliminate the 54th harmonic and above, you can make filters with very accurate gain at the output frequency. You are not dependent with the stability of resistors in a DAC at all.
The plan is to also have PWM voltage dividers in the FPGA, that I use as the DC reference for the AC PWM, so I can have a super stable and accurate AC voltage that has an accurately programmable amplitude.
The point of this approach is the AC amplitude is exactly calculable from the DC reference voltage and all the error sources are measurable and can if needed be compensated for.