Back to top

Step-by-Step Guide to FPGA and Software Integration in Modern MPSoC Designs

23 October 2024

As technology advances, MPSoC (Multiprocessor System-on-Chip) architectures are becoming a preferred choice for high-performance embedded systems in sectors such as aerospace, automotive, telecommunications, and defense. These systems integrate multiple processing units, programmable logic, and other components into a single chip, enabling greater efficiency and flexibility.

In a recent Fidus Tech Talk, FPGA (Field Programmable Gate Array) designer Chris Tippett and senior embedded software designer Jeremy Brooks discussed how FPGA design and software design integration is crucial to optimizing real-time performance in MPSoC systems. This blog outlines the key takeaways, practical tips, and real-world examples shared during the talk.

The Importance of FPGA and Software Co-Design

FPGA and software co-design is essential for unlocking the full potential of MPSoC architectures. These systems, such as AMD’s Zynq Ultrascale+ or Intel’s Stratix 10SX, combine multiple processing cores with programmable logic to execute complex tasks efficiently. During the talk, Chris Tippett emphasized that integration is not merely about fitting both components together but about co-designing them to work in harmony, maximizing system performance.

“This webinar will dive into the importance of FPGA and software integration, highlighting how critical FPGA and software co-design is to achieve the best results possible.”Chris Tippett, FPGA Designer, Fidus

Key points:

  • Increased efficiency: Co-designing FPGA and software reduces the need for multiple revisions and reworks, enabling faster time-to-market.
  • Optimized resource allocation: By analyzing which tasks are best suited for FPGA versus software, designers can ensure that each component handles its workload effectively.
  • Real-time processing: MPSoCs require real-time responsiveness, which can only be achieved when FPGA and software are designed to communicate seamlessly.

Fidus, an expert in FPGA design and embedded software, delivers precision-driven solutions through their “First-Time-Right” approach, ensuring that designs are optimized from the start.

Architecture Considerations for MPSoC Systems

The foundation of successful FPGA and software co-design lies in carefully planning the system architecture. Both teams need to collaborate early in the design phase to ensure that system resources are allocated properly and performance targets are met.

Key architectural considerations include:

  • Real-time responsiveness: Architecting the system to ensure tasks that require low latency and deterministic behavior are allocated to the FPGA.
  • Processor integration: MPSoCs integrate various processing cores (APUs, RPUs) with programmable logic, memory, and I/O devices. Understanding how these components interact is vital.
  • Task partitioning: Deciding which tasks should be handled by FPGA and which by software.
MPSoC Overview

Which Functions Are Best Suited for FPGA vs. Software?

One of the key discussions during the Tech Talk was how to decide which functions should be handled by FPGA versus software. This decision greatly impacts system performance and efficiency

“Ultimately, the FPGA and software both have their advantages in a system. Certain functions are better performed by software, and certain functions are better performed by the FPGA. Deciding which one is best is always going to be imperative to creating a good solution.”- Jeremy Brooks, Senior embedded software designer, Fidus

Tasks suited for FPGA:

  • High-speed, repetitive tasks: FPGAs are perfect for continuous data processing, like video streaming. Discover how FPGAs are driving technological innovations and improving efficiency across industries. Learn more about FPGA innovation.
  • Parallel processing: FPGAs handle simultaneous data streams efficiently. Find out how integrating FPGAs into embedded systems can enhance performance. Explore FPGA integration.
  • Real-time, low-latency tasks: FPGAs are critical in real-time systems like drone imaging. Overcoming FPGA challenges in high-speed data capture is key for systems requiring immediate responses. Read about overcoming FPGA challenges.

Tasks suited for software:

  • User interfaces: Software excels in managing graphical and command-line interfaces. For insights into building robust embedded software, explore advanced techniques used in development. Discover advanced software techniques.
  • Non-time-sensitive tasks: Software is ideal for tasks like memory management and data parsing, especially in complex embedded systems. Learn more about integrating software with Zynq UltraScale.
  • Complex state machines: Highly complex functions that would consume significant FPGA resources can often be handled more efficiently in software.

Interfaces for FPGA and Software Communication

To achieve effective co-design, it is crucial to define the interfaces between FPGA and software early in the development process. These interfaces allow the two systems to communicate and work together efficiently.

Common interfaces include:

  • Memory-mapped registers: Software and FPGA can both access control and status registers to monitor system states and manage commands.
  • GPIO pins: General-purpose input/output pins enable interaction between programmable logic (PL) and the processor subsystem (PS).
  • Interrupt handling: FPGA can generate interrupts, which the embedded processor (software) handles to respond to real-time events.
  • Direct Memory Access (DMA): DMA allows large blocks of data to be transferred between FPGA and software with minimal CPU involvement. This is particularly useful for high-throughput tasks like video frame processing.

Best practices for designing interfaces:

  • Plan the layout and format of control and status registers carefully to minimize complexity and ease interaction between FPGA and software teams.
  • Define the interface requirements early to ensure smooth integration later in the project.

Best Practices for FPGA and Software Co-Design

Effective FPGA and software co-design relies on collaboration and regular communication between teams throughout the project lifecycle. Jeremy Brooks stressed the importance of early involvement and frequent integration points to ensure alignment between hardware and software development.

