2.5.2 Glitch-Free Clock Switching

The PolarFire family has 12 No-Glitch MUXs (NGMUXs) for glitch-free dynamic clock switching between two independent clocks. NGMUXs are located at the center of the edge on four sides of the device. Libero SoC selects the appropriate NGMUX based on the clock source. NGMUX is accessible by instantiating PF_NGMUX configurator in the design. The following figure shows the NGMUX symbol.

Figure 2-11. NGMUX Symbol

The CLK0 and CLK1 inputs to NGMUX can be driven from any of the following:

  • Preferred clock inputs
  • On-chip oscillators
  • Global clock network
  • Fabric routing
  • CCC (PLL/DLL)
  • Clock dividers

The selection control input for each NGMUX (SEL) is driven from the fabric or I/O and can be changed dynamically by the user logic. The selected clock (CLK_OUT) is driven onto the global clock network.

When both current and new clocks are active (Mode 0), glitch-free clock switching happens as quickly as three current clock cycles plus three new clock cycles. The NGMUX can also be configured to support the switch from an uncertain or inactive clock to an active clock (Mode 1). In Mode 1, the clock switching takes up to 50 new clock cycles with a minimal chance of glitch during the switching.

Figure 2-12. Mode 0: Clock Switching when Clocks are Active
Figure 2-13. Mode 1: Clock Switching when Current Clock (CLK0) is not Active
Figure 2-14. Mode 1: Clock Switching when Current Clock (CLK0) is Uncertain with Random Pulses