PC Hardware Codexery

Hardware/software co-design

Hardware and software are developed together, not in isolation.

Last updated

Hardware/software co-design, or HW/SW co-design, is a system-level approach where hardware and software are created together instead of separately. The aim is to improve overall system qualities like speed, energy use, cost, and adaptability by experimenting with different ways to divide tasks between hardware and software early in the design process. This method is common in embedded systems, cyber-physical systems, and heterogeneous computing platforms, where software processing and hardware acceleration must operate closely together.

Overview

The core idea is that hardware and software constraints are weighed simultaneously, so choices on one side account for the other. A function can be implemented as software running on a processor or as dedicated hardware logic, each option affecting performance, power, chip area, and cost.

By keeping both possibilities open early on, co-design can find combinations that a single-sided approach would overlook. The boundary between hardware and software is treated as a design variable: computationally intensive, regular tasks get dedicated hardware, while control logic and changeable parts stay in software. Parameters like bit widths, buffer sizes, and parallelism are shared between both sides rather than set independently.

History

Co-design emerged in the late 1980s and early 1990s, as embedded systems grew more complex and the old practice of designing hardware and software separately became unworkable. Early products like telecom gear, industrial controllers, and consumer electronics faced tight performance and power limits that software tuning alone couldn't meet. Initial research focused on designing digital hardware and embedded software together, allowing a function to be placed either on a processor or in custom logic.

Formal methods for partitioning, system-level specification, and performance estimation were developed, and electronic design automation tools began supporting these combined workflows. During the 1990s, co-design became closely linked to embedded systems and system-on-chip design, as integrating processors, memory, peripherals, and custom logic onto a single chip made joint design necessary for hitting cost, performance, and power targets.

Quick Facts

Emergence period
late 1980s and early 1990s
Early applications
  • telecommunications equipment
  • industrial controllers
  • consumer electronics
Related tool
high-level synthesis (HLS) tools

Facts from the source article.

Background

Hardware/software co-design took shape in the late 1980s and early 1990s, when embedded systems were growing more complex and the usual practice of designing hardware and software separately began to break down. Many early embedded products, such as telecommunications equipment, industrial controllers, and consumer electronics, had tight performance and power budgets that could not be met by tuning the software alone. Early research looked at how to design digital hardware and embedded software at the same time, so that a given function could be placed either on a processor or in dedicated logic. Researchers developed formal methods for hardware/software partitioning, system-level specification, and performance estimation, and electronic design automation (EDA) tools started to support these combined workflows.

During the 1990s, co-design became closely tied to embedded systems and system on chip design. As processors, memories, peripherals, and custom logic were integrated onto a single chip, designing the hardware and software together became necessary to meet cost, performance, and power targets. The increasing adoption of field-programmable gate arrays (FPGAs) in the 2000s widened the range of problems co-design could address. Unlike application-specific integrated circuits (ASICs), FPGAs can be reprogrammed after manufacturing, so the hardware can be modified alongside the software.

High-level synthesis (HLS) tools lowered the barrier further by letting parts of a program written in high level languages such as C and C++ be turned into digital hardware. More recently, hardware/software co-design is being adopted for artificial intelligence (AI), cloud computing, and heterogeneous computing.

More in PC Hardware

Sources

Compiled from Wikipedia and the sources listed below. Text from Wikipedia is available under CC BY-SA 4.0; this entry is adapted from it.

Spotted an error? Know more?

Reader corrections go straight into our review queue. Suggest an edit · How this site is sourced

Comments

Loading…
Open in the interactive codex →