To work around this issue, users need to manually modify the MMCM parameters to ensure the CLKFBMULT_OUT parameter is not set to 2/3/4, but the VCO frequency is still as high as possible.
Work-around Steps forinfrastructure.v:
Note: Only perform these stepsif the frequency of operation falls in the range where CLKFBOUT_MULT_F is normally set to 2/3/4
Note: Example is shown for Verilog only. VHDL parameters are named the same and should follow the same steps. 1. Open the top-level MIG rtl module. For the Example Design, this will be example_top.v/.vhd. For the User Design, this will be core_name.v/.vhd.
2. Find the following parameters in the module declaration:
parameter CLKFBOUT_MULT_F = 4,
// write PLL VCO multiplier.
parameter DIVCLK_DIVIDE = 2,
// write PLL VCO divisor.
parameter CLKOUT_DIVIDE = 2,
// VCO output divisor for fast (memory) clocks.
3. Modify the parameters to ensure the M (CLKFBOUT_MULT_F) to D (DIVCLK_DIVIDE) relationship is maintained. The CLKOUT_DIVIDE parameter should not be modified.
- For MIG generated CLKFBOUT_MULT_F values of 2, M (CLKFBOUT_MULT_F) and D (DIVCLK_DIVIDE) should be multiplied by 3.
- For MIG generated CLKFBOUT_MULT_F values of 3 or 4, M (CLKFBOUT_MULT_F) and D (DIVCLK_DIVIDE) should be multiplied by 2.
Work-around Steps for phy_rdclk_gen.v:
Note: Only perform these stepsif the frequency of operation falls in the range where CLKFBOUT_MULT_F is normally set to 2/3/4
Note: Example is shown for Verilog only. VHDL parameters are named the same and should follow the same steps. 1. Open the module phy_rdclk_gen.v/.vhd
2. Locate the instantiation of the MMCM "u_mmcm_clk_base" and the following parameters (Verilog syntax shown):
.DIVCLK_DIVIDE (DIVCLK_DIVIDE),
.CLKFBOUT_MULT_F (CLKFBOUT_MULT),
3.Increase the parameters:
- For MIG generated CLKFBOUT_MULT_F values of 2, increase both of these parameters by a factor of 3:
.DIVCLK_DIVIDE (3 * DIVCLK_DIVIDE),
.CLKFBOUT_MULT_F (3 * CLKFBOUT_MULT),
- For MIG generated CLKFBOUT_MULT_F values of 3 and 4, increase both of these parameters by a factor of 2:
.DIVCLK_DIVIDE (2 * DIVCLK_DIVIDE),
.CLKFBOUT_MULT_F (2 * CLKFBOUT_MULT),
MIG v3.4, available with ISE 12.1, will automatically set the correct M and D values to avoid the 2, 3, and 4 settings.
It is possible that the multiplier in the top level and the phy_rdclk_gen.v may not match up, if this is the case, you can multiply them by their respective values. This is not a problem as the ratio between the two files will still be 1 to 1.
For example, you may multiply by 3 in the top level and by 2 in the phy_rdclk_gen.v.