Due to a problem in the Quartus® II software version 12.1 and later, if more than one UniPHY-based memory controller is instantiated without OCT sharing, the fitter may assign the mem_reset_n pins for every interface to one OCT control block.
This will cause errors because only one OCT control block can drive an I/O bank.
To verify if this is the issue, in the Compilation Report, go to Fitter -> Resource Section -> Output pins and scroll to the row with the mem_reset_n signal. Scroll to the right and verify which OCT control block the pin is assigned to.
To work around this issue, create an instance assignment in the .qsf (Quartus II Settings File) with the following assignment for each mem_reset_n signal:
set_instance_assignment -name TERMINATION_CONTROL_BLOCK "<termination control block>" -to <reset pin name>