16.1.5 Special

16.1.5.1 APBM

The APBM macro is a post-layout APB master macro that provides APB master interface signals for both simulation and post-layout connectivity. It drives APB control, address, write-data, clock and reset outputs, and receives APB slave response, read-data, error, ready and interrupt inputs.

This macro has the following input/output ports. These are generally asserted after the specified time that is passed as parameters.

Table 16-123. Input/Output Ports
Port NameDirectionWidthDescription
PRESETNOutput1Active‑low APB reset output driven by the APB master.
PSELOutput1APB slave select signal. It indicates the selection phase of an APB transfer.
PENABLEOutput1APB enable signal. It is asserted during the enable phase of an APB transfer.
PWRITEOutput1APB write control signal. It is high for write transfers and low for read transfers.
PSTRB[3:0]Output4APB write strobe signal. It indicates valid byte lanes during write transfers.
PADDR[28:0]Output29APB address bus. It specifies the address for the APB transaction.
PWDATA[31:0]Output32APB write data bus. It carries data during APB write transfers.
PSELFASTOutput1Fast slave select signal. It is used for optimization or early APB selection.
PSTRBCLKOutput1This clock is used to qualify or latch APB write strobe signals.
PRDATA[31:0]Input32APB read data bus. It is returned by the selected slave.
PREADYInput1APB ready signal. It indicates the completion of the APB transfer.
PSLVERRInput1APB slave error indicator. It is asserted on a transfer failure.
PINTERRUPTInput1This interrupts the input from APB slave to the APB master.
PCLKOutput1APB clock output signal.

16.1.5.2 BANKEN

The BANKEN macro is a post-layout bank-enable macro that asserts a bank enable signal after a programmable delay, allowing the associated I/O or HSIO bank to be enabled during simulation or post-layout operation.

This macro has only one input/output port. It is generally asserted after the specified time that is passed as parameters.

Table 16-124. Input/Output Ports
Port NameDirectionWidthDescription
BANK_ENOutput1Bank-enabled output signal. It is asserted high after a programmable simulation delay to enable the associated IO/HSIO bank.

The following table lists the parameters and their descriptions that are used to configure the functionalities of the macro.

Table 16-125. Parameters
NameWidthDescription
BANK_EN_SIMULATION_DELAYReal / IntegerSimulation delay before BANK_EN is asserted high after initialization.
BANK_NUMBERIntegerIdentifies the bank number associated with this enable signal.

16.1.5.3 BANKCTRL_GPIO

The BANKCTRL_GPIO macro is a post-layout GPIO bank calibration-control macro. It provides calibration status and interrupt indication and accepts control inputs to start, load, lock and adjust GPIO bank calibration codes.

This macro has the following input/output ports. These are generally asserted after the specified time that is passed as parameters.

Table 16-126. Input/Output Ports
Port NameDirectionWidthDescription
CALIB_STATUSOutput1Calibration status output. It is asserted high when the GPIO bank calibration is complete and/or locked. And, it is de-asserted when the calibration is in progress.
CALIB_INTERRUPTOutput1Calibration completion interrupt signal. It pulses high to indicate the end of the calibration sequence.
CALIB_DIRECTIONInput1It selects the direction of calibration code adjustment during calibration operations.
CALIB_LOADInput1It loads new calibration codes into the IO bank. It must be asserted only when CALIB_STATUS is high.
CALIB_LOCKInput1It locks the calibrated values. When asserted, calibration is considered complete, and CALIB_STATUS is asserted.
CALIB_MOVE_NCODEInput1It requests adjustment (movement) of the N‑side calibration code.
CALIB_MOVE_PCODEInput1It requests adjustment (movement) of the P‑side calibration code.
CALIB_STARTInput1It starts the calibration process, clears CALIB_STATUS and initiates calibration.
CALIB_MOVE_DIFFR_PVTInput1It requests movement of the differential PVT calibration code.

The following table lists the parameters and their descriptions that are used to configure the functionalities of the macro.

