How is the difference between sdf back annotation and spf back annotation?
Post-simulation for timing closure with back annotated timing is done with the post-netlist coming back from the layout tool (different from pre-netlist: inserted buffer, chain reordering,...) with the according SDF file with extracted timing data after layout. 
The SPF containing the physical data can be converted to SDF via a STA tool.