The embedded-system designer must of course construct an implementation that
fulfills desired functionality, but a difficult challenge is to construct an implementation
that simultaneously optimizes numerous design metrics. For our purposes, an
implementation consists of a software processor with an accompanying program, a
connection of digital gates, or some combination thereof. A design metric is a measurable
feature of a system’s implementation. Common relevant metrics include:
Unit cost: the monetary cost of manufacturing each copy of the system, excluding
NRE cost.
NRE cost (Non-Recurring Engineering cost): The monetary cost of designing the
system. Once the system is designed, any number of units can be manufactured
without incurring any additional design cost (hence the term “non-recurring”).
Size: the physical space required by the system, often measured in bytes for software,
and gates or transistors for hardware.
Performance: the execution time or throughput of the system.
Power: the amount of power consumed by the system, which determines the lifetime
of a battery, or the cooling requirements of the IC, since more power means more
heat.
Flexibility: the ability to change the functionality of the system without incurring
heavy NRE cost. Software is typically considered very flexible.
Time-to-market: The amount of time required to design and manufacture the system
to the point the system can be sold to customers.
Time-to-prototype: The amount of time to build a working version of the system,
which may be bigger or more expensive than the final system implementation, but
can be used to verify the system’s usefulness and correctness and to refine the
system's functionality.