|
||||||||||
Design & Verify Virtual Platform with reusable TLM 2.0By Deep Masiwal, 3D-IP Semiconductors Pvt Ltd As the system, software & IP complexity is increasing so is the demand of SystemC models & Virtual Platform for verification. To achieve it, the key requirements are that the models/platform should be developed fast, reusable & highly accurate. We are sharing the experience of our company 3D-IP Semiconductors Ltd. for the development of a generic Virtual Platform using TLM 2.0; reusable for any system model. This development is completely done using open source libraries e.g. SystemC, QEMU & TLM 2.0 (basically no tools are required for the development). We will also explain the use of open source libraries for packaging the deliverables, configuring, integrating and verifying our SystemC IP model. Keywords — SystemC; TLM 2.0; Linux driver; TLM wrapper; Data Error Checker (DEC) I. INTRODUCTION As the system, software & IP complexity is increasing so is the demand of SystemC models & Virtual Platform for verification. To achieve it, the key requirements are that models/platform should be developed fast, reusable & highly accurate. We are sharing the experience of our company 3D-IP Semiconductors Ltd. for the development of a generic Virtual Platform using TLM 2.0; reusable for any system model. Figure 1. Architecture of Verification Environment We are presenting two verification methods for verifying SystemC models.
The above techniques include the development of different packages utilized for automation of model verification; e.g. booting Linux driver as an application software and its integration using TLM 2.0. The paper discusses the benefits of generic models and automation techniques which eases and reduces the model verification time without prior requirement of any tools. Additionally, we are proposing a verifying methodology that utilizes TLM 2.0 sockets and interfaces for verification purposes. These methodologies give the benefit of reuse & creates a verification environment that passes the traffic from the driver to the system level model via TLM 2.0 interface. In the traffic injector method, a Data Error Checker model which checks the error in the transactions or data; by this we also increase the debugging scenario of our modelling technique. These generic model & environment are used to develop a Virtual Platform for a next generation Memory Controller based on JEDEC Universal Flash Storage (UFS) 2.0 Standard. II. BACKGROUND We are already using SystemC and TLM for prototyping and at transaction level modelling. Use of SystemC and TLM at early stages emulate the functional behaviour at transaction level without any need for pin interface definition. TLM is being used for emulating software sockets by providing sockets for bus modelling. Along with the sockets and ports, it also provides a generic way of communicating with the memory bus models through a generic payload mechanism. The TLM standard itself provides different types of modelling interfaces like blocking interface and non-blocking interface. These modelling interfaces can be used to communicate between two models irrespective of the differences in their architecture and transaction format. III. ARCHITECTURE Our proposed methodology can verify two types of model one is embedded s/w application based hardware model and other is unit testing of bus functional model. Based on the requirement we can use either of the techniques to verify a model. Before compiling we have to mount the test cases on either of the environment and select the environment while compiling. Linux Driver Verification method employs a Linux kernel (core CPU) whose image is built over QEMU emulator. The root system file for the Linux kernel image is provided with the test case executable. When Kernel boots, it mounts test case file as filesystem. The filesystem is driven by the Linux driver through TLM 2.0 initiator socket. A TLM wrapper provides a communication between the CPU i.e. Linux driver over a QEMU emulator to the SystemC IP model through TLM 2.0 interface. As Linux kernel is a core CPU which already holds many device drivers, so many embedded based hardware models can be tested by mounting the C based test cases executable as root file for Linux driver.
Traffic Injector Verification method is used for unit testing of bus functional model. A TLM 2.0 initiator socket is bound to the verification component while a target socket is bound to the model for testing. Now traffic injector writes the test cases onto the model through TLM 2.0 blocking transport calls. Next transaction will take place only after the completion of previous call. For the read operation, the initiator socket will again use a blocking transport call. In this case target socket will block the operation till some read data is available. By this blocking transport call mechanism several simulation cycles could elapse. Figure 3. Traffic Injector based verification architecture IV. METHODOLOGY LINUX Driver Verification Environment: There are device drivers in the kernel module which are responsible for controlling the hardware. These device drivers are utilized for testing the hardware model. Description of our proposed environment and every component (Short for Quick Emulator) is a free and open-source hosted hypervisor that performs hardware virtualization. Below is the description of our environment components.
Traffic Injector Verification Environment: This verification environment is useful for testing unit models by passing the traffic via. TLM 2.0 interfaces. The environment is developed generic so as it can verify different modules with minor changes in the driver. The description of the component is as follows.
V. RESULTS The reusable verification environment is helpful in reducing the overall verification time. Key benefits by using this environment:
VI. CONCLUSION & FUTURE WORK The methodology adopted is best in class & easily used across various systems, software and platforms. Based on it we have verified a Virtual Platform for an advance Memory Controller (Universal Flash Storage (UFS) 2.0 JEDEC Standard). In future, the same methodology can be utilized for other Controllers such as embedded Multimedia Controller (eMMC), Solid State Drives (SSD), etc. Additionally, it allows the SOC Verification engineer to control the verification through the tools and languages familiar to him and saves time & effort on ramping up on a new module and language. As a part of future work, it is planned that the development of the testcases for both environment be unified which will reduce the writing effort. Also, it allows to port the IP level testcases to system level environment. Another addition would be to develop this environment so that in can be used right from the SystemC modelling level to the actual design in HDL and further into the system integration domain. REFERENCES [1] https://github.com/hdlab/tlmu [2] http://thawedoutnow.blogspot.in/2013/03/what-is-tlmu.html [3] https://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/ [4] http://opensourceforu.efytimes.com/2011/06/qemu-for-embedded-systems-development-part-1/ If you wish to download a copy of this white paper, click here
|
Home | Feedback | Register | Site Map |
All material on this site Copyright © 2017 Design And Reuse S.A. All rights reserved. |