If you are using Xilinx 7 series, this should work....
Library UNISIM;
use UNISIM.vcomponents.all;
....
-------------------------------------------------------
-- Generate a 40MHz from 50Mhz clock
-------------------------------------------------------
clocking : PLLE2_BASE
generic map (
BANDWIDTH => "OPTIMIZED",
CLKFBOUT_MULT => 24, -- VCO freq is 1.2GHz - needs to be between 800MHz and 1600MHz
CLKFBOUT_PHASE => 0.0,
CLKIN1_PERIOD => 10.0,
-- CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for each CLKOUT (1-128)
CLKOUT0_DIVIDE => 30, CLKOUT1_DIVIDE => 16, CLKOUT2_DIVIDE => 16,
CLKOUT3_DIVIDE => 16, CLKOUT4_DIVIDE => 16, CLKOUT5_DIVIDE => 16,
-- CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE: Duty cycle for each CLKOUT (0.001-0.999).
CLKOUT0_DUTY_CYCLE => 0.5, CLKOUT1_DUTY_CYCLE => 0.5, CLKOUT2_DUTY_CYCLE => 0.5,
CLKOUT3_DUTY_CYCLE => 0.5, CLKOUT4_DUTY_CYCLE => 0.5, CLKOUT5_DUTY_CYCLE => 0.5,
-- CLKOUT0_PHASE - CLKOUT5_PHASE: Phase offset for each CLKOUT (-360.000-360.000).
CLKOUT0_PHASE => 0.0, CLKOUT1_PHASE => 0.0, CLKOUT2_PHASE => 0.0,
CLKOUT3_PHASE => 0.0, CLKOUT4_PHASE => 0.0, CLKOUT5_PHASE => 0.0,
DIVCLK_DIVIDE => 1,
REF_JITTER1 => 0.0,
STARTUP_WAIT => "FALSE"
)
port map (
CLKIN1 => CLK50MHz,
CLKOUT0 => CLK40MHz, CLKOUT1 => open,
CLKOUT2 => open, CLKOUT3 => open,
CLKOUT4 => open, CLKOUT5 => open,
LOCKED => open,
PWRDWN => '0',
RST => '0',
CLKFBOUT => clkfb,
CLKFBIN => clkfb
);
On the latest releases of Vivado you may need to add a clock buffer on the input clock - it doesn't do it automatically during the implementation phase any more.