0% found this document useful (0 votes)
7 views

Chapter_4[1]

Chapter Four discusses software/hardware co-design, emphasizing the joint design of hardware and software architectures to enhance performance and reliability in embedded systems. Key steps include requirement specification, partitioning, co-design, integration, and debugging, while addressing challenges such as hardware needs, deadlines, and power consumption. The chapter also highlights the importance of dependability in embedded systems, covering attributes like availability, reliability, and safety, along with strategies for fault prevention and detection.

Uploaded by

shalomsolomon977
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Chapter_4[1]

Chapter Four discusses software/hardware co-design, emphasizing the joint design of hardware and software architectures to enhance performance and reliability in embedded systems. Key steps include requirement specification, partitioning, co-design, integration, and debugging, while addressing challenges such as hardware needs, deadlines, and power consumption. The chapter also highlights the importance of dependability in embedded systems, covering attributes like availability, reliability, and safety, along with strategies for fault prevention and detection.

Uploaded by

shalomsolomon977
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

Chapter Four

Software/Hardware Co-design Issue


• System design is a process creating an
architecture for different components,
interfaces, and modules

• HW/SW Partitioning is dividing the


functionality of an embedded system into units
of computation
• Partition the system specification into
processes/tasks
• Hardware/Software Co-design: joint design of
hardware and software architectures

• Integrating hardware and software, developers


can establish seamless communication and data
exchange between the two
Software/Hardware Co-design
❖ Software/hardware co-design refers to the simultaneous design
and development of software and hardware components of a
system.
❖ Hardware and software co-design can be defined as meeting
System level objectives by exploiting the cooperation between
hardware and software through their concurrent design.

❖ Hardware/software co-design: a joint design of hardware and


software architectures of Embedded System.
Key Steps for Software/Hardware Co-design
❖ Requirement and System Specification
❖ Define Requirements: Identify the functional, performance,
power, and area requirements of the system.
❖ Partitioning
❖ Determine which parts of the system will be implemented in
hardware and which will be implemented in software.
❖ Co-Design and Co-Simulation
❖ Develop and validate the hardware and software components
concurrently.
❖ Integration
❖ Integrate the hardware and software components into a
complete system i.e. Embedded system.
❖ Co-Debugging: Debug the integrated system to resolve any
issues arising from hardware-software interactions.
Software/Hardware Co-design

❖Traditional design Approach


❖In Traditional Co-design, both hardware and software are designed by independent
groups of experts.
❖The traditional design approach has been traverse the two sides of the
accompanying diagram separately, that is
❖ Design the hardware components
❖Design the software components.
❖Bring the two together. Spend time testing and debugging the system.
Importance of Co-Design in Embedded Systems
Enhanced Performance Interdisciplinary Collaboration

Co-design ensures seamless integration, resulting


It fosters collaboration between software
in improved performance and reliability of modern
and hardware teams, leading to
systems.
innovative solutions.

Time and Cost Efficiency

It optimizes the use of resources, reducing both time-to-market


and development costs.
Fundamental Issues in Hardware Software Co-Design
Selecting the model Selecting the architecture
specifies how a system is going to implement in terms of
Selecting the model In hardware software co-design,
number of types of different components and the
models are used for capturing and describing the system
interconnection between them
characteristics.

Selecting the language


➢ A programming language captures a Computational model and maps it into architecture. A model can
captured using multiple programming languages like C, C++, C#, Java etc. for software implementation and
languages like VHDL, System C, Verilog etc
Hardware Design Tools And Techniques

There are different types of hardware design tools for embedded system such as VHDL, VERILOG,