Table 16-127. Parameters
NameWidthDescription
PC_REG_CALIB_SOFTRESET1It enables soft reset for the calibration logic.
PC_REG_CALIB_PCODE6Initial P‑side calibration code value
PC_REG_CALIB_NCODE6Initial N‑side calibration code value
PC_REG_CALIB_TRIM1It enables trimming during calibration.
PC_REG_CALIB_START1Default calibration start control value
PC_REG_CALIB_LOCK1Default calibration lock control value
PC_REG_CALIB_LOAD1Default calibration load control value
PC_REG_CALIB_DIR1Default calibration direction control
PC_REG_CALIB_MOVE_PCODE1Default enable for P‑side calibration code movement
PC_REG_CALIB_MOVE_NCODE1Default enable for N‑side calibration code movement
PC_REG_CALIB_DIFFR4Initial differential calibration code value
PC_CALIB_MOVE_DIFF1It enables movement of differential calibration code.
PC_CALIB_D_OFFSET4Differential calibration offset value
PC_CALIB_D_OFFSET_DIRECTION1Direction control for differential offset adjustment
PC_CALIB_N_OFFSET6N‑side calibration offset value
PC_CALIB_N_OFFSET_DIRECTION1Direction control for N‑side offset adjustment
PC_CALIB_P_OFFSET6P‑side calibration offset value
PC_CALIB_P_OFFSET_DIRECTION1Direction control for P‑side offset adjustment
PC_REG_DIFFR_VSEL2Differential voltage select for calibration
BANK_NUMBERIntegerIt identifies the GPIO bank number for this instance.
CALIB_STATUS_SIMULATION_DELAYIntegerSimulation delay before CALIB_STATUS is asserted after initialization
CALIB_CALIB_INTERRUPT_DELAYIntegerSimulation delay used to generate the calibration interrupt pulse

16.1.5.4 BANKCTRL_HSIO

The BANKCTRL_HSIO macro is a post-layout HSIO bank calibration-control macro. It provides calibration status and interrupt indication and accepts control inputs to manage HSIO calibration, including P/N code and slew-rate calibration adjustments.

This macro has the following input/output ports. These are generally asserted after the specified time that is passed as parameters.

Table 16-128. Input/Output Ports
NameDirectionWidthDescription
CALIB_STATUSOutput1Calibration status output. It is asserted high when HSIO bank calibration is complete and/or locked. It is de-asserted while calibration is in progress.
CALIB_INTERRUPTOutput1Calibration completion interrupt signal. It pulses high after calibration finishes.
CALIB_DIRECTIONInput1It selects the direction of calibration code adjustment.
CALIB_LOADInput1It loads new calibration codes into the HSIO bank. It must only be asserted when CALIB_STATUS is high.
CALIB_LOCKInput1It locks the calibrated values and when asserted, CALIB_STATUS is set high.
CALIB_MOVE_NCODEInput1It requests the movement (adjustment) of the N‑side calibration code.
CALIB_MOVE_PCODEInput1It requests the movement (adjustment) of the P‑side calibration code.
CALIB_STARTInput1It starts the calibration process, clears CALIB_STATUS and initiates the calibration.
CALIB_MOVE_SLEWRInput1It requests the movement (adjustment) of the slew‑rate rise calibration code.
CALIB_MOVE_SLEWFInput1It requests the movement (adjustment) of the slew‑rate fall calibration code.

The following table lists the parameters and their descriptions that are used to configure the functionalities of the macro.

Table 16-129. Parameters
NameWidthDescription
PC_REG_CALIB_SOFTRESET1It enables soft reset for the HSIO calibration logic.
PC_REG_CALIB_PCODE6Initial P‑side calibration code value
PC_REG_CALIB_NCODE6Initial N‑side calibration code value
PC_REG_CALIB_TRIM1It enables trimming during calibration.
PC_REG_CALIB_START1Default calibration start control value
PC_REG_CALIB_LOCK1Default calibration lock control value
PC_REG_CALIB_LOAD1Default calibration load control value
PC_REG_CALIB_DIR1Default calibration direction control
PC_REG_CALIB_MOVE_PCODE1Default enable for P‑side calibration code movement
PC_REG_CALIB_MOVE_NCODE1Default enable for N‑side calibration code movement
PC_CALIB_N_OFFSET6N‑side calibration offset value
PC_CALIB_N_OFFSET_DIRECTION1Direction control for N‑side offset adjustment
PC_CALIB_P_OFFSET6P‑side calibration offset value
PC_CALIB_P_OFFSET_DIRECTION1Direction control for P‑side offset adjustment
PC_SLEWR6Initial slew‑rate rise control code
PC_SLEWF6Initial slew‑rate fall control code
PC_CALIB_ROFFSET6Slew‑rate rise calibration offset value
PC_CALIB_FOFFSET6Slew‑rate fall calibration offset value
PC_CALIB_ROFFSET_DIR1Direction control for slew‑rate rise offset adjustment
PC_CALIB_FOFFSET_DIR1Direction control for slew‑rate fall offset adjustment
PC_CALIB_MOVE_SLEWR1It enables the movement of slew‑rate rise calibration code.
PC_CALIB_MOVE_SLEWF1It enables the movement of slew‑rate fall calibration code.
BANK_NUMBERIntegerIt identifies the HSIO bank number for this instance.
CALIB_STATUS_SIMULATION_DELAYIntegerSimulation delay before CALIB_STATUS is asserted after initialization
CALIB_CALIB_INTERRUPT_DELAYIntegerSimulation delay used to generate the calibration interrupt pulse

