Device Family: Arria® V GT, Arria® V GX, Arria® V ST, Arria® V SX, Cyclone® V E, Cyclone® V GT, Cyclone® V GX, Cyclone® V SE, Cyclone® V ST, Cyclone® V SX, Stratix® V, Stratix® V E, Stratix® V GS, Stratix® V GT, Stratix® V GX

Type: Answers

Area: EMIF, Intellectual Property

IP Product: DDR3 SDRAM Controller MegaCore supporting UniPHY

How do I remove the on-chip termination from my UniPHY-based memory controller?


This solution describes the steps to remove the on-chip termination (OCT) from a design that uses UniPHY-based memory controllers. The biggest motivation to remove the OCT from the memory interface I/O is to save power. There are three things to keep in mind:

  • Do not remove the FPGA (on die or on board) termination on any memory I/O operating at least 300 MHz.
  • Do not remove the termination for the mem_clk signal.
  • Perform the signal integrity simulations to check the signal quality after removing the OCT.

The steps below describe how to remove the OCT. These steps apply to:

  • DDR3 for Stratix® V, Arria® V and Cyclone® V
  • QDR II for Stratix V and Arria V
  • RLDRAM II for Stratix V

Before you start making the modifications to the project, make sure your project has been compiled with no errors.

  1. Open the <project_name>.qsf file. Remove or comment out the termination IO assignment in the Quartus® II Settings File (.qsf) or Assignment Editor. For example, comment out the following lines:
    set_instance_assignment -name INPUT_TERMINATION "PARALLEL 50 OHM WITH CALIBRATION"
    set_instance_assignment -name OUTPUT_TERMINATION "SERIES 50 OHM WITH CALIBRATION”
    To comment out a QSF assignment, add a pound (#) sign at the beginning of the line.
  2. For RLDRAM II and QDRII/QDRII+ only: Remove any QSF constraint starting with set_instance_assignment -name TERMINATION_CONTROL_BLOCK”
  3. Start the Quartus compilation. The compilation will fail to fit the design with a bunch of errors. Double click on the first error starting with “Output buffer atom” and it will point to an instantiation of output buffer in Remove following connections from that output buffer instantiation.
    1. parallelterminationcontrol
    2. seriesterminationcontrol
    3. dynamicterminationcontrol
    For example, change
    .parallelterminationcontrol (parallelterminationcontrol_in),
    .parallelterminationcontrol (),
    Depending upon the memory protocol you are using there might be more than one instances where you need to remove the connections. Repeat step #3 until you get rid of all the errors starting with “Output buffer atom”
  4. For DDR2 and DDR3 only: open Find the instance named “stratixv_pseudo_diff_out”. Comment out the line where “dtcin” is defined. Change: