Spartan II - The IOB does not support FDS unless INITSTATE equals HIGH
WARNING:Pack:1542 - The register XXX has the property IOB=TRUE, but was not packed into the output side of an I/O component. Register XXX has INITSTATE equal to LOW. The IOB does not support FDS unless INITSTATE equals HIGH.
The IOB FF in Spartan-II device is a FD, not a FDS.
If a register does not require a REV port (set/reset function), its INITSTATE can be either High or Low. But when a register needs both INIT and REV function, it can be packed into IOB only when INIT = High.
You can learn the reason by reading the truth table of FDS:
S D C Q
1 X 1
0 1 1
0 0 0
When S = 0, it functions like normal FD.
When S = 1, it sets Q to 1. This equals to INIT = 1. It is impossible to let Q=0 while S = 1.