16.1.5.5 FCEND_BUFF

Buffer, driven by the FCO pin of the last macro in the Carry-Chain.
Figure 16-62. FCEND_BUFF
Table 16-130. FCEND_BUFF I/O
InputOutput
AY
Table 16-131. FCEND_BUFF Truth Table
AY
00
11

16.1.5.6 FCINIT_BUFF

Buffer, used to initialize the FCI pin of the first macro in the Carry-Chain.
Figure 16-63. FCINIT_BUFF
Table 16-132. FCINIT_BUFF I/O
InputOutput
AY
Table 16-133. FCINIT_BUFF Truth Table
AY
00
11

16.1.5.7 PF_SPI

The PF_SPI macro allows your design access to the dedicated System Controller SPI port, when SPI-​Initiator mode is enabled, by tying both SC_SPI_EN and IO_CFG_INTF to high.
Figure 16-64. PF_SPI
Table 16-134. Ports and Descriptions
PortDirectionPolarityDescription
D_IOutputThis port is connected to the SPI DI pin.
FAB_SPI_OWNEROutputHighIndicator to the Fabric SPI-​Initiator if the SPI Port is available.
CLK_OEInputHighEnables the SPI CLK output.
CLK_OInputThis port drives the SPI Clock pin. CLK_OE must be HIGH to drive.
D_OEInputHighEnables the Data output.
D_OInputThis port drives the SPI DO pin. D_OE must be HIGH to drive.
SS_OEInputHighEnables the Target Select output.
SS_OInputHighThis port drives the SPI Target Select (SS) pin. SS_OE must be HIGH to drive.
CLKOutputSPI Clock output pin.
DIInputSPI Serial Data input pin.
DOOutputSPI Serial Data output pin.
SSOutputHighSPI Target Select output pin.
IFACEInputHighThis port is mapped to the IO_CFG_INTF pin. This pin must be tied to high together with the SC_SPI_EN pin to enable SPI port for the fabric macro to work.
FLASHInputHighThis port is mapped to the SC_SPI_EN pin. This pin must be tied to high together with the IO_CFG_INTF pin to enable the SPI port for fabric macro to work.

16.1.5.8 SC_STATUS

In the SC_STATUS macro, the SUSPEND_EN signal indicates that the device is in avionics mode, also known as system controller suspend mode, meaning device initialization is complete and all hardware defaults are set.
Important: This macro does not support simulation. To simulate the System Controller Suspend mode, add the following pseudo-code to the simulation testbench:
  • At simulation time t = 0, set SUSPEND_EN = 0, and ACTIVE = 1.
  • At 0.625 µs after the later assertion of DEVICE_INIT_DONE = 1 or AUTOCALIB_DONE = 1, set SUSPEND_EN = 1, and ACTIVE = 0 to indicate that the System Controller has entered Suspend mode.
Figure 16-65. SC_STATUS
Table 16-135. SC_STATUS I/O
Value of SUSPEND_ENDescription
0The device is not in System Controller Suspend mode.
1The device is in System Controller Suspend mode.
Table 16-136. Ports and Descriptions
PortWidthDirectionDescription
SUSPEND_EN1OutputAsserted when the System Controller is in Suspend mode.
ACTIVE1OutputAsserted when the System Controller is in Active mode.