❖VHDL
❖VHSIC Hardware Description Language
❖which is a programming language that describes a logic circuit by
function, data flow behavior, and/or structure
❖VHDL is case insensitive, free format.
❖VHDL is used mainly for the development of Application Specific
Integrated Circuits (ASICs).
❖It is a programming language that is used to describe,
simulate, and create hardware like digital circuits (ICS)
❖HDL is mainly used to discover the faults in the design before
implementing it in the hardware.
Cont.. entity entity_name is
port (signal_name,signal_name : mode type;
signal_name,signal_name : mode type);
end entity_name;
Library
IEEE.STD_LOGIC_1164.ALL; imports the IEEE standard logic library.
• IEEE.STD_LOGIC_ARITH.ALL; and use IEEE.STD_LOGIC_UNSIGNED.ALL; are used for
arithmetic operations on STD_LOGIC_VECTOR.
Write the VHDL code for two input and gate using Behavioral modeling
Advantages of VHDL
•It supports various design methodologies like Top-down approach
and Bottom-up approach.
•It provides a flexible design language.
•It allows better design management.
•It allows detailed implementations.
•It supports a multi-level abstraction.
•It provides tight coupling to lower levels of design.
•It supports all CAD tools.
Designing of Embedded Systems(Software)
Software development for embedded systems involves several distinct stages.
key stages in the software development process for embedded systems:
1. Requirement Analysis: Define functional and non-functional requirements
2.System Architecture Design:
Design the overall system architecture, including hardware-software partitioning
3.Detailed Design:
Create detailed design documents for each software module using tools like UML
4. Implementation (Coding): Write the actual code for the software components. Coding standards and
guidelines specific to embedded systems.
5. Testing and Debugging: Testing ensures that the software behaves as expected and meets the requirements,
while debugging involves identifying and fixing:
6. Hardware Integration: Integrate the software with the actual hardware
Perform hardware-software co-simulation to ensure proper interaction.
7. Verification and Validation: Verification focuses on assessing whether the software is being developed
according to its specifications and requirements.
Validation, on the other hand, focuses on assessing whether the software meets the customer's needs and
expectations
8. Deployment: Prepare the software for deployment on the target hardware.
Challenges in Embedded System Design

i. How much hardware do we need?


ii. How do we meet deadlines?
iii. How do we minimize power consumption?
iv. How do we design for upgradability?
v. Does it really work?
vii. Restricted development environment
Faults, errors, and system failures in Embedded System

A fault is a defect (imperfection) within the system.


An error is a deviation from the required operation of the (sub)system.
A system failure occurs when the system delivers a function deviating
from the one specified.
There is a cause-and-effect relationship between faults, errors, and
failures.
Faults result in errors, and errors can lead to system failures.
In other words, errors are the effect of faults, and failures are the effect of errors.
Fault Sources

❖Fault is an erroneous state of software or hardware resulting


from failures of its components
❖Design errors
❖ Software or Hardware
❖Manufacturing Problems
❖ Damage and Deterioration
❖External disturbances
❖ Harsh environmental conditions, electromagnetic interference and ionization
radiation
❖System Misuse
❖ People
Dependability for Embedded Systems
Dependability in Embedded System

Dependability
The dependability of a system reflects the user's degree of trust in that
system

It reflects the extent of the user's confidence that it will operate as users expect and
that it will not 'fail' in normal use.

Dependability
It covers the related systems attributes of reliability, availability and
security.
Primary Attributes of Dependability

Availability
❖ Readiness for correct service – “Uptime” as a percentage

Reliability

❖ Continuity of correct service – (How likely is it that the system can complete
a mission of a given duration?)

Safety
❖ Absence of catastrophic consequences on the user(s) and the
environment.
Primary Attributes of Dependability

Confidentiality
❖Absence of unauthorized disclosure of information

Integrity:

❖Absence of improper system state alterations – (Note: security involves malicious


faults; confidentiality & integrity

Maintainability:
❖ Ability to undergo repairs and modifications
Means to Attain Dependability for Embedded System

1 ❖Fault prevention – “get it right; keep it right”


➢Avoid design defects (good process; tools; etc.)

2 Fault tolerance – “when things go wrong, deal with it”

✓Error detection
✓Recovery
✓Fault handling
3
❖Fault removal – “if you don’t get it right at first, make it right”
✓Verification & validation (design phase)
4
❖Fault forecasting – “know how wrong you expect to be”
Generic Sources of Faults

Electronic Hardware ❖Software – “bad design” Outside influence

❖operation outside intended design


❖ bad fabrication; wears out” ✓Design defects –
limits
❖ Operating environment: ✓“Code rot” – accumulate
noise, heat, ESD, electro- ❖Environment: natural disasters; harsh
run-time faults
migration • Design defects operating conditions
(e.g., Pentium FDIV bug)
Embedded Design Time Fault Detection

1 ❖Follow rigorous(strict) design process

2
❖Follow rule sets for more reliable software

❖Extensive testing
3
✓Development testing

4 ❖Concurrent detection: detects & reports error during computation


✓Software flow checking
❖A single CPU can’t detect and mitigate all of its own
faults
Further Reading
How to design reliable embedded
System
software and hardware design tools
applicable systems such as
❖UML
❖VHDL
❖ Verilog and other tools
❖Methods to Minimize Faults during
designing Reliable ES

You might also like