View the Project on GitHub Mi-V-Soft-RISC-V/PolarFire-FPGA-Splash-Kit
This folder contains Tcl scripts that build Libero SoC v2024.2 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.
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> |
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.
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.
In the examples above the arguments “CFG1” and “CFG1 SYNTHESIZE PS” were entered. The complete set of script arguments are documented here.
| Argument | Description | | ————————- |:—————| | CFG1..CFGn | Generate a sample design for the selected configuration |
| 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) |
| Argument | Description | | ————————- |:—————| | PS | Build a base design targeted for ‘PS’ die | | ES | Build a base design targeted for ‘ES’ die |
The Libero designs include the following features:
The peripherals in this design are located at the following addresses.
| 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 |