The System Controller Suspend mode works as follows:

  • When JTAG_TRST_B is asserted low:
    • SUSPEND_EN is asserted high.
    • ACTIVE is asserted low.
  • When JTAG_TRST_B is asserted high:
    • SUSPEND_EN is asserted low.
    • ACTIVE is asserted high when the System Controller is actively performing a function.

The following table shows the states when the System Controller has finished its operations and entered Suspend mode, not just when the Suspend mode setting is enabled.

Table 16-137. SC_STATUS Expected Results
PortDirectionSuspend Mode EnabledSuspend Mode Disabled
SUSPEND_ENOUTPUT10
ACTIVEOUTPUT01: when the System Controller is actively performing a function.

Before performing operations that require the System Controller, such as programming or debugging, ensure the device is not in Suspend mode.

Important: Enabling Suspend mode in Libero does not immediately restrict the System Controller. The restriction takes effect only after the controller completes initialization and enters Suspend mode.

16.1.5.9 OSC_RC160MHZ

The OSC_RC160MHZ oscillator is an RC oscillator that provides a free-running clock of 160 MHz at CLK when OSC_160MHZ_ON is tied HIGH.

16.1.5.10 OSC_RC2MHZ

The OSC_RC2MHZ oscillator is an RC oscillator that provides a free-running clock of 2 MHz at CLK when OSC_2MHZ_ON is tied HIGH.

16.1.5.11 LIVE_PROBE_A

This is one of the specialized probes. SmartDebug uses the dedicated and specialized probe points built in the FPGA fabric, which significantly accelerates and simplifies the debug process.

16.1.5.12 INIT

This macro does do not have any inputs. It has the following output ports, which are asserted after the specified time that is passed as parameters.
Table 16-138. Output Ports
Port NameDirectionWidthDescription
FABRIC_POR_NOutput1Active‑low power‑on reset for the fabric. It is asserted after the fabric initialization delay and can be de-asserted when the fabric is operational.
PCIE_INIT_DONEOutput1Indicates PCIe initialization has completed. It is used by fabric logic to hold PCIe-related fabric logic in reset until the PCIe controller is initialized. It is asserted after initializing the PCIe lane instances placed in the PCIe quad. If only XCVR lanes are placed in the PCIe quad, only XCVR_INIT_DONE is asserted.
RFU[0]Asserted when the XCVR (high‑speed transceiver) block initialization is completed.
RFU[1]Asserted when μSRAM is initialized from sNVM.
RFU[2]Asserted when μSRAM is initialized from µPROM.
RFU[3]Asserted when μSRAM is initialized from SPI flash.
RFU[4]Asserted when SRAM is initialized from sNVM.
RFU[5]Asserted when SRAM is initialized from µPROM.
RFU[6]Asserted when SRAM is initialized from SPI flash.
RFU[7]Asserted when auto calibration is done. It is reserved for future use.
RFU[8]Reserved for future use.
RFU[9]Reserved for future use.
RFU[10]Reserved for future use.
RFU[11]Asserted when automatic IO calibration is complete.
RFU[11:0]Output12Reserved‑for‑future‑use status outputs. It is driven high after programmed initialization delays.
SRAM_INIT_DONEOutput1Indicates on‑chip SRAM initialization has completed. It is asserted when the LSRAM blocks are initialized.
USRAM_INIT_DONEOutput1Indicates user SRAM initialization has completed. It is asserted when the µSRAM blocks are initialized.
GPIO_ACTIVEIndicates GPIO subsystem is active and ready. This signal can be used by user logic to determine if the calibration completes for each I/O banks. # denotes the bank number (0,1, 7, 8, and 9).
HSIO_ACTIVEIndicates HSIO subsystem is active and ready. This signal can be used to monitor if there is VDDI power loss on specific I/O banks. This is an output signal from the INIT_MONITOR IP if any of the corresponding bank is selected. # denotes the bank number (0,1, 7, 8, and 9).
UIC_INIT_DONEOutput1Indicates UIC (device‑level) initialization has completed.

The following table lists the parameters and their descriptions that are used to configure the functionalities of the macro.

