Newsletter

EDA DesignLine  >  Design Center

Embedded system virtualization for executable specifications and use case modeling



Page 1 of 3

EDA DesignLine

Specifying and validating embedded systems and chips becomes increasingly challenging as feature sets and non-functional constraints grow. It's especially difficult when the system involves a multicore programmable platform, which includes several processing engines such as microprocessors, microcontrollers or DSPs, that run application software distributed across the various cores.

The development of the hardware (HW) platform — system-on-chip (SoC) or board — and the application software (SW) is usually done by separate teams, and often by separate companies. In general, the hardware platform development team includes software engineers in charge of developing low-level platform-dependent software — also called firmware (FW) — including boot loaders, C runtime and libraries, operating systems and device drivers. Software engineers also usually develop middleware (MW), including protocol stacks and various libraries, providing specific application programming interfaces (API) to application software developers — the platform users.

One of the biggest challenges for such projects lies in the interdependency between application software and hardware platform development. In order to design an efficient platform that accurately serves the needs of one or several applications, platform developers must have a good understanding of the target applications. And, in order to develop their software, application developers need to understand and make the best use out of the hardware platform. Waiting for the completion of hardware before starting the software design has two major drawbacks:

1) The final system validation happens at the end of the project, after many man-years of efforts have been invested. This leaves the engineers with limited flexibility for optimization and addressing potential product defects.

2) The time-to-market objectives cannot be met since the software development effort requires the majority of the project schedule, and hence a large monetary investment.

Therefore, the following needs have risen on both platform and application sides:

1. Platform developers need to specify, architect, develop and validate their programmable board or chip for specific uses before the embedded application software code is available.

2. Application developers need to specify, architect, develop and validate their software before the real platform hardware is available.


Hardware virtualization for early software development
The hardware industry has been addressing the second need for many years in different ways. As opposed to software production, hardware production requires heavy manufacturing efforts. Software production requires a compilation step: from software programming language such as C or C++ to machine code. Programming the execution platform is simple and consists of loading machine code into a persistent data storage device such as flash or programmable memory. Hardware production goes through two synthesis steps, each of equivalent importance: front-end from hardware description language such as VHDL or Verilog at register transfer level (RTL) to gates, and back-end from gates to silicon. Still, an actual physical device has to be manufactured.

Since producing hardware requires more steps and is much less flexible than software production (a hardware re-spin of a large chip can cost more than a million dollars), the hardware industry has developed ways to accelerate the availability of a programmable hardware platform so hardware/software (HW/SW) joint execution can be verified and validated as early as possible. This way, software developers don't need to wait for production chips to start programming and hardware developers avoid costly manufacturing cycles. Hardware developers use techniques to provide a virtual software execution environment that can run the embedded software in a similar manner than the real hardware platform. Virtual software execution environments may not be as fast or as accurate as the real hardware, but they can be obtained earlier at lower cost. They are also more flexible and less expensive to adapt or fix.

The first step towards virtualization is to provide pre-silicon prototypes, like reference implementations for off-the-shelf silicon, field-programmable gate array (FPGA) prototypes, emulators or RTL simulators. Today, the EDA industry, particularly electronic-system level (ESL) vendors, is working on the second step: providing pre-RTL/pre-gate prototypes, called virtual platforms. In this paper, a virtual platform refers to a transaction-level (TL) or cycle-accurate (CA) model of the hardware platform, and virtual prototype refers to a RTL model of the hardware platform.

Page 2: next page  

Page 1 | 2 | 3



Rate this article
WORSE | BETTER
1 2 3 4 5




Related Content

TECH PAPER
1. FPGA Design Methods for Fast Turn Around

TECH PAPER
2. Multi-Voltage Design Flow with Olympus-SoC

TECH PAPER
3. Realizing ESL with Scalable Transaction Level Models

TECH PAPER
4. How to Rapidly Create and Customize Compelling GUIs for Android-Based Devices

 


 Featured Jobs
Accenture seeking Project Management Team Lead in Charlotte, NC

Accenture seeking Software Engineer in Salt Lake City, UT

Boeing Company seeking Software Engineer in Herndon, VA

Switch and Data seeking Customer Solutions Engineer in Dallas, TX

Chart Industries seeking Sr. Developer in Cleveland, OH

More jobs on EETimesCareers
 Sponsor
 CAREER CENTER
Ready to take that job and shove it?
SEARCH JOBS:

 SPONSOR

 RECENT JOB POSTINGS
For more great jobs, career related news, features and services, please visit EETimes' Career Center.