Visible to Intel only — GUID: icu1491859490455
Ixiasoft
1.1. Partial Reconfiguration Terminology
1.2. Partial Reconfiguration Process Sequence
1.3. Internal Host Partial Reconfiguration
1.4. External Host Partial Reconfiguration
1.5. Partial Reconfiguration Design Flow
1.6. Partial Reconfiguration Design Considerations
1.7. Hierarchical Partial Reconfiguration
1.8. Partial Reconfiguration Design Timing Analysis
1.9. Partial Reconfiguration Design Simulation
1.10. Partial Reconfiguration Design Debugging
1.11. Partial Reconfiguration Security ( Intel® Stratix® 10 Designs)
1.12. PR Bitstream Compression and Encryption ( Intel® Arria® 10 and Intel® Cyclone® 10 GX Designs)
1.13. Avoiding PR Programming Errors
1.14. Exporting a Version-Compatible Compilation Database for PR Designs
1.15. Creating a Partial Reconfiguration Design Revision History
1.5.1. Step 1: Identify Partial Reconfiguration Resources
1.5.2. Step 2: Create Design Partitions
1.5.3. Step 3: Floorplan the Design
1.5.4. Step 4: Add the Partial Reconfiguration Controller Intel® FPGA IP
1.5.5. Step 5: Define Personas
1.5.6. Step 6: Create Revisions for Personas
1.5.7. Step 7: Compile the Base Revision and Export the Static Region
1.5.8. Step 8: Setup PR Implementation Revisions
1.5.9. Step 9: Program the FPGA Device
1.6.1. Partial Reconfiguration Design Guidelines
1.6.2. PR Design Timing Closure Best Practices
1.6.3. PR File Management
1.6.4. Evaluating PR Region Initial Conditions
1.6.5. Creating Wrapper Logic for PR Regions
1.6.6. Creating Freeze Logic for PR Regions
1.6.7. Resetting the PR Region Registers
1.6.8. Promoting Global Signals in a PR Region
1.6.9. Planning Clocks and other Global Routing
1.6.10. Implementing Clock Enable for On-Chip Memories with Initialized Contents
2.1. Internal and External PR Host Configurations
2.2. Partial Reconfiguration Controller Intel® FPGA IP
2.3. Partial Reconfiguration Controller Intel® Arria® 10 /Cyclone 10 FPGA IP
2.4. Partial Reconfiguration External Configuration Controller Intel® FPGA IP
2.5. Partial Reconfiguration Region Controller Intel® FPGA IP
2.6. Avalon® Memory-Mapped Partial Reconfiguration Freeze Bridge IP
2.7. Avalon® Streaming Partial Reconfiguration Freeze Bridge IP
2.8. Generating and Simulating Intel® FPGA IP
2.9. Intel® Quartus® Prime Pro Edition User Guide: Partial Reconfiguration Archive
2.10. Partial Reconfiguration Solutions IP User Guide Revision History
2.3.1. Agent Interface
2.3.2. Reconfiguration Sequence
2.3.3. Interrupt Interface
2.3.4. Parameters
2.3.5. Ports
2.3.6. Timing Specifications
2.3.7. PR Control Block and CRC Block Verilog HDL Manual Instantiation
2.3.8. PR Control Block and CRC Block VHDL Manual Instantiation
2.3.9. PR Control Block Signals
2.3.10. Configuring an External Host for Intel® Arria® 10 or Intel® Cyclone® 10 GX Designs
2.8.1. Specifying the IP Core Parameters and Options ( Intel® Quartus® Prime Pro Edition)
2.8.2. Running the Freeze Bridge Update script
2.8.3. IP Core Generation Output ( Intel® Quartus® Prime Pro Edition)
2.8.4. Intel® Arria® 10 and Intel® Cyclone® 10 GX PR Control Block Simulation Model
2.8.5. Generating the PR Persona Simulation Model
Visible to Intel only — GUID: icu1491859490455
Ixiasoft
1.9.1.1. Simulating PR Persona Replacement
The logical operation of the PR partition changes when a new persona loads during the partial reconfiguration process. Simulate the replacement of personas using multiplexers on the input and output of the persona under simulation. Create RTL wrapper logic to represent the top-level of the persona. The wrapper instantiates the default persona during compilation. During simulation, the wrapper allows the replacement of the active persona with another persona. Instantiate each persona as the behavioral RTL in the PR simulation model the Intel® Quartus® Prime EDA Netlist Writer generates. The Intel® Quartus® Prime software includes simulation modules to interface with your simulation testbench:
- altera_pr_wrapper_mux_in
- altera_pr_wrapper_mux_out
- altera_pr_persona_if (SystemVerilog interface allows you to connect the wrapper multiplexers to a testbench driver)
Figure 30. Simulation of PR Persona Switching
RTL Wrapper for PR Persona Switching Simulation
The pr_activate input of the altera_pr_wrapper_mux_out module enables the MUX to output X. This functionality allows the simulation of unknown outputs from the PR persona, and also verifies the normal operation of the design’s freeze logic. The following code corresponds to the simulation of PR persona switching, shown in the above figure:
module pr_core_wrapper
(
input wire a,
input wire b,
output wire o
);
localparam ENABLE_PERSONA_1 = 1;
localparam ENABLE_PERSONA_2 = 1;
localparam ENABLE_PERSONA_3 = 1;
localparam NUM_PERSONA = 3;
logic pr_activate;
int persona_select;
altera_pr_persona_if persona_bfm();
assign pr_activate = persona_bfm.pr_activate;
assign persona_select = persona_bfm.persona_select;
wire a_mux [NUM_PERSONA-1:0];
wire b_mux [NUM_PERSONA-1:0];
wire o_mux [NUM_PERSONA-1:0];
generate
if (ENABLE_PERSONA_1) begin
localparam persona_id = 0;
`ifdef ALTERA_ENABLE_PR_MODEL
assign u_persona_0.altera_sim_pr_activate = pr_activate;
`endif
pr_and u_persona_0
(
.a(a_mux[persona_id]),
.b(b_mux[persona_id]),
.o(o_mux[persona_id])
);
end
endgenerate
generate
if (ENABLE_PERSONA_2) begin
localparam persona_id = 1;
`ifdef ALTERA_ENABLE_PR_MODEL
assign u_persona_1.altera_sim_pr_activate = pr_activate;
`endif
pr_or u_persona_1
(
.a(a_mux[persona_id]),
.b(b_mux[persona_id]),
.o(o_mux[persona_id])
);
end
endgenerate
generate
if (ENABLE_PERSONA_3) begin
localparam persona_id = 2;
`ifdef ALTERA ENABLE PR MODEL
assign u_persona_2.altera_sim_pr_activate = pr_activate;
`endif
pr_empty u_persona_2
(
.a(a_mux[persona_id]),
.b(b_mux[persona_id]),
.o(o_mux[persona_id])
);
end
endgenerate
altera_pr_wrapper_mux_in #(.NUM_PERSONA(NUM_PERSONA), .WIDTH(1)) \
u_a_mux(.sel(persona_select), .mux_in(a), .mux_out(a_mux));
altera_pr_wrapper_mux_in #(.NUM_PERSONA(NUM_PERSONA), .WIDTH(1)) \
u_b_mux(.sel(persona_select), .mux_in(b), .mux_out(b_mux));
altera_pr_wrapper_mux_out #(.NUM_PERSONA(NUM_PERSONA), .WIDTH(1)) \
u_o_mux(.sel(persona_select), .mux_in(o_mux), .mux_out(o), .pr_activate \
(pr_activate));
endmodule