UVM-Multi-Language Hands-On

Slides:



Advertisements
Similar presentations
Threads, SMP, and Microkernels
Advertisements

Using emulation for RTL performance verification
by Adiel Khan Staff CAE Synopsys
Extensible Processors. 2 ASIP Gain performance by:  Specialized hardware for the whole application (ASIC). −  Almost no flexibility. −High cost.  Use.
1 Component Description Alice 3d Graphics Software Human Computer Interaction Institute Carnegie Mellon University Prepared by: Randy Pausch,
Creating Test Environments HDL Model HDL Testbench Simulation Engine API stimulus check Testbench Program stimulus check Non-HDL languages may be used.
Educational Computer Architecture Experimentation Tool Dr. Abdelhafid Bouhraoua.
Design Synopsys System Verilog API Donations to Accellera João Geada.
Gaurav Gupta Freescale Semiconductors Adiel Khan, Parag Goel, Amit Sharma, Varun S, Abhisek Verma Synopsys
Role of Standards in TLM driven D&V Methodology
Introduction to .Net Framework
Software Framework for Teleoperated Vehicles Team Eye-Create ECE 4007 L01 Karishma Jiva Ali Benquassmi Safayet Ahmed Armaghan Mahmud Khin Lay Nwe.
Eric Keller, Evan Green Princeton University PRESTO /22/08 Virtualizing the Data Plane Through Source Code Merging.
New and active ways to bind to your design by Kaiming Ho Fraunhofer IIS.
CS533 Concepts of Operating Systems Jonathan Walpole.
GreenBus Extensions for System-On-Chip Exploration.
SOC Virtual Prototyping: An Approach towards fast System- On-Chip Solution Date – 09 th April 2012 Mamta CHALANA Tech Leader ST Microelectronics Pvt. Ltd,
SVA Encapsulation in UVM enabling phase and configuration aware assertions by Mark Litterick Verification Consultant Verilab GmbH, Munich, Germany.
Proposal for an Open Source Flash Failure Analysis Platform (FLAP) By Michael Tomer, Cory Shirts, SzeHsiang Harper, Jake Johns
Efficient Software-Based Fault Isolation Robert Wahbe, Steven Lucco, Thomas E. Anderson, Susan L. Graham.
ISCUG Keynote May 2008 Acknowledgements to the TI-Nokia ESL forum (held Jan 2007) and to James Aldis, TI and OSCI TLM WG Chair 1 SystemC: Untapped Value.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
Software Engineering Algorithms, Compilers, & Lifecycle.
1 The user’s view  A user is a person employing the computer to do useful work  Examples of useful work include spreadsheets word processing developing.
April 15, 2013 Atul Kwatra Principal Engineer Intel Corporation Hardware/Software Co-design using SystemC/TLM – Challenges & Opportunities ISCUG ’13.
Introduction to Operating Systems Concepts
Chapter 1: Introduction to Computers and Programming
Benefits of a Virtual SIL
Using Ada-C/C++ Changer as a Converter Automatically convert to C/C++ to reuse or redeploy your Ada code Eliminate the need for a costly and.
Architectures of Digital Information Systems Part 1: Interrupts and DMA dr.ir. A.C. Verschueren Eindhoven University of Technology Section of Digital.
Muen Policy & Toolchain
Chapter 1: Introduction to Systems Analysis and Design
Framework For Exploring Interconnect Level Cache Coherency
Current Generation Hypervisor Type 1 Type 2.
Introduction to Visual Basic 2008 Programming
William Stallings Computer Organization and Architecture 8th Edition
COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE
SOFTWARE DESIGN AND ARCHITECTURE
User Interface Design The Golden Rules: Place the user in control.
ECE 353 Introduction to Microprocessor Systems
Chapter 8 – Software Testing
Chapter 2 Processes and Threads Today 2.1 Processes 2.2 Threads
Chapter 1: Introduction to Compiling (Cont.)
Morgan Kaufmann Publishers
IEEE1666 SystemC TLM2.0 Coulpling gem5 with Dipl.-Ing. Matthias Jung
Chapter 2: Operating-System Structures
Introduction to Software Testing
Performance Optimization for Embedded Software
CIS16 Application Development – Programming with Visual Basic
Lesson Objectives Aims Key Words Compiler, interpreter, assembler
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Yikes! Why is my SystemVerilog Testbench So Slooooow?
Lecture Topics: 11/1 General Operating System Concepts Processes
Analysis models and design models
Translation Buffers (TLB’s)
Prof. Leonardo Mostarda University of Camerino
OCP-IP SLD New Generation Using OSCI-TLM-2
Translation Buffers (TLB’s)
AIMS Equipment & Automation monitoring solution
Outline Operating System Organization Operating System Examples
Chap 1. Getting Started Objectives
Chapter 11 Processor Structure and function
Translation Buffers (TLBs)
UNISIM (UNIted SIMulation Environment) walkthrough
Chapter 1: Introduction to Systems Analysis and Design
Review What are the advantages/disadvantages of pages versus segments?
IS 135 Business Programming
ONAP Architecture Principle Review
Chapter 1: Introduction to Computers and Programming
Presentation transcript:

UVM-Multi-Language Hands-On Thorsten Dworzak (Verilab GmbH) Angel Hidalga (Infineon Technologies AG) © Accellera Systems Initiative

