comment on this article

Developing all programmable logic using the SDSoC environment

Figure 1 - The project overview – the heart of SDSoC

The traditional development flow of an all programmable Zynq SoC segments the design between processor system and programmable logic. The Zynq is a complex heterogeneous system which combines advanced ARM dual core Cortex-A9 processing systems with programmable logic. This programmable logic provides not only the traditional Flip Flops and Look Up Tables but also block RAM and distributed RAM, DSP Slices, PCIe endpoints and multi-gigabit transceivers. Users need a development environment which enables them to exploit the capability provided by both the processor and the programmable logic.

This new paradigm comes in the form of the eclipse-based tool SDSoC Design Environment which enables the development of the SoC using only a software environment and using a high-level language like C or C++. This tool – via a combination of High Level Synthesis and a software defined connectivity framework – connects the results of the HLS into the software application. Such an approach enables the design team to move functions between the processor and the programmable logic with the click of a button. Of course, when users move functionality to the programmable logic they also gain a significant performance increase which comes naturally with the use of the programmable logic.

Within the SDSoC environment, they can alse use several different operating systems on the processors from Linux to FreeRTOS and, of course, a bare metal approach.

Development flow
Developing a Zynq system within the SDSoC environment requires a platform definition split into two sections:

  • Hardware definition – The configuration of the processor (MIO, Clocks or other) and any existing designs within the programmable logic. This hardware definition defines the available resources to SDSoC, such as clocks and their frequency or available AXI ports and interrupts. This is extracted from the Vivado design.
  • Software definition – The configuration of the software environment defines the location of operating system components, software libraries and directories. If developers are using Linux, it also shows the location to the image file.
  • If users do not want to define a platform, they can use a pre-defined development board such as the ZedBoard, Zybo or Zc702.

    With the platform selected, the development flow allows developers to:

    1.Develop the application in our high-level language

    2.Analyse the design using provided performance monitors to determine bottlenecks in performance

    3.Accelerate the bottleneck functions into the programmable logic using the SDSoC project overview

    4.Re-validate the performance and, if necessary, select other functions to be accelerated as well.

    To obtain the best performance in the programmable logic, users may need to define some optimisation pragmas within the function to be accelerated, so that they can define what optimisations the HLS tool performs. As SDSoC is also aware of the available clocks and their frequencies, they can control both the frequency of the data motion network which transfers data to and from the accelerated cores and the frequency of the cores themselves.

    Library support
    To enable faster development of the end application, SDSoC comes with several HLS libraries which the developers can use in their applications. There are several libraries and stacks which can be used as part of the development. These include:

  • reVISION Stack – Provides a three-element development stack which enables the use of OpenCV and Caffe, along with a range of commonly used neural network open source frameworks for embedded vision applications. reVISION includes multiple acceleration-capable OpenCV functions.
  • Math Library – Provides synthesisable implementations of the standard math libraries.
  • IP Library – Provides IP libraries for implementing FFT, FIR, and Shift Register LUT functions.
  • Linear Algebra Library – Provides a library of commonly used linear algebra functions.
  • Arbitrary Precision Data Types Library – Provides support for non-power-of-2, arbitrary length data using signed and unsigned integers. This library allows developers to use the FPGA’s resources more efficiently.
  • As these libraries have been developed to support HLS, they provide the development team with a considerable boost as they do not need to develop similar functions.

    Real world example
    To demonstrate the benefits gained by acceleration and the impact of the operating system selected, an Advanced Encryption Standard (AES) example was developed. AES is commonly used in embedded systems to protect data within a system or data which is entering or leaving the system. AES is also a good example of an algorithm which is described at a high level, but best implemented in programmable logic fabric. The developed AES 256 application was targeted at each of the three operating systems supported by SDSoC, first running only in the processor system and then in the programmable logic.

    Figure 2 - AES Acceleration results for different SDSoC operating systems

    Debugging and optimising performance
    Within the SDSoC development environment, developers can use traditional software debugging techniques such as the insertion and exploitation of breakpoints along with examining memory and register contents. Once identified functions have been accelerated, there are instances where developers need to understand the further interaction between processor and programmable logic. SDSoC provides two methods the developers can use to fine-tune their application: AXI profiling and tracing - both options are instrumental to the design and provide additional hardware functionality to the programmable logic. Profiling provides high level information on the interaction between the processor and the programmable logic, while tracing is more in-depth and enables developers to see considerable detail regarding the hardware/software interaction.

    Figure 3 - Results of tracing an example application (orange = software, green = accelerated function and blue = transfer)

    Conclusion
    SDSoC enables the development of all programmable SoCs using a high-level language, with the functional partitioning between the processor and the programmable logic able to be optimised once the application functionality has been developed and prototyped using the processor.

    With several HLS-ready libraries provided to use in the development of the application, these can reduce the development time while still benefiting from the ability to accelerate functions in the design with ease.

    Author profiles
    Nick Ni is senior product manager of SDSoC and Embedded Vision at Xilinx, and Adam Taylor is an embedded systems consultant at Xilinx.

    Author
    Nick Ni and Adam Taylor

    Comment on this article


    Websites

    http://www.xilinx.com/

    Companies

    Xilinx Ltd

    This material is protected by MA Business copyright See Terms and Conditions. One-off usage is permitted but bulk copying is not. For multiple copies contact the sales team.

    What you think about this article:


    Add your comments

    Name
     
    Email
     
    Comments
     

    Your comments/feedback may be edited prior to publishing. Not all entries will be published.
    Please view our Terms and Conditions before leaving a comment.

    Related Articles

    ST buys Atollic

    STMicroelectronics is acquiring the software-development tools specialist ...

    Peeling the onion

    The Internet of Things is developing from being a concept just a few years ago ...

    The Sonic Internet

    Whether in the smart home or in in-car entertainment the audio market is ...

    Get to market faster

    A quick look at using Vicor's PFM and AIM in VIA packaging for your AC to Point ...

    Life without GitHub?

    The software development platform and code sharing repository GitHub celebrates ...

    Broadband upgrade

    BT has made an offer to the government to spend £600million to deliver 10Mbps ...

    The big build

    It’s fair to say that politicians, with a few noticeable exceptions, have never ...

    Shaping the future

    Alexander Everke, the CEO of ams, started his career in the semiconductor ...