PolarFire-FPGA-Splash-Kit

Logo

View the Project on GitHub Mi-V-Soft-RISC-V/PolarFire-FPGA-Splash-Kit

PolarFire FPGA Splash-Kit Mi-V Sample FPGA Designs

This folder contains Tcl scripts that build Libero SoC v2024.1 design projects for the PolarFire FPGA Splash-Kit. These scripts are executed in Libero SoC to generate the sample designs. All cores boot from memory at 0x8000_0000.

PF_Splash_Kit_MIV_RV32_BaseDesign

Config Description
CFG1 This design uses the MIV_RV32 core configured as follows: <ul><li>RISC-V Extensions: IMC</li><li>Multiplier: MACC (Pipelined)</li><li>Interfaces: AHBL Initiator (mirrored), APB3 Initiator</li><li>Internal IRQs: 1</li><li>TCM: enabled</li><li>System Timer: Internal MTIME enabled, Internal MTIME IRQ enabled</li><li>Debug: Enabled</li><li>An example program is stored in the LSRAM to boot out the box</ul>
CFG2 This design uses the MIV_RV32 core configured as follows: <ul><li>RISC-V Extensions: IM</li><li>Multiplier: Fabric</li><li>Interfaces: AXI4 Master (mirrored), APB3 Initiator</li><li>Internal IRQs: 1</li><li>TCM: Disabled</li><li>System Timer: Internal MTIME enabled, Internal MTIME IRQ enabled</li><li>Debug: Enabled</li><li>An example program is stored in the LSRAM to boot out the box</ul>
CFG3 This design uses the MIV_RV32 core configured as follows: <ul><li>RISC-V Extensions: I</li><li>Multiplier: none</li><li>Interfaces: APB3 Initiator</li><li>Internal IRQs: 1</li><li>TCM: enabled</li><li>System Timer: Internal MTIME enabled, Internal MTIME IRQ enabled</li><li>Debug: Enabled</li></ul>

PF_Splash_Kit_MIV_RV32IMA_BaseDesign

Config Description
CFG1 This design uses the MIV_RV32IMA_L1_AHB core with an AHB interface for memory and peripherals. <li>An example program is stored in the LSRAM to boot out the box
CFG2 This design uses the MIV_RV32IMA_L1_AXI core with an AXI3 interface for memory and peripherals. <li>An example program is stored in the LSRAM to boot out the box

PF_Splash_Kit_MIV_RV32IMAF_BaseDesign

Config Description
CFG1 This design uses the MIV_RV32IMAF_L1_AHB core with an AHB interface for memory and peripherals. <li>An example program is stored in the LSRAM to boot out the box

Instructions

Running Libero SoC in GUI mode

1. Open Libero SoC
2. Execute the script, Project -> Execute Script
3. Select the directory that the script is located in using the "..."
4. Select the script and select "Open"
5. In the arguments text box, enter the type of configuration you want e.g. "CFG1"
6. Select the "Run" button to execute the script
7. Once complete, a script report will be generated.

Libero executes the script and opens the Mi-V sample project targeted for a production silicon (PS) die. The script adds Timing constraints to the project for Synthesis, Place and Route, and Timing Verification. Additionally, I/O Constraints are added to the project for Place and Route. The project can now be taken through the remainder of the Libero SoC design flow.

Running Libero SoC in GUI mode, with Script Arguments

1. Open Libero SoC
2. Execute the selected script, Project -> Execute Script
3. Select the directory that the script is located in, using the "..."
4. Select the script and select "Open"
5. In the arguments text box, enter "CFG1 SYNTHESIZE PS"
6. Select the "Run" button to execute the script
7. Once complete, a script report will be generated.

In this example, the arguments “CFG1 SYNTHESIZE PS” are entered to take the production silicon (PS) die project through to Synthesis.

Libero executes the script and opens the Mi-V sample project targeted for a production silicon (PS) die. The script adds Timing constraints to the project for Synthesis, Place and Route, and Timing Verification. Additionally, I/O Constraints are added to the project for Place and Route. The project can now be taken through the remainder of the Libero SoC design flow.

Script Arguments

In the examples above the arguments “CFG1” and “CFG1 SYNTHESIZE PS” were entered. The complete set of script arguments are documented here.

First argument:

| Argument | Description | | ————————- |:—————| | CFG1..CFGn | Generate a sample design for the selected configuration |

Second argument:

| Argument | Description | | ————————- |:—————| | SYNTHESIZE | Run synthesis on the design | | PLACE_AND_ROUTE | Run place and route on the design | | GENERATE_BITSTREAM | Generate the bitstream for the design| | EXPORT_PROGRAMMING_FILE | Export the programming file (.job) |

Third argument:

| Argument | Description | | ————————- |:—————| | PS | Build a base design targeted for ‘PS’ die | | ES | Build a base design targeted for ‘ES’ die |

Design Features

The Libero designs include the following features:

The peripherals in this design are located at the following addresses.

MIV_RV32 based configurations

| Peripheral (MIV_ESS) | Address Start | Address End | | ——————————: |:————-:|:————–:| | PLIC | 0x7000_0000 | 0x70FF_FFFF | | UART | 0x7100_0000 | 0x71FF_FFFF | | Timer | 0x7200_0000 | 0x72FF_FFFF | | CoreTimer_0 / MIV_ESS_APBSLOT3 | 0x7300_0000 | 0x73FF_FFFF | | CoreTimer_1 / MIV_ESS_APBSLOT4 | 0x7400_0000 | 0x74FF_FFFF | | GPIO | 0x7500_0000 | 0x75FF_FFFF | | SPI | 0x7600_0000 | 0x76FF_FFFF | | uDMA | 0x7800_0000 | 0x78FF_FFFF | | WDOG | 0x7900_0000 | 0x79FF_FFFF | | I2C | 0x7A00_0000 | 0x7AFF_FFFF | | MIV_ESS_APBSLOTB_BASE | 0x7B00_0000 | 0x7BFF_FFFF | | MIV_ESS_APBSLOTC_BASE | 0x7C00_0000 | 0x7CFF_FFFF | | MIV_ESS_APBSLOTD_BASE | 0x7D00_0000 | 0x7DFF_FFFF | | MIV_ESS_APBSLOTE_BASE | 0x7E00_0000 | 0x7EFF_FFFF | | MIV_ESS_APBSLOTF_BASE | 0x7F00_0000 | 0x7FFF_FFFF | | SRAM/TCM | 0x8000_0000 | 0x8000_7FFF |

Legacy core based configurations:

| Peripheral (Standalone)| Address | | ———————-:|:————-:| | CoreUARTapb | 0x7000_1000 | | CoreGPIO_IN | 0x7000_2000 | | CoreTimer_0 | 0x7000_3000 | | CoreTimer_1 | 0x7000_4000 | | CoreGPIO_OUT | 0x7000_5000 | | SRAM | 0x8000_0000 |