Intel® Simics® Simulator for Intel® FPGAs: Agilex™ 5 Virtual Platform User Guide

ID 786901
Date 11/16/2024
Public
Document Table of Contents

2.1.1.3. FPGA Fabric Design

The FPGA fabric design corresponds to the logic model implemented in the FPGA fabric in the Agilex™ 5 GHRD. This model includes the following components instantiated under the qsys_top component:
  • FPGA-to-HPS bridge memory spaces are created under the FPGA fabric design and are connected to the HPS and SDRAM components through the actual FPGA-to-HPS bridges in the HPS. Initiators in the FPGA logic model use these memory spaces to start read/write operations directed to the HPS or SDRAM components.
    • The FPGA to HPS memory space (fpga2hps_mem_space) is connected to HPS through the FPGA to HPS bridge (fpga2hps).
    • The FPGA to SDRAM memory space (f2sdram_mem_space) is connected to SDRAM through the FPGA to SDRAM bridge (f2sdram).
  • On-Chip memory example design with read/write capabilities connected to the hps2fpga bridge.
  • Peripheral subsystem includes the model of three parallel input/output cores for a dip switch, a push button, and LEDs. These cores are connected via the lwhps2fpga bridge.

HPS can access the On-Chip memory and the peripheral components through the HPS-to-FPGA bridges.

For the On-Chip memory example design, the base address offset mapped to the corresponding hps2fpga bridge (base_addr parameter) in this virtual platform is set to 0x00. The On-chip memory device is modeled as a DML device using the example_design.dml file and is instantiated in the fabric example design, which is implemented as a Python script named sm_fabric_example_design_comp.py.

The peripheral subsystem is mapped under the lwhps2fpga bridge at a 0x20000000 address. The peripheral subsystem is implemented as a Python script in the sm_ghrd_subsys_periph_comp.py file. Here, the IP components are instantiated and mapped at their memory region (relative to the mapping address indicated above). The DIP switch and push button can trigger an interrupt to the HPS on the assertion of the corresponding input signal. The following table describes the interrupts defined and their connections with the HPS under the qsys_top component:

Table 5.  Defined Interrupts and Their Connections
Component Interrupt HPS Interrupt Connection
button_pio periph_button_irq f2s_fpga_irq[0] – SIP 49
dipsw_pio periph_dipsw_irq f2s_fpga_irq[1] – SIP 50

The following diagram shows the peripheral subsystem interrupts connection:

Figure 2. Peripheral Subsystem Interrupts Connection
Note: In the current implementation of this virtual platform, all bridges (FPGA/HPS in both directions) are released from reset at POR by the SDM mailbox model. However, in the real hardware, the HPS software performs this task.

A block diagram of the FPGA Fabric design is shown in the following figure:

Figure 3. FPGA Fabric Design Block Diagram

The hierarchical names of the FPGA Fabric design components are:

  • FPGA On-Chip memory example design connected to hps2fpga bridge: system.board.fpga.soc_inst.example_design
  • Peripheral subsystem components connected to lwhps2fpga bridge:
    • system.board.fpga.soc_inst.periph_subsys
    • system.board.fpga.soc_inst.periph_subsys.button_pio
    • system.board.fpga.soc_inst.periph_subsys.dipsw_pio
    • system.board.fpga.soc_inst.periph_subsys.led_pio
  • FPGA-to-HPS bridge memory space for HPS (fpga2hps_mem_space): system.board.fpga.soc_inst.fpga2hps_mem_space
  • FPGA-to-HPS bridge memory space for SDRAM (f2sdram_mem_space): system.board.fpga.soc_inst.f2sdram_mem_space