2.4.1 Implementation

The sNVM is not accessible to the fabric logic. You can access sNVM through CoreSysService IP using system service calls. The sNVM content is used for device initialization for LSRAM, μSRAM, PCIe®, and transceiver data. Few pages of available 56 KB are used for storing the device and peripheral configuration data and the remaining pages store the user data. For more information about device initialization using sNVM, see PolarFire Family Power-Up and Resets User Guide .

4136 bytes of sNVM storage space is required to initialize a single LSRAM block (1024 x 20 bits) with custom data or all zeros. 168 bytes of sNVM storage space is required to initialize a single Micro SRAM block (64 x 12 bits) with custom data or all zeros. Each page of sNVM can store 252 bytes. So, to store 168 bytes of a single μSRAM block, you need one sNVM page.

The selected logical width/depth determines the number of LSRAM or Micro SRAM blocks instantiated. Therefore, the number of fabric RAM blocks, the user chooses to initialize during Power-Up, determines how much non-volatile storage space (such as sNVM) is required for the system controller operation, and how long the device initialization process takes to complete. To obtain a design specific summary of the sNVM usage and Power-Up to Functional Time (PUFT), the user must run the Libero SoC Design Flow Production Handoff step called Export Design Initialization Data and Memory Report, as shown in the following figure.
Figure 2-49. Export Design Initialization Data and Memory Report