6615 Ijcses 02
6615 Ijcses 02
6, December 2015
ABSTRACT
Recently, different kinds of computer systems like smart phones, embedded systems and cloud servers, are
more and more widely used and the system development and validation is under great pressure. Hardware
device, firmware and device driver development account for a significant portion of system development
and validation effort. In traditional device, firmware and driver development largely has to wait until a
stable version of the device becomes available. This dependency often leaves not enough time for software
validation.
Recently, virtual prototyping techniques have been widely explored and utilized by both industry engineers
and academic researchers. White box nature of virtual prototyping brings better observability, traceability,
debugging support and adaptability. First, virtual prototyping has found their way into enabling early
firmware and driver development and validation. Second, there has been some research utilizing virtual
prototyping for post-silicon functional validation. Third, the industry has built hybrid emulation and hybrid
FPGA systems for system validation using virtual prototyping. In this paper, we demonstrate how recent
work and products utilize virtual prototyping techniques for system development and validation in the
above three domains.
KEYWORDS
Virtual Prototyping, Early Software Development, System Validation.
1. INTRODUCTION
A recent study by International Business Strategies indicates that a 3-month delay to market
reduces revenue by about 30% for chip manufacturers in general, and the penalty is even worse
for fast-evolving markets such as mobile devices [1]. The growing system complexity combined
with shorten time-to-market has created the following challenges for system development and
validation.
Lack of early high quality software development. In the traditional system development
process, software like firmware and device drivers largely has to wait until the first silicon
prototype becomes available. Before that, it is very difficult for software developers to
design and develop high quality firmware and device drivers [2, 3]. Before a silicon device is
ready, software developers can only develop firmware and device drivers according to
specifications. Such kind of development can lead to a lot of untested code being developed.
It usually means that a large amount of time is needed for validating, debugging and
rewriting software code once hardware is available.
DOI:10.5121/ijcses.2015.6602
19
International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015
International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015
(E100) network adapter. E100 device is controlled by the corresponding driver through interface
registers and interrupts. As shown in Figure 1, the E100 virtual device includes the following
components:
// Device state Structure
typedef struct
{
//PCI configuration
PCIDevice dev;
//Device I/O registers
uint8_t mem[PCI_MEM_SIZE];
......
//SCB stat/ack byte
uint8_t scb_stat;
......
} EEPRO100State;
// 2. Memory-mapped I/O register function
static void eepro100_write (void *opaque, hwaddr addr, uint64_t data, unsigned size)
{
EEPRO100State *s = (EEPRO100State *) opaque;
......
tx_command(s);
......
}
// 3. Device behavioral function
qemu_send_packet();
......
}
// 4. Network receive function
static ssize_t eepro100_receive (NetClientState *nc, const uint8_t *buf, size_t size)
{
......
//Fire an interrupt
eepro100_fr_interrupt(s);
}
Figure 1. Excerpt of QEMU EEPro100 Virtual Device
The device state, EEPRO100State, which keeps track of the E100 device state and the device
PCI configuration;
The I/O register functions such as eepro100_write which are registered as QEMU callback
functions to access interface registers and trigger functional behaviours;
The device behavioural functions such as tx_command which are invoked by the I/O register
functions to execute the corresponding commands;
The device specific functions such as eepro100_receive which are used for receiving data or
packets from the outside environment. For example, when QEMU receives a network packet
21
International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015
from the outside environment, it invokes eepro100_receive function to process the packet
and fire the interrupt using eepro100_fr_interrupt function.
As shown in Figure 2, virtual prototypes are running in virtual platforms while silicon devices are
running in physical machines. Virtual prototypes and silicon devices can behave the same to
enable software development and validation because they are both developed according to
hardware specifications. By using virtual prototypes instead of silicon devices, driver developers
can start driver development without a silicon device prototype. The similar setups can be applied
for enabling early firmware development. Firmware can be running on virtual prototypes instead
of silicon devices so that we can test the firmware functionalities.
22
International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015
23
International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015
24
International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015
The basic frameworks of hybrid prototype and emulation are shown in Figure 3. On the left side,
a basic virtual platform is built based on different virtual prototypes. It usually implements a basic
system framework with only a few components missing. On the right side, some RTL designs or
IPs are simulated using FPGA or hardware emulators. Therefore, the functionalities missing on
the left side can be complemented by FPGA or emulator. To connect two sides, a transactionlevel modelling (TLM) adaptor is required since virtual prototypes are usually implemented at the
transaction level. The TLM adaptor acts as a bridge between virtual prototypes and RTL
simulation. In this way, a complete system can be simulated for development and verification.
6. CONCLUSIONS
In this paper, we summarize the current research and industry utilization of virtual prototyping
techniques. Virtual prototyping techniques have shown their powerfulness and strengths in
enabling early software development and accelerating post-silicon functional validation. The
hybrid prototypes and emulation can better shift-left software development, hardware verification
and system integration. In the future, there are still many unexplored areas which can take
advantage of virtual prototyping techniques.
REFERENCES
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
International Business Strategies, Inc., Global systemIC industry service monthly reports,
http://www.ibs-inc.net, 2014.
S. Nelson and P. Waskiewicz, Virtualization: Writing (and testing) device drivers without
hardware, 2011. [Online]. Available: http://www.linuxplumbersconf.org/2011/ocw/sessions/243
T. Eckart and M. Schnieringer, Development and verification of embedded firmware using virtual
system prototypes, in International Symposium on System-on-Chip, 2006.
S. Mitra, S. Seshia, and N. Nicolici, Post-silicon validation opportunities, challenges and recent
advances, in DAC, 2010.
Q. Wang, R. Kassa, W. Shen, N. Ijih, B. Chitlur, M. Konow, D. Liu, A. Sheiman, and P. Gupta, An
fpga based hybrid processor emulation platform, in FPL, 2010.
P. Sampath and B. Rachana Rao, Efficient embedded software development using QEMU, in 13th
Real Time Linux Workshop, 2011.
J. Gladigau, C. Haubelt, and J. Teich, Model-based virtual prototype acceleration, IEEE
Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2012.
Y.-C. Lee, C.-T. Kuo, and L.-P. Chang, Design and implementation of a virtual platform of solidstate disks, IEEE Embedded Systems Letters, 2012.
S. Nelson and P. Waskiewicz, Virtualization: Writing (and testing) device drivers without
hardware, in Linux Plumbers Conference, 2011.
K. Cong, F. Xie, and L. Lei, Automatic concolic test generation with virtual prototypes for postsilicon validation, in ICCAD, 2013.
L. Lei, F. Xie, and K. Cong, Post-silicon conformance checking with virtual prototypes, in DAC,
2013.
K. Cong, Post-silicon functional validation with virtual prototypes, Ph.D. dissertation, Portland
State University, 2015.
F. Bellard, QEMU, a fast and portable dynamic translator, in USENIX ATEC, 2005.
B. Fabrice, QEMU, http://wiki.qemu.org/Main_Page, 2013.
Cadence, Cadence virtual system platform,
http://www.cadence.com/products/sd/virtual_system/pages/default.aspx.
25
International Journal of Computer Science & Engineering Survey (IJCSES) Vol.6, No.6, December 2015
[16] Synopsys, Synopsys virtual prototyping solutions,
http://www.synopsys.com/prototyping/virtualprototyping/Pages/default.aspx.
[17] Windriver, Simics full system simulator, http://www.windriver.com/products/simics/.
[18] VMware, Vmware virtualization technology, http://www.vmware.com/virtualization/.
[19] Xen, The xen project, http://www.xenproject.org/.
[20] C. Shin and Y. Kim, Development of a virtual platform for IP and firmware verification, in SoC
Design Conference (ISOCC), 2014.
[21] A. Khan, W. Ma, C. Wolf, and B. Werner, Multi-threaded Simics Systemc virtual platform, in
ICCAD, 2015.
[22] E. Singerman, Y. Abarbanel, and S. Baartmans, Transaction based pre-to-post silicon validation, in
DAC, 2011.
[23] K. Cong, L. Lei, Z. Yang, and F. Xie, Coverage evaluation of post-silicon validation tests with
virtual prototypes, in DATE, 2014.
[24] K. Balston, M. Karimibiuki, A. Hu, A. Ivanov, and S. J. E. Wilton, Post-silicon code coverage for
multiprocessor system-on-chip designs, IEEE Transactions on Computers, 2011.
[25] L. Lei, K. Cong, and F. Xie, Optimizing post-silicon conformance checking, in ICCD, 2013.
[26] L. Lei, K. Cong, Z. Yang, and F. Xie, Validating direct memory access interfaces with conformance
checking, in ICCAD, 2014.
[27] K. Cong, F. Xie, and L. Lei, Symbolic execution of virtual devices, in QSIC, 2013.
[28] H. Li, D. Tong, K. Huang, and X. Cheng, Femu: A firmware-based emulation framework for soc
verification, in CODES+ISSS, 2010.
[29] V. Srinivasan, F. Schirrmeister, V. Singh, and R. Klein, Why hybrid platforms are needed for presilicon hardware and software development, in Electronic Design Process Symposium (EDPS),
2015.
[30] Synopsys, Synopsys hybrid prototyping,
http://www.synopsys.com/Prototyping/FPGABasedPrototyping/Pages/hybrid-prototyping.aspx.
[31] Cadence, Cadence palladium hybrid,
http://www.cadence.com/products/sd/palladium_hybrid/pages/default.aspx.
[32] E. Chung, E. Nurvitadhi, J. Hoe, B. Falsafi, and K. Mai, PROToFLEX: FPGA-accelerated hybrid
functional simulator, in IPDPS, 2007.
26