Table 16-139. Parameters
NameWidthDescription
FABRIC_POR_N_SIMULATION_DELAYReal / IntegerSimulation delay before FABRIC_POR_N is asserted.
GPIO_ACTIVE_SIMULATION_DELAYReal / IntegerSimulation delay before GPIO_ACTIVE is asserted.
HSIO_ACTIVE_SIMULATION_DELAYReal / IntegerSimulation delay before HSIO_ACTIVE is asserted.
PCIE_INIT_DONE_SIMULATION_DELAYIntegerSimulation delay before PCIE_INIT_DONE is asserted.
RFU_SIMULATION_DELAYReal / IntegerSimulation delay for RFU outputs (legacy, not used).
SRAM_INIT_DONE_SIMULATION_DELAYIntegerSimulation delay before SRAM_INIT_DONE is asserted.
UIC_INIT_DONE_SIMULATION_DELAYIntegerSimulation delay before UIC_INIT_DONE is asserted.
USRAM_INIT_DONE_SIMULATION_DELAYIntegerSimulation delay before USRAM_INIT_DONE is asserted.
SUSPEND_MODE1Enables suspend behavior; when set, all INIT outputs are de-asserted after initialization.

16.1.5.13 PFSOC_SCSM

The PFSOC_SCSM macro allows a PolarFire SoC device, configured with the System Controller Suspend Mode (SCSM) enabled, to support MSS reboots during normal device operation. Without this macro, the System Controller:

  • Will remain in suspend mode during normal operation after the initial power-up device initialization and MSS boot completion.
  • Will not service subsequent MSS boot requests, even if you reset the MSS.

You must connect the REBOOT_REQUESTED_M2F output of the MSS component to the SC_WAKE input pin of the PFSOC_SCSM macro. Other connections are not permitted.

Important: To enable the REBOOT_REQUESTED_M2F port in the MSS configurator, check the Expose Feedback ports to Fabric option under the Misc tab.

With this connection added to your FPGA fabric design, whenever the MSS REBOOT_REQUESTED_M2F output is asserted, the System Controller exits SCSM and processes the pending MSS reboot request. Once the MSS boots, the REBOOT_REQUESTED_M2F output will deassert and the System Controller returns to the suspend mode. The System Controller status can be monitored via the SC_STATUS macro.

Important: The PFSOC_SCSM macro only supports the PolarFire SoC (production device) family. PolarFire SoC Engineering Silicon (ES) devices are not supported.
Figure 16-66. PFSOC_SCSM Macro

Design Rule Checks

Following are the Design Rule Checks (DRCs) for the PFSOC_SCSM macro.

  • Check that the driver is only MSS REBOOT_REQUESTED_M2F, otherwise the PFSOC_SCSM macro will error out and stop the flow with the following message:
    The PFSOC_SCSM primitive macro only supports being driven by the MSS component’s REBOOT_REQUESTED_M2F output. Other drivers are not supported. See the PolarFire SoC Macro Library Guide for more information.
  • If Suspend is not enabled, and the PFSOC_SCSM is instantiated, a warning is issued in the Export Design Initialization Data and Memory Report file.
    The PFSOC_SCSM macro is instantiated in the design, but System Controller Suspend Mode is not enabled. This macro is intended for use with System Controller Suspend Mode. See the PolarFire SoC Macro Library Guide for more information.
  • If Suspend is enabled, and the MSS is used, but the PFSOC_SCSM macro is not instantiated, a warning is issued in the Export Design Initialization Data and Memory Report file.
    The PFSOC_SCSM macro is not instantiated even though System Controller Suspend Mode is enabled and the MSS component is instantiated. The system controller will not be available to process MSS reboot requests during operation. See the PolarFire SoC Macro Library Guide for more information.
  • The PFSOC_SCSM macro is visible only for the PolarFire SoC designs. This macro is required for the PolarFire SoC designs using the MSS component and for enabling System Controller Suspend Mode (SCSM). When not used in the PolarFire SoC designs, Libero ties the input to the System Controller to a static 1.
  • If an ES device or a PolarFire family is selected, the PFSOC_SCSM macro will error out and stop the flow in compile with the following error message, as only production PolarFire SoC devices are supported.
    CMPPF_026: This design has one or more instances of the PFSOC_SCSM macro which is not supported for the device in use. Before compiling, this macro(s) must be removed from the design.
  • For RT PolarFire SoC devices:
    Error: The PFSOC_SCSM pin cannot be static. Refer to the PolarFire SoC Macro Library Guide for more information."