Image

Design Tool Streamlines SoC FPGA Application Creation

May 26, 2015
Xilinx’s SDSoC development environment turns code into FPGA logic. It targets Xilinx Zynq and Zynq MPSoC FPGA platforms.

Xilinx’s SDSoC represents a major shift in support for SoC FPGAs. It opens FPGA development to software developers without requiring a major investment in time and effort to utilize the hardware design tools.

Xilinx’s original Zynq-7000 included a 32-bit, dual-core ARM Cortex-A9 with its FPGA (see “FPGA Packs in Dual-Cortex-A9 Micro”). The latest Zynq MPSoC pushes the envelope with a 64-bit, quad-core, Cortex-A53 plus a dual Cortex-R5 (see “16-nm FPGA Includes 64-bit and Lockstep ARM Cortex Cores”). They can greatly simplify FPGA designs by incorporating a system-on-chip with the FPGA fabric providing an efficient programming platform that can be easily melded with logic implemented by the fabric.

In the past, hardware designers would develop the FPGA logic that could then be accessible by the software created by programmers that would run on the SoC’s CPUs. Converting parts of an application so they would reside in the FPGA fabric was next to impossible for most programmers and a challenge for many hardware designers. The task is more than just designing the logic necessary to implement a logical “black box.” There is also the hardware and software interface support.

Xilinx’s Vivado FPGA integrated development environment (IDE) has made the task of creating designs that support the SoCs much easier (see “FPGA Design Suite Generates Global Minimum Layout”). Still, it required a hardware and software designer to collaborate, regardless of the complexity of the system.

Xilinx’s new SDSoC builds on Vivado, but adds the ability to designate a portion of C/C++ code to be moved to the FPGA fabric instead of being implemented in software (Fig. 1). SDSoC handles the translation C/C++ to HDL generating the corresponding FPGA interface as well as providing the software interface to the logic moved to the FPGA fabric.

1. Xilinx’s SDSoC allows software developers to select code to be converted and moved to the FPGA. It also provides the profiling tools to test these changes.

The desire is to offload the CPU and utilize the FPGA’s inherent parallelism to provide a major performance boost to the application. Of course, some translations will prove more efficient than others because it is possible to use this approach and wind up with a system that runs slower than software alone. This is regardless of whether the translation is done by SDSoC software or a person. This is why the inclusion of profiling support is so important (Fig. 2).

2. SDSoC’s profiler provides feedback on how efficient the programmable logic is compared to its software-only counterpart.

The system-level profile provides software/hardware cycle accurate performance and hardware utilization information. The system provides automatic creation and instrumentation of cache, memory, and bus utilization using the AXI-Performance Monitor (APM). This allows exploration of different interconnect and memory interfaces.

Using the system from the IDE is a matter of selecting the functions that will be migrated to hardware. The profiling provides rapid area and performance estimation. The optimizing compilers can convert serial programs into parallel implementations. Different data import/export models can be used, such as DMA scatter-gather.

SDSoC supports software that runs on operating systems like Linux and FreeRTOS as well as bare-metal software applications. The software support is an extension of the Xilinx SDK that runs on the Eclipse IDE.

Software debugging works as usual until code is moved into the FGPA, at which point the interfaces can have breakpoints but similar access to the FGPA logic is not possible. Breakpoints can still be used when in “estimation” mode. This is essentially the midpoint between full software implementation and full hardware implementation of the function where the program is running within a simulation of the FPGA used to obtain profile data that a developer can evaluate.

Xilinx is also delivering libraries created using this approach. They have been optimized by Xilinx designers and the same approach can be used with third-party platforms. These include libraries like BLAS and OpenCV as well as DSP, video, fixed-point, and linear algebra libraries. These are C-callable libraries that can be used with a C application.

SDSoC can be used with existing Zynq development boards like the Zed Board and MicroZed (see “Hard-Core FGPA Provides a Flexible Development Target”). Market-specific platforms will be delivered for applications like video and software defined radio (SDR) that take advantage of migration of software libraries to the Zynq-based FPGAs.

The SDSoC software is not part of the free Xilinx IDE available with many Zynq boards, but the hardware designs created by SDSoC can be incorporated into any Vivado project. This means it is possible for a designer to migrate portions of an application to the FPGA fabric and provide this IP to others in the same fashion as a custom IP design done using the conventional FPGA design tools. SDSoC will be offered both as a standalone tool and bundled with the Vivado Design Suite System Edition.

About the Author

William G. Wong | Senior Content Director - Electronic Design and Microwaves & RF

I am Editor of Electronic Design focusing on embedded, software, and systems. As Senior Content Director, I also manage Microwaves & RF and I work with a great team of editors to provide engineers, programmers, developers and technical managers with interesting and useful articles and videos on a regular basis. Check out our free newsletters to see the latest content.

You can send press releases for new products for possible coverage on the website. I am also interested in receiving contributed articles for publishing on our website. Use our template and send to me along with a signed release form. 

Check out my blog, AltEmbedded on Electronic Design, as well as his latest articles on this site that are listed below. 

You can visit my social media via these links:

I earned a Bachelor of Electrical Engineering at the Georgia Institute of Technology and a Masters in Computer Science from Rutgers University. I still do a bit of programming using everything from C and C++ to Rust and Ada/SPARK. I do a bit of PHP programming for Drupal websites. I have posted a few Drupal modules.  

I still get a hand on software and electronic hardware. Some of this can be found on our Kit Close-Up video series. You can also see me on many of our TechXchange Talk videos. I am interested in a range of projects from robotics to artificial intelligence. 

Sponsored Recommendations

Comments

To join the conversation, and become an exclusive member of Electronic Design, create an account today!