I've got some issues while simulating a DC transfer function line in ngspice ver. 38, but in a previous version of ngspice (ver. 36) it works perfectly. The problem is that it can't store a vector from the simulation because it "doesn't exist", but if I swap the simulation line for a transient, the problem won't appear.
I am sure that your netlist does not run perfectly in ngspice-36, as it contains some bugs.
Place the save command in the .control section before the simulation statement is given.
dc.v(D) dc.v(VDD)
is not a valid syntax.Attached you will find a modified netlist file.