© Accellera Systems Initiative Introduction UVM-ML version 1.2 add-on library to UVM vendor/simulator independent Accelera Multi-Language working group easy integration of different HVLs (e, SV, SystemC) inter-language communication via TLM2 sockets © Accellera Systems Initiative

© Accellera Systems Initiative Verification Focus (1) DUT is ARM CPU IP Different UVM-SV testbenches (DUT hierarchy) SystemC reference model joint development between software and hardware-verification team © Accellera Systems Initiative

© Accellera Systems Initiative Verification Focus (2) SystemC model must support 3 use-cases - ISG controlled by DUT state -> needs model - Instruction fetch passive vs. active - "stand-alone" - C-only © Accellera Systems Initiative

© Accellera Systems Initiative UVM Environment - two C-model instances; ISG model has its own memory and only interacts with the ISG - Harvard architecture for memory -> no self-modifying code possible - reference model is passive and fed from monitors. © Accellera Systems Initiative

© Accellera Systems Initiative C-Model Requirements Specification compliance (Model and DUT output must match) Windows+Linux cross-platform development C++11 wrapped in System-C modules High performance (for stand-alone ISS) Support all use-cases with minimal code overlap More than one instance (careful with static classes) Error injection possible State roll-back support - development MS Visual Studio + clang + gcc - High performance for ISS © Accellera Systems Initiative

Instruction Stream Generation (1) Instruction base class contains all properties that define an assembler instruction Specialized class defines required properties, e.g. opcode-size, legal source+destination registers. SV code generated from specification © Accellera Systems Initiative

Instruction Stream Generation (2) An ISG sequence contains an instruction item and several fields to control the item generation Dedicated sequences to write/read registers, establish fault handlers etc. Sequence API allows flexibility to do fully random instructions, specific instructions like LDR r0,[r5,r4,LSL #3], and anything in-between C-Model is used to predict next PC value (e.g. branch target) Opcodes known to be skipped will be set to BKPT to detect DUT bugs Code and data memory are separate, so no problem of stack running into code segment © Accellera Systems Initiative

© Accellera Systems Initiative OSCI vs. ncsc OSCI 2.3.1 is reference implementation Software team (Windows) relied on this Cadence implementation used by ncsc Easier build-flow, used by HW-verification team Compatibility is "good enough" OSCI-based flow can be used as fall-back solution - HW-team started off with OSCI first, switched to ncsc later (stable tool versions) © Accellera Systems Initiative

© Accellera Systems Initiative Linux vs. Windows Collaborative effort of software and hw-verification team Software team used MS Visual Studio UVM testbench not available Large suite of unit tests based on Google Test ensured up-front quality Several Jenkins projects continuously checked quality metrics e.g. make sure code-base compiles with gcc Software team followed Agile (Scrum) flow while HW-verification team uses traditional waterfall model Different SCMs - git vs. ClearCase © Accellera Systems Initiative

ML Interface Selection Choice of interfaces according to requirements - TLM2: used blocking transport w/ and w/o time consumption - V(H)PI: more clutter for parameter passing, no need for us to access simulation nodes © Accellera Systems Initiative

© Accellera Systems Initiative TLM2 sockets Use of SV type uvm_tlm_b_<target|initiator>_socket Multi-socket and passthrough sockets currently not supported Need to use default data type uvm_tlm_generic_payload Benefit from existing packing/serialization facilities of UVM-ML Created wrapper classes for the two types of sockets Encapsulates standard functionality (build, register, connect, ...) Unique namespace for b_transport() function in target socket - more stuff not supported: call-backs, user-defined data types and phases, user-defined extension types, DMI © Accellera Systems Initiative

© Accellera Systems Initiative TLM2 Generic Payload UVM-ML provides packing/serialization -> less code on SV and SystemC side Is intended to model memory-mapped bus transactions r/w, address, data, byte-enables Any missing functionality implemented as SV static functions Additional information transmitted via payload extensions Transaction privilege-level, initiator ID, embedded commands, ... Target response (type of error, busy status, ...) GP response_status field only used for TLM communication errors © Accellera Systems Initiative

© Accellera Systems Initiative DPI-C Interface (1) Transmit integral types and structs across the language barrier Export SV methods called from C++ export "DPI-C" function cExpReqSysRst(); function bit cExpReqSysRst(input byte modelType); ... endfunction extern "C" void cExpReqSysRst(char modelType); - The context attribute as opposed to the pure attribute (the latter being the default) states that the method is accessing objects other than its input parameters, e.g. SystemC objects Tasks may consume time extern "C" void cExpSync(); export "DPI-C" task cExpSync(); task cExpSync(); @(posedge clk); endtask © Accellera Systems Initiative

© Accellera Systems Initiative DPI-C Interface (2) Import C++ methods called from SV import "DPI-C" context task cImpInitCpu(); int cImpInitCpu() { ... } context as opposed to pure attribute allows C++ implementation to access objects other than input parameters (e.g. SystemC objects, call exported methods) © Accellera Systems Initiative

Simulation Performance Using UVM testbench that allows drop-in replacement of DUT with C-model, we can compare the performance - performance within the UVM-TB framework! © Accellera Systems Initiative

© Accellera Systems Initiative Summary Successfully deployed UVM-ML in SystemC/SystemVerilog environment Not all SystemC features implemented Most initial tool problems solved UVM-ML reduces effort to cross the language boundaries © Accellera Systems Initiative

© Accellera Systems Initiative Questions, Comments? © Accellera Systems Initiative