SemiEngineering: Divided On System Partitioning

By nileshthiagarajan

Excerpt from article: “Divided On System Partitioning

Building an optimal implementation of a system using a functional description has been an industry goal for a long time, but it has proven to be much more difficult than it sounds.

The general idea is to take software designed to run on a processor and to improve performance using various types of alternative hardware. That performance can be specified in various ways and for specific applications. The problems start when you try to automate the function, especially when the starting point for software is probably in pure C or C++. These are very general-purpose languages, which makes them very difficult to analyze and manipulate for anything other than a defined instruction set processor.

Today’s systems often contain multiple heterogenous processors, including DSPs, GPUs and various sizes of CPUs. They also may contain programmable fabrics, and some pieces of the system require custom accelerators.

Sticking with software

Software has a lot of positive characteristics. “Most notably, it can be updated in the field,” says Russell Klein, HLS platform director at Siemens EDA. “Today it can often be updated over the air, sometimes without any assistance from the end user. This means you can fix bugs and add features, which you can’t do with fixed hardware. Keeping things in software minimizes risk, not just during development but over the lifetime of the product. So anything that can be in software, should be in software.”

Read the entire article on SemiEngineering originally published on January 30th, 2020.

Leave a Reply

This article first appeared on the Siemens Digital Industries Software blog at