18-12-2012, 04:32 PM
Software Interface Codesign for Embedded Systems
SoftwareInterface.pdf (Size: 147.87 KB / Downloads: 22)
An embedded computing system is an
application-specific electronic subsystem
that is used in a larger system such as a
consumer appliance, medical device, or
automobile. Embedded systems can
embody complete system functionality in several
ways—for example, by using software running on
CPUs or in specialized hardware accelerators.
Technological evolution—particularly shrinking
silicon fabrication geometries—is enabling the
integration of complex platforms in a single system
on chip (SoC). In addition to specific hardware
subsystems, a modern SoC also can include one or
several CPU subsystems to execute software and
sophisticated interconnects.
Mastering the design of these embedded systems
is a challenge for both system and semiconductor
houses that used to apply a software- or hardwareonly
strategy. In addition to classic software and
hardware, SoC engineers must design hardwaredependent
software and software-dependent hardware.
Codesigning these HW/SW interfaces
requires a new kind of engineer who understands
both hardware and software design.
INTERFACE-BASED DESIGN
For quite some time, Moore’s law has driven
advances in chip density that far outpace advances
in designer productivity. To get back on track,
designers must work at higher levels of abstraction.
The productivity of a designer who can generate
only 100 lines of Hardware Description Language
(HDL) code per day is higher if those lines represent
large blocks rather than logic gates.
SoC design generally requires developing complex
software, entailing hundreds of thousands of lines
of code, to run on the SoC platform. The designer
must accomplish this work while balancing the competing
constraints of a short time-to-market window
and ever-increasingly complex functionality. Scaling
current ASIC design approaches to such highly parallel
multiprocessor SoCs is difficult, and using classic
methods to design these new systems would result
in unacceptable realization costs and delays.
These constraints are pushing SoC design toward
an interface-based methodology that takes advantage
of intellectual property.
Current design methodology
Traditional ASIC designers have a hardware-centric
view of the system design problem. Similarly,
software designers have a software-centric view.
SoC designs require creating and using radical new
design methodologies because some of the key
problems in SoC design lie at the boundary between
hardware and software.
As Figure 1a shows, a SoC can include specific
hardware subsystems and one or several CPU subsystems
to execute software. The design includes a
hardware adapter—a bridge or communication
coprocessor—to connect the CPU subsystems to
the other subsystems. Each CPU subsystem includes
a register transfer level (RTL) or gate model of the
CPU and a set of peripherals connected using the
CPU bus.
LINKING INTERFACES TO EMBEDDED SOFTWARE
Some designers use the term “embedded software”
to designate any software in an embedded
system, while others use it to mean only that part
of the software that is intimately related to hardware—
for example, the hardware team generally
designs low-level software functions such as drivers
and interrupt management.
The generic architecture shown in Figure 2 helps
to clarify the relationship between hardware and
software. An embedded system is an applicationspecific
HW/SW architecture. Ideally, the application
is a body of software to be executed on a
hardware platform. The SoC platform itself also
includes, in addition to hardware, a software layer
called hardware-dependent software that must be
codesigned with hardware interfaces.