BUFGMUX is a clock buffer with two clock inputs, one clock output, and a select line. This primitive is based on BUFGCTRL with some pins connected to logic High or Low.
This Figure illustrates the relationship of BUFGMUX and BUFGCTRL. The LOC constraint is available for manually placing the BUFGMUX and BUFGCTRL locations. See the Vivado Design Suite User Guide: Using Constraints (UG903) [Ref 4] for more information.
IMPORTANT: Because BUFGMUX uses the CE pins as select pins, when using the select, the setup time requirement must be met. Violating this setup time can result in a glitch.
Switching conditions for BUFGMUX are the same as the CE pins on BUFGCTRL. This Figure illustrates the timing diagram for BUFGMUX.
In This Figure :
• The current clock is I0.
• S is activated High.
• If I0 is currently High, the multiplexer waits for I0 to deassert Low.
• After I0 is Low, the multiplexer output stays Low until I1 transitions from High to Low.
• When I1 transitions from High to Low, the output switches to I1.
• If setup/hold times are met, no glitches or short pulses can appear on the output.
BUFGMUX_1 is rising-edge sensitive and held at High prior to input switch. This Figure illustrates the timing diagram for BUFGMUX_1. The LOC constraint is available for manually placing the BUFGMUX and BUFGMUX_1 locations. See the Vivado Design Suite User Guide: Using Constraints (UG903) [Ref 4] for more information.
In This Figure :
• The current clock is I0.
• S is activated High.
• If I0 is currently Low, the multiplexer waits for I0 to be asserted High.
• After I0 is High, the multiplexer output stays High until I1 transitions from Low to High.
• When I1 transitions from Low to High, the output switches to I1.
• If setup/hold times are met, no glitches or short pulses can appear on the output.
Table: BUFGMUX Attributes summarizes the attributes for the BUFGMUX primitive.