750856 Agilex FPGA Development Board
Product Information:
AN 991: Partial Reconfiguration via Configuration Pins
(External Host) Reference Design
This reference design is for the Intel Agilex F-Series FPGA
Development Board. It utilizes the Partial Reconfiguration External
Configuration Controller Intel FPGA IP and has a simple PR
region.
The Intel Agilex Device External Host Hardware Setup consists of
an external device (Helper FPGA), a DUT FPGA, and your external
host design. The host design in the external device is responsible
for hosting the PR process. The PR pins are used to connect both
devices and can be any available user I/Os.
Product Usage Instructions:
External Host Configuration
To perform external host configuration, follow these steps:
- Create a host design in an external device to host the PR
process. - Connect the PR pins from the external device to the Partial
Reconfiguration External Configuration Controller Intel FPGA IP in
the DUT FPGA. - Stream configuration data from the host design to the Intel
Agilex Avalon streaming interface pins that correspond to the PR
handshaking signals from the IP.
Partial Reconfiguration via Configuration Pins Operation
The following sequence describes the operation of partial
reconfiguration via configuration pins:
- Assert the pr_request pin connected to the Partial
Reconfiguration External Configuration Controller Intel FPGA
IP. - The IP asserts a busy signal to indicate that the PR process is
in progress (optional). - If the configuration system is ready for a PR operation, the
avst_ready pin is asserted, indicating that it is ready to accept
data. - Stream the PR configuration data over the avst_data pins and
the avst_valid pin, following the Avalon streaming specification
for data transfer with backpressure. - Streaming stops when the avst_ready pin is de-asserted.
- De-assert the avst_ready pin to indicate that no more data is
required for the PR operation. - The Partial Reconfiguration External Configuration Controller
Intel FPGA IP de-asserts the busy signal to indicate the end of the
process (optional).
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design
for Intel® Agilex® F-Series FPGA Development Board
Updated for Intel® Quartus® Prime Design Suite: 22.3
Online Version Send Feedback
Answers to Top FAQs:
Q What is PR via configuration pins? A External Host Configuration on page 3
Q What do I need for this reference design? A Reference Design Requirements on page 6
Q Where can I get the reference design? A Reference Design Requirements on page 6
Q How do I perform PR via external configuration? A Reference Design Walkthrough on page 6
Q What is a PR persona? A Defining Personas on page 11
Q How do I program the board? A Program the Board on page 17
Q What are the PR known issues and limitations? A Intel FPGA Support Forums: PR
Q Do you have training on PR? A Intel FPGA Technical Training Catalog
AN-991
ID: 750856 Version: 2022.11.14
Contents
Contents
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design……………………………………………………………………………………………………….. 3 Partial Reconfiguration External Configuration Controller Intel FPGA IP………………………….. 4 Reference Design Requirements…………………………………………………………………………. 6 Reference Design Walkthrough……………………………………………………………………………6 Step 1: Getting Started…………………………………………………………………………… 7 Step 2: Creating a Design Partition………………………………………………………………7 Step 3: Allocating Placement and Routing Region for a PR Partition……………………….8 Step 4: Adding the Partial Reconfiguration External Configuration Controller Intel FPGA IP…………………………………………………………………………………….. 10 Step 5: Defining Personas………………………………………………………………………. 11 Step 6: Creating Revisions …………………………………………………………………….. 13 Step 7: Compiling the Base Revision………………………………………………………….. 15 Step 8: Preparing PR Implementation Revisions……………………………………………. 15 Step 9: Programming the Board……………………………………………………………….. 17 Hardware Testing Flow…………………………………………………………………………………… 19 Document Revision History for AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design for Intel Agilex F-Series FPGA Development Board.. 21
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
2
Send Feedback
750856 | 2022.11.14 Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design
Figure 1.
This application note demonstrates partial reconfiguration via configuration pins (external host) on the Intel® Agilex® F-Series FPGA development board.
Reference Design Overview
The partial reconfiguration (PR) feature allows you to reconfigure a portion of the FPGA dynamically, while the remaining FPGA design continues to function. You can create multiple personas for a particular region in your design that do not impact operation in areas outside this region. This methodology is effective in systems where multiple functions time-share the same FPGA device resources. The current version of the Intel Quartus® Prime Pro Edition software introduces a new and simplified compilation flow for partial reconfiguration.
This Intel Agilex reference design uses the Partial Reconfiguration External Configuration Controller Intel FPGA IP and has a simple PR region.
Intel Agilex Device External Host Hardware Setup
External Device (Helper FPGA)
DUT FPGA
Your External
Host Design
busy pr_done pr_error pr_request out_clock
Partial Reconfiguration External Configuration Controller Intel FPGA
IP
Avalon
SDM
Streaming
x8,x16,x32
Interface
PR Region
External Host Configuration
In external host configuration, you must first create a host design in an external device to host the PR process, as Intel Agilex Device External Host Hardware Setup shows. The host design streams configuration data to the Intel Agilex Avalon streaming interface pins that correspond to the PR handshaking signals that come from the Partial Reconfiguration External Configuration Controller Intel FPGA IP. The PR pins that you use to connect both devices can be any available user I/Os.
Intel Corporation. All rights reserved. Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries. Intel warrants performance of its FPGA and semiconductor products to current specifications in accordance with Intel’s standard warranty, but reserves the right to make changes to any products and services at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. *Other names and brands may be claimed as the property of others.
ISO 9001:2015 Registered
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
The following sequence describes the partial reconfiguration via configuration pins operation: 1. First assert the pr_request pin that is connected to the Partial Reconfiguration
External Configuration Controller Intel FPGA IP. 2. The IP asserts a busy signal to indicate that the PR process is in progress
(optional). 3. If the configuration system is ready to undergo a PR operation, the avst_ready
pin is asserted indicating that it is ready to accept data. 4. Begin to stream the PR configuration data over the avst_data pins and the
avst_valid pin, while observing the Avalon streaming specification for data transfer with backpressure. 5. Streaming stops whenever the avst_ready pin is de-asserted.
6. After streaming all configuration data, the avst_ready pin is de-asserted to
indicate that no more data is required for PR operation. 7. The Partial Reconfiguration External Configuration Controller Intel FPGA IP de-
asserts the busy signal to indicate the end of the process (optional).
8. You can check the pr_done and pr_error pins to confirm whether the PR operation completed successfully. If an error occurs, such as failure in version checking and authorization checking, the PR operation terminates.
Related Information · Intel Agilex F-Series FPGA Development Kit Web Page · Intel Agilex F-Series FPGA Development Kit User Guide · Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration
Partial Reconfiguration External Configuration Controller Intel FPGA IP
The Partial Reconfiguration External Configuration Controller is required to use configuration pins to stream PR data for PR operation. You must connect all of the toplevel ports of the Partial Reconfiguration External Configuration Controller Intel FPGA IP to the pr_request pin to allow the handshaking of the host with the secure device manager (SDM) from the core. The SDM determines which types of configuration pins to use, according to your MSEL setting.
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
4
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Figure 2. Partial Reconfiguration External Configuration Controller Intel FPGA IP
reset out_clk
busy
pr_request pr_error pr_done
Partial Reconfiguration External Configuration Controller Intel FPGA IP
Table 1.
Partial Reconfiguration External Configuration Controller Parameter Settings
Parameter
Value
Description
Enable Busy Interface
Enable or Disable
Allows you to Enable or Disable the Busy interface, which asserts a signal to indicate that PR processing is in progress during external configuration. Default setting is Disable.
Table 2.
Partial Reconfiguration External Configuration Controller Ports
Port Name pr_request
pr_error
Width 1
2
pr_done
1
Direction Input Output
Output
Function
Indicates that the PR process is ready to begin. The signal is a conduit not synchronous to any clock signal.
Indicates a partial reconfiguration error.: · 2’b01–general PR error · 2’b11–incompatible bitstream error These signals are conduits not synchronous to any clock source.
Indicates that the PR process is complete. The signal is a conduit not synchronous to any clock signal.
start_addr
1
reset
1
Input Input
Specifies the start address of PR data in Active Serial Flash. You enable this signal by selecting either Avalon®-ST or Active Serial for the Enable Avalon-ST Pins or Active Serial Pins parameter. The signal is a conduit not synchronous to any clock signal.
Active high, synchronous reset signal.
out_clk
1
busy
1
Output Output
Clock source that generates from an internal oscillator.
The IP asserts this signal to indicate PR data transfer in progress. You enable this signal by selecting Enable for the Enable busy interface parameter.
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
5
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Reference Design Requirements
Use of this reference design requires the following: · Installation of the Intel Quartus Prime Pro Edition version 22.3 with support for
the Intel Agilex device family. · Connection to the Intel Agilex F-Series FPGA development board on the bench. · Download of the design example available in the following location:
https://github.com/intel/fpga-partial-reconfig To download the design example: 1. Click Clone or download. 2. Click Download ZIP. Unzip the fpga-partial-reconfig-master.zip
file. 3. Navigate to the tutorials/agilex_external_pr_configuration
subfolder to access the reference design.
Reference Design Walkthrough
The following steps describe implementation of partial reconfiguration via configuration pins (external host) on the Intel Agilex F-Series FPGA development board: · Step 1: Getting Started · Step 2: Creating a Design Partition · Step 3: Allocating Placement and Routing Regions · Step 4: Adding the Partial Reconfiguration External Configuration Controller IP · Step 5: Defining Personas · Step 6: Creating Revisions · Step 7: Compiling the Base Revision · Step 8: Preparing PR Implementation Revisions · Step 9: Programming the Board
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
6
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Step 1: Getting Started
To copy the reference design files to your working environment and compile the blinking_led flat design: 1. Create a directory in your working environment,
agilex_pcie_devkit_blinking_led_pr. 2. Copy the downloaded tutorials/agilex_pcie_devkit_blinking_led/flat
sub-folder to the directory, agilex_pcie_devkit_blinking_led_pr. 3. In the Intel Quartus Prime Pro Edition software, click File Open Project and
select blinking_led.qpf. 4. To elaborate the hierarchy of the flat design, click Processing Start Start
Analysis & Synthesis. Alternatively, at the command-line, run the following command:
quartus_syn blinking_led -c blinking_led
Step 2: Creating a Design Partition
You must create design partitions for each PR region that you want to partially reconfigure. The following steps create a design partition for the u_blinking_led instance.
Figure 3. Creating Design Partitions
1. Right-click the u_blinking_led instance in the Project Navigator and click Design Partition Reconfigurable. A design partition icon appears next to each instance that is set as a partition.
2. Click Assignments Design Partitions Window. The window displays all design partitions in the project.
3. Edit the partition name in the Design Partitions Window by double-clicking the name. For this reference design, rename the partition name to pr_partition.
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
7
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Figure 4.
Note: When you create a partition, the Intel Quartus Prime software automatically generates a partition name, based on the instance name and hierarchy path. This default partition name can vary with each instance.
4. To export the finalized static region from the base revision compile, double-click the entry for root_partition in the Post Final Export File column, and type blinking_led_static.qdb.
Exporting Post Final Snapshot in Design Partitions Window
Click to Show or Hide Columns
Verify that the blinking_led.qsf contains the following assignments, corresponding to your reconfigurable design partition:
set_instance_assignment -name PARTITION pr_partition -to u_blinking_led set_instance_assignment -name PARTIAL_RECONFIGURATION_PARTITION ON -to u_blinking_led
set_instance_assignment -name EXPORT_PARTITION_SNAPSHOT_FINAL blinking_led_static.qdb -to | -entity top
Related Information
“Create Design Partitions” in Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration
Step 3: Allocating Placement and Routing Region for a PR Partition
For every base revision you create, the PR design flow places the corresponding persona core in your PR partition region. To locate and assign the PR region in the device floorplan for your base revision:
1. Right-click the u_blinking_led instance in the Project Navigator and click Logic Lock Region Create New Logic Lock Region. The region appears on the Logic Lock Regions Window.
2. Your placement region must enclose the blinking_led logic. Select the placement region by locating the node in Chip Planner. Right-click the u_blinking_led region name in the Logic Lock Regions Window and click Locate Node Locate in Chip Planner.
The u_blinking_led region is color-coded.
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
8
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Figure 5. Chip Planner Node Location for blinking_led
Figure 6.
3. In the Logic Lock Regions window, specify the placement region co-ordinates in the Origin column. The origin corresponds to the lower-left corner of the region. For example, to set a placement region with (X1 Y1) co-ordinates as (163 4), specify the Origin as X163_Y4. The Intel Quartus Prime software automatically calculates the (X2 Y2) co-ordinates (top-right) for the placement region, based on the height and width you specify.
Note: This tutorial uses the (X1 Y1) co-ordinates – (163 4), and a height and width of 20 for the placement region. Define any value for the placement region. Ensure that the region covers the blinking_led logic.
4. Enable the Reserved and Core-Only options.
5. Double-click the Routing Region option. The Logic Lock Routing Region Settings dialog box appears.
6. Select Fixed with expansion for the Routing type. Selecting this option automatically assigns an expansion length of 2.
Note: The routing region must be larger than the placement region, to provide extra flexibility for the Fitter when the engine routes different personas.
Logic Lock Regions Window
Verify that the blinking_led.qsf contains the following assignments, corresponding to your floorplanning:
set_instance_assignment -name PLACE_REGION “X163 Y4 X182 Y23” -to u_blinking_led
set_instance_assignment -name RESERVE_PLACE_REGION ON -to u_blinking_led
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
9
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
set_instance_assignment -name CORE_ONLY_PLACE_REGION ON -to u_blinking_led
set_instance_assignment -name ROUTE_REGION “X161 Y2 X184 Y25” -to u_blinking_led
Related Information “Floorplan the Partial Reconfiguration Design” in Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration
Step 4: Adding the Partial Reconfiguration External Configuration Controller Intel FPGA IP
The Partial Reconfiguration External Configuration Controller Intel FPGA IP interfaces with the Intel Agilex PR control block to manage the bitstream source. You must add this IP to your design to implement external configuration.
Follow these steps to add the Partial Reconfiguration External Configuration Controller Intel FPGA IP to your project: 1. Type Partial Reconfiguration in the IP Catalog search field (Tools IP
Catalog). 2. Double-click Partial Reconfiguration External Configuration Controller Intel
FPGA IP. 3. In the Create IP Variant dialog box, type external_host_pr_ip as the File
name, and then click Create. The parameter editor appears. 4. For the Enable busy interface parameter, select Disable (the default setting).
When you need to use this signal, you can switch the setting to Enable.
Figure 7. Enable Busy Interface Parameter in Parameter Editor
5. Click File Save and exit the parameter editor without generating the system. The parameter editor generates the external_host_pr_ip.ip IP variation file and adds the file to the blinking_led project.
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
10
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Note:
Note: a. If you are copying the external_host_pr_ip.ip file from the pr directory, manually edit the blinking_led.qsf file to include the following line:
set_global_assignment -name IP_FILE pr_ip.ip
b. Place the IP_FILE assignment after the SDC_FILE assignments (blinking_led.sdc) in your blinking_led.qsf file. This ordering ensures appropriate constraining of the Partial Reconfiguration Controller IP core.
To detect the clocks, the .sdc file for the PR IP must follow any .sdc that creates the clocks that the IP core uses. You facilitate this order by ensuring that the .ip file for the PR IP core appears after any .ip files or .sdc files that you use to define these clocks in the .qsf file for your Intel Quartus Prime project revision. For more information, refer to the Partial Reconfiguration IP Solutions User Guide.
Updating the Top-Level Design
To update the top.sv file with the PR_IP instance:
1. To add the external_host_pr_ip instance to the top-level design, uncomment the following code blocks in the top.sv file:
///////////////////////////////////////////////////////// // Status signals from external PR IP /////////////////////////////////////////////////////////// input wire pr_request, output_wire pr_done, output_wire [1:0] pr_error
wire clock_out;
external_host_pr_ip u_pr_ip
.outclk
(clock_out),
.reset
(1’b0),
.pr_request (pr_request),
.pr_done
(pr_done),
.pr_error
(pr_error)
);
2. Save the file.
Step 5: Defining Personas
This reference design defines three separate personas for the single PR partition. To define and include the personas in your project: 1. Create three SystemVerilog files, blinking_led.sv, blinking_led_slow.sv,
and blinking_led_empty.sv in your working directory for the three personas.
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
11
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Table 3.
Reference Design Personas
File Name blinking_led.sv
Description
Default persona with same design as the flat implementation
Code
`timescale 1 ps / 1 ps `default_nettype none
module blinking_led ( // clock input wire clock, input wire [31:0] counter,
// Control signals for the LEDs output wire led_two_on, output wire led_three_on );
localparam COUNTER_TAP = 23;
reg led_two_on_r; reg led_three_on_r;
assign led_two_on = led_two_on_r; assign led_three_on = led_three_on_r;
always_ff @(posedge clock) begin
led_two_on_r <= counter[COUNTER_TAP]; led_three_on_r <= counter[COUNTER_TAP]; end
endmodule
blinking_led_slow.sv
LEDs blink slower
`timescale 1 ps / 1 ps `default_nettype none
module blinking_led_slow ( // clock input wire clock, input wire [31:0] counter,
// Control signals for the LEDs output wire led_two_on, output wire led_three_on );
localparam COUNTER_TAP = 27;
reg led_two_on_r; reg led_three_on_r;
assign led_two_on = led_two_on_r; assign led_three_on = led_three_on_r;
always_ff @(posedge clock) begin
led_two_on_r <= counter[COUNTER_TAP]; led_three_on_r <= counter[COUNTER_TAP]; end
endmodule
blinking_led_empty.sv
LEDs stay ON
`timescale 1 ps / 1 ps `default_nettype none
module blinking_led_empty( // clock input wire clock, input wire [31:0] counter,
// Control signals for the LEDs output wire led_two_on, output wire led_three_on );
// LED is active low assign led_two_on = 1’b0; assign led_three_on = 1’b0;
endmodule
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
12
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Note:
· blinking_led.sv is already available as part of the files you copy from the flat/ sub-directory. You can simply reuse this file.
· If you create the SystemVerilog files from the Intel Quartus Prime Text Editor, disable the Add file to current project option, when saving the files.
Step 6: Creating Revisions
The PR design flow uses the project revisions feature in the Intel Quartus Prime software. Your initial design is the base revision, where you define the static region boundaries and reconfigurable regions on the FPGA.
From the base revision, you create multiple revisions. These revisions contain the different implementations for the PR regions. However, all PR implementation revisions use the same top-level placement and routing results from the base revision.
To compile a PR design, you must create a PR implementation revision for each persona. In addition, you must assign revision types for each of the revisions. The available revision types are:
· Partial Reconfiguration – Base
· Partial Reconfiguration – Persona Implementation
The following table lists the revision name and the revision type for each of the revisions:
Table 4.
Revision Names and Types
Revision Name
blinking_led.qsf
blinking_led_default.qsf
blinking_led_slow.qsf
blinking_led_empty.qsf
Revision Type Partial Reconfiguration – Base Partial Reconfiguration – Persona Implementation Partial Reconfiguration – Persona Implementation Partial Reconfiguration – Persona Implementation
Setting the Base Revision Type
1. Click Project Revisions. 2. In Revision Name, select the blinking_led revision, and then click Set Current. 3. Click Apply. The blinking_led revision displays as the current revision. 4. To set the Revision Type for blinking_led, click Assignments Settings
General. 5. For Revision Type, select Partial Reconfiguration – Base, and then click OK. 6. Verify that the blinking_led.qsf now contains the following assignment:
##blinking_led.qsf set_global_assignment -name REVISION_TYPE PR_BASE
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
13
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Creating Implementation Revisions 1. To open the Revisions dialog box, click Project Revisions. 2. To create a new revision, double-click <<new revision>>. 3. In Revision name, specify blinking_led_default and select blinking_led for Based on revision. 4. For the Revision type, select Partial Reconfiguration – Persona Implementation.
Figure 8. Creating Revisions
5. Similarly, set the Revision type for blinking_led_slow and blinking_led_empty revisions.
6. Verify that each .qsf file now contains the following assignment:
set_global_assignment -name REVISION_TYPE PR_IMPL set_instance_assignment -name ENTITY_REBINDING
place_holder -to u_blinking_led
where, place_holder is the default entity name for the newly created PR implementation revision.
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
14
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Figure 9. Project Revisions
Step 7: Compiling the Base Revision
1. To compile the base revision, click Processing Start Compilation. Alternatively, the following command compiles the base revision:
quartus_sh –flow compile blinking_led -c blinking_led
2. Inspect the bitstream files that generate in the output_files directory.
Table 5.
Generated Files
Name
blinking_led.sof
blinking_led.pr_partition.rbf
Type Base programming file PR bitstream file for base persona
blinking_led_static.qdb
.qdb database file
Description
Used for full-chip base configuration
Used for partial reconfiguration of base persona.
Finalized database file used to import the static region.
Related Information
· “Floorplan the Partial Reconfiguration Design” in Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration
· “Applying Floorplan Constraints Incrementally” in Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration
Step 8: Preparing PR Implementation Revisions
You must prepare the PR implementation revisions before you can compile and generate the PR bitstream for device programming. This setup includes adding the static region .qdb file as the source file for each implementation revision. In addition, you must specify the corresponding entity of the PR region.
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
15
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
1. To set the current revision, click Project Revisions, select blinking_led_default as the Revision name, and then click Set Current.
2. To verify the correct source for each implementation revision, click Project Add/Remove Files in Project. The blinking_led.sv file appears in the file list.
Figure 10. Files Page
3. Repeat steps 1 through 2 to verify the other implementation revision source files:
Implementation Revision Name
Source File
blinking_led_default
blinking_led.sv
blinking_led_empty
blinking_led_empty.sv
blinking_led_slow
blinking_led_slow.sv
4. To verify the .qdb file associated with the root partition, click Assignments Design Partitions Window. Confirm that the Partition Database File specifies the blinking_led_static.qdb file, or double-click the Partition Database File cell to specify this file.
Alternatively, the following command assigns this file:
set_instance_assignment -name QDB_FILE_PARTITION blinking_led_static.qdb -to |
5. In the Entity Re-binding cell, specify the entity name of each PR partition that you change in the implementation revision. For the blinking_led_default implementation revision, the entity name is blinking_led. In this tutorial, you overwrite the u_blinking_led instance from the base revision compile with the new blinking_led entity.
Note: A placeholder entity rebinding assignment is added to the implementation revision automatically. However, you must change the default entity name in the assignment to an appropriate entity name for your design.
Implementation Revision Name
Entity Re-binding
blinking_led_default
blinking_led
blinking_led_slow
blinking_led_slow
blinking_led_empty
blinking_led_empty
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
16
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Figure 11. Entity Rebinding
Verify that each of the following lines now exists in the appropriate .qsf:
##blinking_led_default.qsf set_instance_assignment -name ENTITY_REBINDING blinking_led
-to u_blinking_led
##blinking_led_slow.qsf set_instance_assignment -name ENTITY_REBINDING blinking_led_slow
-to u_blinking_led
##blinking_led_empty.qsf set_instance_assignment -name ENTITY_REBINDING blinking_led_empty
-to u_blinking_led
6. To compile the design, click Processing Start Compilation. Alternatively, the following command compiles this project:
quartus_sh –flow compile blinking_led c blinking_led_default
7. Repeat the above steps to prepare blinking_led_slow and blinking_led_empty revisions:
quartus_sh –flow compile blinking_led c blinking_led_slow
quartus_sh –flow compile blinking_led c blinking_led_empty
Note: You can specify any Fitter specific settings that you want to apply during the PR implementation compilation. Fitter specific settings impact only the fit of the persona, without affecting the imported static region.
Step 9: Programming the Board
This tutorial uses an Intel Agilex F-Series FPGA development board on the bench, outside of the PCIe* slot in your host machine. Before you program the board, ensure that you have completed the following steps: 1. Connect the power supply to the Intel Agilex F-Series FPGA development board. 2. Connect the Intel FPGA Download Cable between your PC USB port and the Intel
FPGA Download Cable port on the development board.
To run the design on the Intel Agilex F-Series FPGA development board: 1. Open the Intel Quartus Prime software and click Tools Programmer. 2. In the Programmer, click Hardware Setup and select USB-Blaster. 3. Click Auto Detect and select the device, AGFB014R24AR0. 4. Click OK. The Intel Quartus Prime software detects and updates the Programmer
with the three FPGA devices on the board.
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
17
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
5. Select the AGFB014R24AR0 device, click Change File and load the blinking_led_default.sof file.
6. Enable Program/Configure for blinking_led_default.sof file. 7. Click Start and wait for the progress bar to reach 100%. 8. Observe the LEDs on the board blinking at the same frequency as the original flat
design. 9. To program only the PR region, right-click the blinking_led_default.sof file
in the Programmer and click Add PR Programming File. 10. Select the blinking_led_slow.pr_partition.rbf file. 11. Disable Program/Configure for blinking_led_default.sof file. 12. Enable Program/Configure for blinking_led_slow.pr_partition.rbf file
and click Start. On the board, observe LED[0] and LED[1] continuing to blink. When the progress bar reaches 100%, LED[2] and LED[3] blink slower. 13. To reprogram the PR region, right-click the .rbf file in the Programmer and click Change PR Programing File. 14. Select the .rbf files for the other two personas to observe the behavior on the board. Loading the blinking_led_default.rbf file causes the LEDs to blink at a specific frequency, and loading the blinking_led_empty.rbf file causes the LEDs to stay ON. Figure 12. Programming the Intel Agilex F-Series FPGA Development Board
Add the .sof file to the device Add the .rbf file to program the PR region Select the .rbf file to re-program the PR region
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
18
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Hardware Testing Flow
The following sequences describe the reference design hardware testing flow.
Figure 13.
Intel Agilex Device External Host Hardware Setup
External Device (Helper FPGA)
DUT FPGA
Your External
Host Design
busy pr_done pr_error pr_request out_clock
Partial Reconfiguration External Configuration Controller Intel FPGA
IP
Avalon
SDM
Streaming
x8,x16,x32
Interface
PR Region
Step 1: Program the Helper FPGA (External Host)
The following sequence describes programming the helper FPGA that operates as the PR process external host:
1. Specify the Avalon streaming interface setting that corresponds with the mode that you select (x8, x16, or x32).
2. Initialize the platform by programming the helper FPGA using the Intel Quartus Prime Programmer and connected configuration cable.
3. Using the helper FPGA, read the CONF_DONE and AVST_READY signals. CONF_DONE should be 0, AVST_READY should be 1. Logic high on this pin indicates the SDM is ready to accept data from an external host. This output is part of the SDM I/O.
Note: The CONF_DONE pin signals an external host that bitstream transfer is successful. Use these signals only to monitor the full chip configuration process. Refer to the Intel Agilex Configuration User Guide for more information on this pin.
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
19
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Step 2: Program the DUT FPGA with Full Chip SOF via External Host
The following sequence describes programming the DUT FPGA with the full chip SRAM Object File (.sof) using the host Avalon streaming interface: 1. Write the full chip bitstream into the DDR4 external memory of the helper FPGA
(external host). 2. Configure the DUT FPGA with the full chip .sof using the Avalon streaming
interface (x8, x16, x32). 3. Read the status DUT FPGA configuration signals. CONF_DONE should be 1,
AVST_READY should be 0.
Figure 14. Timing Specifications: Partial Reconfiguration External Controller Intel FPGA IP
Note:
Step 3: Program the DUT FPGA with the First Persona via External Host 1. Apply the freeze on the target PR region in the DUT FPGA. 2. Using the Intel Quartus Prime System Console, assert pr_request to start the
partial reconfiguration. AVST_READY should be 1. 3. Write the first PR persona bitstream into the DDR4 external memory of the helper
FPGA (external host). 4. Using Avalon streaming interface (x8, x16, x32), reconfigure the DUT FPGA with
the first persona bitstream. 5. To monitor the PR status, click Tools System Console to launch System
Console. In System Console, monitor the PR status: · pr_error is 2–reconfiguration in process. · pr_error is 3–reconfiguration is complete. 6. Apply unfreeze on the PR region in the DUT FPGA.
If an error occurs during PR operation, such as failure in version checking or authorization checking, the PR operation terminates.
Related Information · Intel Agilex Configuration User Guide · Intel Quartus Prime Pro Edition User Guide: Debug Tools
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
20
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design 750856 | 2022.11.14
Document Revision History for AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design for Intel Agilex F-Series FPGA Development Board
Document Version 2022.11.14
Intel Quartus Prime Version
22.3
· Initial release.
Changes
Send Feedback
AN 991: Partial Reconfiguration via Configuration Pins (External Host) Reference Design: for Intel Agilex F-Series FPGA Development Board
21
References
Search - Intel Communities
GitHub - intel/fpga-partial-reconfig: Tutorials, scripts and reference designs for the Intel FPGA partial reconfiguration (PR) design flow
1. Overview
1. Answers to Top FAQs
2.6.3.1. Applying Floorplan Constraints Incrementally
2.6.2. Step 2: Create Design Partitions
2.6.3. Step 3: Floorplan the Design
1. Answers to Top FAQs
Intel | Data Center Solutions, IoT, and PC Innovation
Intel® FPGAs and Programmable Devices-Intel® FPGA
Intel FPGA Technical Training Catalog | Intel
Intel ISO 9001:2015 Registrations
