Key best practices include:

  1. Early engagement: Involve both FPGA and software teams from the start of the project. This helps align goals and ensures that the final product meets performance requirements.
  2. Agile workflows: Use frequent integration points to make sure FPGA and software components evolve together, reducing the need for extensive rework later.
  3. Frequent code drops: Regular code updates allow for continuous feedback and testing, ensuring that any issues are caught early in the development process.
  4. Iterative design: Make small adjustments as the project progresses, allowing the team to pivot quickly if necessary and avoid major design overhauls.

Practical Tools and Techniques for FPGA and Software Integration

During the talk, speakers discussed several tools that are essential for integrating design effectively.

Tools for FPGA and software co-design:

  • Vivado Suite (for AMD devices): Used to generate FPGA designs and produce XSA files that contain information about the FPGA hardware, including the bitstream.
  • Vitis and PetaLinux: These platforms support building bare-metal, FreeRTOS, or embedded Linux distributions depending on the project’s requirements. Fidus uses these tools to configure the ideal software platform, ensuring compatibility with the available hardware.
  • OpenAMP: Facilitates task management between multiple processors in an MPSoC system, allowing seamless communication between processing elements like APU and RPU.

By using these tools, Fidus ensures smooth integration, reducing development time and improving system performance.

Client Success Stories

To showcase how these best practices translate into real-world results, here are two client success stories where Fidus applied FPGA and software co-design to overcome technical challenges and deliver cutting-edge solutions.

Sidewinder Project: Accelerating Data Processing

Fidus worked on the Sidewinder project, a storage accelerator PCIe card based on AMD’s Zynq Ultrascale+ ZU19EG. This solution drastically reduced latency and increased processing speeds for data-heavy applications such as NVMe storage and high-performance computing.

  • Key features: Sidewinder includes two M.2 sockets supporting NVMe SSDs, allowing for rapid data processing.
  • Outcome: The system can transmit, receive, and store tens of gigabytes per second of data, offering breakthrough performance for data centers and financial transactions.

“Sidewinder is a prime example of how FPGA and software coordination can accelerate high-performance applications, reducing latency and increasing overall efficiency.”- Chris Tippett, FPGA Designer, Fidus

Fidus-Sidewinder

Genetic Sequencing Project: Low-Latency, High-Bandwidth Data Movement

In another project, Fidus helped a Fortune 500 pharmaceutical company develop a low-latency, high-bandwidth solution for genetic sequencing data. Using Sidewinder, the solution enabled the efficient movement and storage of more than 150 GB of digitized genetic data, helping data scientists accelerate machine learning applications.

  • Challenges: The project required large-scale data movement between processors with ultra-low latency to train machine learning models more efficiently.
  • Solution: Fidus used Sidewinder combined with a AMD/Xilinx Zynq Ultrascale+ MPSoC to create a system capable of moving and processing tens of gigabytes of data per second.

“Defining the right interface parameters and holding both sides accountable to them in weekly project management meetings ensured a low-risk integration. Everyone involved had a line of sight to successful implementation.”-Fidus Engineering Team

The Fidus Sidewinder platform. When used with AMD Zynq Ultrascale+ MPSoC, engineers can transmit, receive, and store data.

Explore more successful projects in Fidus’ portfolio and see how we’ve solved complex technical challenges for leading companies.

During the Q&A session, Chris and Jeremy answered questions from attendees about co-design challenges and future trends.

Key insights from the Q&A:

  • Future of FPGA and software co-design: The need for integration will remain crucial as SoC technologies evolve. As new platforms like AMD’s Embedded+ emerge, integrating both FPGA and software will continue to be a primary approach to achieving cutting-edge performance.
  • Common co-design challenges: One challenge is ensuring early involvement of both teams to avoid changes late in the development cycle that require significant rework. Coordination from the start reduces misalignment between FPGA and software teams.
  • Testing FPGA vs. software tasks: Jeremy advised that engineers should evaluate the complexity and timing requirements of tasks to determine whether they are better suited for FPGA or software. Time-sensitive tasks often benefit from FPGA’s deterministic performance, while more flexible tasks can be handled by software.

Conclusion

The Fidus Tech Talk offered valuable insights into how to co-design FPGA and software for MPSoC architectures, with a focus on achieving real-time efficiency and optimizing system performance. By applying best practices like early collaboration, leveraging the right tools, and clearly defining task allocation, engineers can streamline development processes and avoid costly reworks.

If you’re working on an MPSoC project, consider the best practices shared by Chris Tippett and Jeremy Brooks to ensure seamless FPGA and software integration. For a more in-depth look at these topics, you can watch the full Fidus Tech Talk on-demand

Related articles

Back to News
Outsourcing Electronic design services image.
Achieving 3D Visualization with Low-Latency, High-Bandwidth Data Acquisition, Transfer, and Storage

High-bandwidth, low-latency solutions come with tradeoffs. To find the right solution for 3D visualization, consider the following requirements:

Read now
Data Scientists Reduce POC development timeline by 75% with Fidus Sidewinder

Today’s analysis and emulation of genetic sequences demands a low-latency, high-bandwidth solution to transfer massive amounts of data between processors.

Read now
How Determinism and Heterogeneous Computing Impact Ultra Low-Latency Applications

Creating a differentiated product takes a thoughtful approach to heterogeneous computing.

Read now

Experience has taught us how to solve problems on any scale

Trust us to deliver on time. That’s why 95% of our customers come back.

Contact us