This presentation is a short introduction to issues in Hardware-Software Codesign. It discusses definition of codesign, its significance, design issues in Hardware-software codesign, Abstraction levels, Duality of harware and software
Hardware-Software Codesign SystemonChip
Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition
CompiledBy:SudhanshuJanwadkar,MITCOE,Pune
1. Define hardware & Software. Explain in brief Hardware-software co-designwith
the help of co-designmodel.
Software refers to the flexible part and Hardware refers to the fixed part in hardware –software co-
design.
The flexible part(software) includes C programs, configuration data, parameter settings, bitstreams,
and so forth.
We will model software as single-thread sequential programs, written in C or assembly. The choice
for single-thread sequential C is simply because it matches so well to the actual execution model of a
typical microprocessor.
The fixed part(hardware) consists of programmable components such as microprocessors and
coprocessors.
We will model hardware by means of single-clock synchronous digital circuits created using word-
level combinational logic and flip-flops.
These circuits can be modeled with building blocks such as registers, adders, and multiplexers(also
called register-transfer-level (RTL) modeling because the behavior of a circuit can be thought of as a
sequence of transfers between registers, with logical and arithmetic operations performed on the
signals during the transfers).
Co-design model:
Figure 1.3 shows an 8051 microcontroller and an attached coprocessor. The coprocessor is attached to
the 8051 microcontroller through two 8-bit ports P0 and P1.
A C program executes on the 8051 microcontroller, and this program contains instructions to write data
to these two ports. When a given, predefined value appears on port P0, the coprocessor will make a
copy of the value present on port P1 into an internal register.
This very simple design can be addressed using hardware/software codesign; it includes the
design of a hardware model and the design of a C program. The model contains the 8051
processor, the coprocessor, and the connections between them. During execution, the 8051
processor will execute a software program written in C.
Hardware-Software Codesign SystemonChip
Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition
CompiledBy:SudhanshuJanwadkar,MITCOE,Pune
Definition of hardware/- software codesign: Hardware/Software codesign is the design of
cooperating hardware components and software components in a single design effort.
However, In reality, there are many forms of hardware and software, and the distinction between them
can easily become blurred. Consider the following examples.
_A Field Programmable gate Array (FPGA) is a hardware circuit that can be reconfigured to a user-
specified netlist of digital gates. The program for an FPGA is a ‘bitstream’, and it is used to configure the
netlist topology. Writing ‘software’ for an FPGA really looks like hardware development – even though it
is software.
_ A Digital-Signal Processor (DSP) is a processor with a specialized instruction set, optimized for signal-
processing applications. Writing efficient programs for a DSP requires detailed knowledge of these
specialized instructions. Very often, this means writing assembly code, or making use of a specialized
software library. Hence, there is a strong connection between the efficiency of the software and the
capabilities of the hardware.
Hardware/Software co-design is the partitioning and design of an application in terms of fixed and
flexible components.
2. Explain driving factors in Hardware-SoftwareCo-design.
_ Performance: The classic argument in favor of dedicated hardware design has been increased
performance: more work done per clock cycle. Increased performance is obtained by reducing the
flexibility of an application or by specializing the architecture that the application is mapped onto
_ Energy Efficiency: Almost every electronic consumer product today carries a battery (iPod, PDA,
mobile phone, Bluetooth device, ..). This makes these products energy-constrained. In order to become
sufficiently energy-efficient, consumer devices are implemented using a combination of embedded
software and dedicated hardware components.
Thus, a well-known use of hardware–software codesign is to trade function specialization and energy-
efficiency by moving (part of) the flexible software of a design into fixed hardware.
_ Power Densities of modern high-end processors are such that their performance can no longer be
increased by making them run faster. Instead, there is a broad and fundamental shift toward parallel
computer architectures. However, at this moment, there is no dominant parallel computer architecture
that has shown to cover all applications.
_ Design Complexity: Today, it is common to integrate multiple microprocessors together with all
related peripherals and hardware components on a single chip {system-on-chip (SoC)}. Modern SoC are
Hardware-Software Codesign SystemonChip
Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition
CompiledBy:SudhanshuJanwadkar,MITCOE,Pune
extremely complex. The conception of such a component is impossible without a detailed planning and
design phase. Extensive simulations are required to test the design upfront, before committing to a
costly implementation phase. Since software bugs are easier to address than hardware bugs, there is a
tendency to increase the amount of software.
_ Design Cost: New chips are very expensive to design. As a result, hardware designers make chips
programmable so that these chips can be reused over multiple products or product generations. The
SoC is a good example of this trend.
However, ‘programmability’ can be found in many different forms other than embedded processors:
reconfigurable systems are based on the same idea of reuse-through-reprogramming.
_ Shrinking Design Schedules: Each new generation of technology tends to replace the older one more
quickly. In addition, each of these new technologies is exponentially more complex than the previous
generation. For a design engineer, this means that each new product generation brings more work that
needs to be completed in a shorter period of time. Shrinking design schedules require engineering
teams to work on multiple tasks at once: hardware and software are developed concurrently. A
software development team will start software development as soon as the characteristics of the
hardware platform are established, even before an actual hardware prototype is available.
_ Deep-Submicron Effects: Designing new hardware from-scratch in high-end silicon processes is
difficult due to second-order effects in the implementation. For example, each new generation of silicon
technology has an increased variability and a decreased reliability. Programmable, flexible technologies
make the hardware design process simpler, more straightforward, and easier to control. In addition,
programmable technologies can be created to take the effects of variations into account.
3. Explain five abstractions levels commonly used by computer engineers for the design of
electronic hardware-software systems.
There are five abstraction levels commonly used by computer engineers for the design of electronic
hardware–software systems.
Continuous Time: At the lowest abstraction level, we describe operations as continuous actions.
For example, electric networks can be described as systems of interacting differential equations.
Solving these equations leads to an estimate for voltages and currents in these electric networks.
This is a very detailed level, useful to analyze analog effects. However, this level of abstraction is not
used to describe typical hardware–software systems.
Discrete-event: At the next abstraction level, we lump activity at discrete points in time called events.
Those events can be possibly irregularly spaced.
For example, when the inputs of a digital combinatorial circuit change, the effect of those changes
will ripple from inputs to outputs, toggling nets at intermediate circuit nodes as they change.
Discrete-event simulation is very popular to model hardware at low abstraction level. It gets rid of
the differential equations and the complexity of continuous-time simulation, yet it captures all
relevant information such as glitches and clock cycle edges.
Hardware-Software Codesign SystemonChip
Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition
CompiledBy:SudhanshuJanwadkar,MITCOE,Pune
Discrete-event simulation is also used to model systems at high abstraction level, to simulate
abstract event with irregular spacing in time.
In the context of hardware–software system design however, discrete-event modeling refers to a
low abstraction level.
Cycle-accurate: Single-clock synchronous hardware circuits have the important property that all
interesting things happen at regularly spaced intervals, namely at the clock edge.
A cycle-accurate model does not capture propagation delays or glitches. All activities that fall ‘in
between’ clock edges are concentrated at the clock edge itself. As a result, activities happen either
immediately (for combinatorial circuits for example), or else after an integral number of clock cycles
(for sequential circuits).
The cycle-accurate level is very important for hardware–software system modeling and very often
serves as the ‘golden reference’ for a hardware–software implementation.
Instruction-accurate: The instruction-accurate modeling level expresses activities in steps of one
microprocessor instruction. Each instruction lumps together several cycles of processing.
RTL models are great but may be too slow for complex systems. For example, a laptop has a
processor that probably clocks over 1 GHz (one billion cycles), for which lower level of abstraction is
not suitable. Clearly, further abstraction can be useful to build leaner and faster models.
Instruction-accurate simulators are used to verify complex software systems, such as complete
operating systems. Instruction-accurate simulators count time in terms of an instruction count, but
not a cycle count.
Transaction-accurate: In this type of model, the behavior is expressed in terms of the interactions
between the components of a system. These interactions are called transactions.
For very complex systems, even instruction-accurate models may be too slow or require too much
modeling effort. For these models, yet another abstraction level is introduced: the transaction-
accurate level.
Transaction-accurate models are important in the exploratory phases of a design, where a designer
is interested in defining the overall characteristics of a design without going through the effort of
developing detailed models.
Hardware-Software Codesign SystemonChip
Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition
CompiledBy:SudhanshuJanwadkar,MITCOE,Pune
4. Explain The Hardware–Software Codesign Space
The Platform Design Space
A specification is a description of the desired application.
A new application could be for example a novel way of encoding audio in a more economical format
than current encoding methods.
The objective of the design process is to implement the application on a target platform.
Software as well as hardware have a very different meaning depending on the platform.
_ In the case of a RISC processor, software is written in C, while the hardware is a general-purpose
processor.
_ In the case of a FPGA, software is written in a HDL. When the FPGA contains a soft-core processor,
as discussed above, we will also write additional platform software in C.
_ A DSP uses a combination of C and assembly code for software. The hardware is a specalized
processor architecture, adapted to signal processing operations.
_ An ASIP is a processor that can be specialized to a particular application domain, for example, by
adding new instructions and by extending the processor datapath. The ‘software’ of an ASIP thus
can contain C code as well as a hardware description of the processor extensions.
_ Finally, in the case of an ASIC, the application is written in HDL, which is then converted into a
hardcoded netlist. In contrast to other platforms, ASICs are nonprogrammable. In an ASIC, the
application and the platform have merged to a single entity.
Application Mapping
Mapping an application ontoa platform means writing software for that platform, and if needed,
customizing the hardware of the platform.
Hardware-Software Codesign SystemonChip
Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition
CompiledBy:SudhanshuJanwadkar,MITCOE,Pune
Flexibility means how well the platform can be adapted to different applications.
Flexibility in platforms is desired because it allows designers to make changes to the application
after the platform is fabricated
Very flexible platforms, such as RISC and FPGA, are programmed with general-purpose languages.
When a platform becomes more specialized, the programming tends to become more specialized as
well. We visualize this by drawing the application closer to the platform. This expresses that the
software becomes more specific to the hardware.
5. The Dualism of Hardware Design and Software Design
Design Paradigm:
In a hardware model, circuit elements operate in parallel. Thus, by using more circuit elements, more
work can be done within a single clock cycle. Software, onthe other hand, operates sequentially. By
using more operations, a software program will take more time to complete. Thus, a hardware
designer solves problems by spatial decomposition, while a software designer solves problems by
temporal decomposition.
_ Resource Cost:
Decomposition in space, as used by a hardware designer, means that more gates are required for
when a more complex design needs to be implemented.
Decomposition in time, as used by a software designer, implies that a more complex design will take
more instructions to complete.
Therefore, the resource cost for hardware is circuit area, while the resource cost for software is
execution time.
_ Design Constraints:
A hardware designer is constrained by the clock cycle period of a design. A software designer, on the
other hand, is limited by the capabilities of the processor instruction set and the memory space
available with the processor. Thus, the design constraints for hardware are in terms of a time budget,
while the design constraints for software are fixed by the CPU.
_ Flexibility:
Flexibility is the ease by which the application can be modified or adapted after the target architecture
for that application is manufactured.
In software, flexibility is essentially free. In hardware on the other hand, flexibility is not trivial A
hardware designer has to think carefully about such reuse: flexibility needs to be designed into the
circuit by means of multiplexers and additional control signals!
Parallelism:
A dual of flexibility can be found in the ease with which parallel implementations can be created. For
hardware, parallelism comes for free as part of the design paradigm.
For software, on the other hand, parallelism is a major challenge.
Hardware-Software Codesign SystemonChip
Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition
CompiledBy:SudhanshuJanwadkar,MITCOE,Pune
When a software written for a single processor is run on multiple processors, inter-processor
communication and synchronization become a challenge.
_ Modeling:
In software, modeling and implementation are very close. Indeed, when a designer writes a C
program, the compilation of that program for the appropriate target processor will also result in the
implementation of the program!
In hardware the model and the implementation of a design are distinct concepts.
Initially, a hardware design is modeled using a HDL. Such a hardware description can be simulated, but
it is not an implementation of the actual circuit. Hardware designers use a hardware description
language, and their programs are models which are later transformed to implementation. Software
designers use a software programming language, and their programs are an implementation by itself.
_ Reuse:
The idea of IP-reuse is that a component of a larger circuit or a program can be packaged, and later
reused in the context of a different design.
In software, IP-reuse has known dramatic changes in recent years due to open source software and
the proliferation of open platforms. When designing a complex program these days, designers will
start from a set of standard libraries that are well-documented and available on a wide range of
platforms.
For hardware design, IP-reuse is still in its infancy. Hardware Designers are only starting to define
standard exchange mechanisms.
Hardware-Software Codesign SystemonChip
Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition
CompiledBy:SudhanshuJanwadkar,MITCOE,Pune
6. Define concurrency and Parallelism.
Concurrency is the ability to execute simultaneous operations because these operations are
completely independent.
Parallelism is the ability to execute simultaneous operations because the operations can run
on different processors or circuit elements. Thus, concurrency relates to an application
model, while parallelism relates to the implementation of that model.
Hardware is always parallel. Software on the other hand can be sequential, concurrent, or
parallel.
Sequential and concurrent software requires a single processor, parallel software requires
multiple processors.