The following sequence of events prevents the DRC from correcting pin placement errors:
1. Assign pins to a bank and then set an I/O standard, for example, lvdci_25, which requires VRP/VRN sites.
2. Run DRC. DRC flags errors that these pins are occupied.
3. Go to the package view and try to drag and drop the offending I/Os to another site, and DRC prevents this.
The issue here is that when the drag-and-drop placement is checking the legality of the placement, it returns false if there is a VRN/VRP/VREF conflict in the bank, regardless of whether that conflict is caused by the placement of the port the user is moving.
To work around this issue, select the I/O in VRN/VRP, RMB Unplace, and do the same for the other site (if applicable). Next, go back to the I/O Ports tab, and drag and drop the I/Os to valid sites.