4.3 User Reset Generation Scheme

The User Reset Generation Scheme is as follows:

  • If the design uses an external reset input, the reset input must be ignored until the input buffer of the reset signal is known to be operational. This is applicable for the following conditions:
    • FABRIC_POR_N negates
    • BANK_x_VDDI_STATUS asserts (where x is the number of the I/O bank containing the input buffer)
  • If the design uses a PLL with an external reference clock input, the PLL must be held in a power-down state from the FPGA fabric until the input buffer of the external reference clock is known to be operational. This is when the latter of the following two conditions occur:
    • FABRIC_POR_N negates
    • BANK_y_VDDI_STATUS asserts (where y is the number of the I/O bank containing the input buffer)
  • If the DRI_CLK is generated by a flip-flop in the FPGA fabric (for example, a clock divider), this flip-flop must be asynchronously reset (for example, with FABRIC_POR_N).
  • The flip-flop in the FPGA fabric that drives DRI_PSEL must be asynchronously reset (for example, with FABRIC_POR_N).
  • A PLL lock signal should not be used directly as a reset signal if the PLL is configured not to emit clock pulses until after lock assertion because no clock edges occur during reset and any synchronous reset logic in the FPGA fabric is not correctly reset.

It is recommended to use CORERESET_PF as shown in Figure   2 to incorporate these requirements.

The CORERESET_PF IP core is included in the Libero IP catalog as shown in Figure   1. This IP core synchronously de-asserts the reset to the downstream logic in a user-specified clock domain. As a result, the reset assertion is asynchronous but the negation is synchronous to the clock. This IP core ensures that the recovery time is met and that all of the flip-flops come out of reset in the same clock pulse.

The CORERESET_PF IP combines the resets from multiple sources like external GPIO, PLL lock, and PF_INIT_MONITOR blocks. The CORERESET_PF IP generates system-level synchronous reset (FABRIC_RESET_N) for MSS and fabric logic.

The Fabric flip-flops power-up in an indeterminate state. A reset pulse is required to force the initial state of flip-flops to a known value. The use of FABRIC_RESET_N for this reset is recommended.

Figure 4-2. CORERESET_PF IP
Important: For more information about the CORERESET_PF IP, see the CORERESET_PF handbook available in the Libero catalog.

PolarFire SoC Initialization Monitor (PFSOC_INIT_MONITOR component) must be instantiated in all designs and can be used to reset the user logic. The following figure shows an example use case of PFSOC_INIT_MONITOR and PFSOC_MSS_C0_0. In this example, the DEVICE_INIT_DONE signal is connected to the INIT_DONE signal of the RESET_GEN_0 block (CORERESET_PF IP) to give a synchronous reset signal to the user logic.

In this example, EXT_RST_N and REF_CLK are connected to Bank 0. BANK_x_VDDI_STATUS and BANK_y_VDDI_STATUS are connected to Bank_0_VDDI_STATUS by enabling the Bank_0_VDDI_STATUS in PFSOC_INIT MONITOR IP. Bank0_CALIB_STATUS can be used for monitoring the GPIO calibration status, if any of the GPIO is connected to Bank0. The FABRIC_RESET_N signal of the CORERESET_PF_C0 IP is connected to MSS_RESET_N_F2M of PFSOC_MSS_C0_0. The MSS_RESET_N_M2F output is connected to the fabric logic subsystems that are related to the MSS, such as fabric peripherals connected through an MSS FIC, to ensure reset synchronization occurs between the MSS and the fabric subsystem. The DEVICE_INIT_DONE signal gets asserted after the completion of design initialization.

Figure 4-3. Example of PolarFire SoC Initialization

When using the PF_CCC internal post-divider or the external feedback mode, the PLL_POWERDOWN_N input must be controlled and de-asserted synchronously. See Figure   3 for an example circuit.