We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 35410

MIG 7 Series and Virtex-6 DDR2/DDR3 Solution Center - Design Assistant - How many commands can the design store?


This section of the MIG Design Assistant focuses on how command requests by the User/Native Interface are stored.

Note: This Answer Record is a part of the Xilinx MIG Solution Center (Xilinx Answer 34243).

The Xilinx MIG Solution Center is available to address all questions related to MIG.

Whether you are starting a new design with MIG or troubleshooting a problem, use the MIG Solution Center to guide you to the right information.


MIG design for previous architectures included command FIFOs with specific FIFO depths.

This determined the number of commands that could be stored at a time.

The MIG 7 Series and Virtex-6 DDR2/DDR3 design does not include command FIFOs.

Instead, commands are assigned to bank machines.

The number of commands that can be stored is based on the number of bank machines and the traffic generation requested.

Each bank machine holds a single request and the interface will push back until it is processed and the bank machine is freed.

If the user streams a set of requests that are optimal to the reordering algorithm, little or no pushback will occur.

The design also includes a starvation mechanism.

The number of banks machines that can be configured is between 2-8.

By default, MIG uses 4 bank machines.

This is a trade-off between area and performance.

As this number is increased, FPGA logic timing becomes more challenging and timing failures can occur depending on design and memory configuration.

Timing closure should be taken care of by the user.

Based on overall design timing budget and timing score, for 7 series devices, the ExtraNetDelay_high and Explore directives might help to close the timing.

To modify the number of bank machines, open the memc_ui_top module and locate the following parameters:

  • BM_CNT_WIDTH = 3
  • nBANK_MACHS = 8

BM_CNT_WIDTH is the number of bits required to represent the number of bank machines.

nBANK_MACHs is the number of bank machines to be configured in the design.

For 7 Series devices the ability to specify the number of bank machines was added to the MIG GUI in the 2016.4 release of Vivado.

Prior to 2016.4 you'll have to use a non-OOC flow to modify the mig_7series_0_mig.v file in order for the changes to propagate through the rest of the design.

  1. Generate the IP, but then select the "Global" option when prompted to generate output products.
  2. Edit the mig_7series_0_mig.v file (default file name) outside of Vivado and modify the nBANK_MACHS parameter to the desired value.
  3. Save the changes and then run synthesis for the new value to propagate through the design.

The best way to determine how many commands can be stored is to simulate the workload in question and observe the interface behavior.

For information on the Reordering Logic, see (Xilinx Answer 34942).

Linked Answer Records

Master Answer Records

Child Answer Records

Answer Number Answer Title Version Found Version Resolved
34942 MIG 7 Series and Virtex-6 DDR2/DDR3 Solution Center - Design Assistant - Reordering Controller Logic N/A N/A

Associated Answer Records

AR# 35410
Date 01/17/2018
Status Active
Type Solution Center
  • Virtex-6 CXT
  • Virtex-6 HXT
  • Virtex-6 LX
  • More
  • Virtex-6 LXT
  • Virtex-6 SXT
  • Virtex-7
  • Kintex-7
  • Artix-7
  • Zynq-7000
  • Less
  • MIG
  • MIG 7 Series
Page Bookmarked