New and active ways to bind to your design by Kaiming Ho Fraunhofer IIS.

Slides:



Advertisements
Similar presentations
Construction process lasts until coding and testing is completed consists of design and implementation reasons for this phase –analysis model is not sufficiently.
Advertisements

Programs in Memory Bryce Boe 2012/08/29 CS32, Summer 2012 B.
Part IV: Memory Management
Simulation executable (simv)
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
Abstract Data Types Data abstraction, or abstract data types, is a programming methodology where one defines not only the data structure to be used, but.
LOGO HW/SW Co-Verification -- Mentor Graphics® Seamless CVE By: Getao Liang March, 2006.
Universal Verification Methodology (UVM) Benefits Mustafa Khairallah Boost Valley Boost Valley Consulting 1.
ITEC200 – Week03 Inheritance and Class Hierarchies.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Objects and Classes First Programming Concepts. 14/10/2004Lecture 1a: Introduction 2 Fundamental Concepts object class method parameter data type.
Virtual Memory Operating Systems Lecture # 8. Multi-tasking OS OS Excel MS Word Outlook 0x0000 0x7000 0x4000 0x8000 0x9000.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Tutorial 6 & 7 Symbol Table
Communication in Distributed Systems –Part 2
M. Richter, University of Bergen & S. Kalcher, J. Thäder, T. M. Steinbeck, University of Heidelberg 1 AliRoot - Pub/Sub Framework Analysis Component Interface.
C++ fundamentals.
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
Programming Languages and Paradigms Object-Oriented Programming.
IAY 0600 Digital Systems Design
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
Day Virtual versus static methods. 2. Polymorphism 3. Detailed worked example. 4. Abstract classes.
IAY 0600 Digitaalsüsteemide disain Event-Driven Simulation Alexander Sudnitson Tallinn University of Technology.
Polymorphism, Inheritance Pt. 1 COMP 401, Fall 2014 Lecture 7 9/9/2014.
ENG6090 Reconfigurable Computing Systems Hardware Description Languages Part 6: Configurations.
Factory, Singleton & Strategy All References and Material From: Applying UML and Patterns, 3 rd ed, chpt 26 & 13 BTS530: Major Project Planning and Design.
Creational Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
CS200 Algorithms and Data StructuresColorado State University Part 4. Advanced Java Topics Instructor: Sangmi Pallickara
Elements of Computing Systems, Nisan & Schocken, MIT Press, 2005, Chapter 11: Compiler II: Code Generation slide 1www.idc.ac.il/tecs.
1 Introduction Modules  Most computer programs solve much larger problem than the examples in last sessions.  The problem is more manageable and easy.
Chapter 6 Programming Languages (2) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Tu sca ny 1 Extending The Tuscany Java SCA Runtime 21 August 2006.
1 SystemVerilog Enhancement Requests Daniel Schostak Principal Engineer February 26 th 2010.
Language Concepts Ver 1.1, Copyright 1997 TS, Inc. VHDL L a n g u a g e C o n c e p t s Page 1.
CE Operating Systems Lecture 14 Memory management.
SCALABLE EVOLUTION OF HIGHLY AVAILABLE SYSTEMS BY ABHISHEK ASOKAN 8/6/2004.
07/09/04 Johan Muskens ( TU/e Computer Science, System Architecture and Networking.
1 CIS 461 Compiler Design and Construction Winter 2012 Lecture-Module #16 slides derived from Tevfik Bultan, Keith Cooper, and Linda Torczon.
RUN-Time Organization Compiler phase— Before writing a code generator, we must decide how to marshal the resources of the target machine (instructions,
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Memory Subsystem verification – Can it be taken for granted ?
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Summing Up Object Oriented Design. Four Major Components: Abstraction modeling real-life entities by essential information only Encapsulation clustering.
CS451 - Lecture 2 1 CS451 Lecture 2: Introduction to Object Orientation Yugi Lee STB #555 (816) * Acknowledgement:
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
(1) ICS 313: Programming Language Theory Chapter 12: Object Oriented Programming.
SVA Encapsulation in UVM enabling phase and configuration aware assertions by Mark Litterick Verification Consultant Verilab GmbH, Munich, Germany.
1 MSRBot Web Crawler Dennis Fetterly Microsoft Research Silicon Valley Lab © Microsoft Corporation.
Teaching The Principles Of System Design, Platform Development and Hardware Acceleration Tim Kranich
Java Software Solutions Lewis and Loftus Chapter 9 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Enhanced Class Design -- Introduction.
SWE 4743 Abstraction Richard Gesick. CSE Abstraction the mechanism and practice of abstraction reduces and factors out details so that one can.
Advanced Object-oriented Design Patterns Creational Design Patterns.
Java Programming, Second Edition Chapter Twelve Advanced Inheritance Concepts.
1 Java Server Pages A Java Server Page is a file consisting of HTML or XML markup into which special tags and code blocks are inserted When the page is.
IAY 0600 Digital Systems Design Event-Driven Simulation VHDL Discussion Alexander Sudnitson Tallinn University of Technology.
Hello world !!! ASCII representation of hello.c.
METADATA IN.NET Presented By Sukumar Manduva. INTRODUCTION  What is Metadata ? Metadata is a binary information which contains the complete description.
Binding & Dynamic Linking Presented by: Raunak Sulekh(1013) Pooja Kapoor(1008)
Chapter 5 Introduction to Defining Classes Fundamentals of Java.
Matthias Richter, Sebastian Kalcher, Jochen Thäder & Timm M. Steinbeck
UVM-Multi-Language Hands-On
Yet Another Memory Manager
Yet Another Memory Manager
IFS410: Advanced Analysis and Design
SYNTHESIS OF SEQUENTIAL LOGIC
THE ECE 554 XILINX DESIGN PROCESS
THE ECE 554 XILINX DESIGN PROCESS
In Today’s Class.. General Kernel Responsibilities Kernel Organization
Plug-In Architecture Pattern
Presentation transcript:

New and active ways to bind to your design by Kaiming Ho Fraunhofer IIS

Sponsored By: 2 of 15 Overview: Introduction and Motivation Key techniques and language constructs from SystemVerilog Example use case

Sponsored By: 3 of 15 Introduction What does a ‘bind’ do? –Insert “your” code into “others” code. –as if you actually modified other designers code Why? –Modifying others code not allowed / undesirable –Keep DV code separate from design code Hope to reuse. DV code DUT

Sponsored By: 4 of 15 Introduction Could have kept code separate at top level and used hier. references Susceptible to hierarchy changes. DUT DV code xmr XMR ?

Sponsored By: 5 of 15 What to bind? What kind of DV code? –assertions –coverage Active code? –Transactors –Generators –Monitors Once bound, how to communicate with and control? DV code assertions coverage monitors passive monitor generator Testbench component

Sponsored By: 6 of 15 SystemVerilog constructs that help Need to understand the following constructs and design patterns: Abstract base classes. virtual class ; pure virtual task... pure virtual function... Packages –Encapsulate abstract base classes –Implement lookup table up-module references LRM § (upwards name referencing)

Sponsored By: 7 of 15 All transactors have an API. –Translate your wishes into signal wiggles. Define tasks/functions which make up API. Implement as pure virtual class in package. virtual class xactor_api; task drive_transaction(...); function T wait_for_transaction(); Implement transactor. –Map signal wiggles to API & vice versa. –Extend base class. Construct an object. –Register object. Abstract base classes pure virtual

Sponsored By: 8 of 15 API in previous slide is abstract base class –Need to extend and implement Construct object of extended class. Register into dropbox Extend/Implement/Register fill-in details unique string class my_xactor_api extends xactor_api; task drive_transaction(...); // blah blah endtask function T wait_for_transaction(); // blah blah endfunction endclass my_xactor_api _my_api = new; initial bind_dropbox::register( $psprintf(“%m”), _my_api);

Sponsored By: 9 of 15 BIND TB binds xactor into DUT RECOVER A lookup table implemented in a package. –Globally visible. Singleton. (because it is in a package) –Associates “strings” with “API objects” Transactors REGISTER their APIs into time 0. TB components RECOVER API objects afterwards. bind dut_module xactor bind1 (...); xactor_api my_apis[$]; string hier_paths[$]; bind_dropbox::recover(“bind1”, hier_paths, my_apis); Bind & Recover xactor binds into dut_module. xactor binds into dut_module. must match

Sponsored By: 10 of 15 REGISTER bound xactor registers API in dropbox. %m is unique string -> used as key. –last part is bind instance name (e.g. bind1) xactor could be multiply instantiated (if target module is) –multiple entries in dropbox. –last part for all are identical. RECOVER For each bind, TB component calls RECOVER –Use bind instance name as key. dropbox returns –array of API objects matching key. –array of %m strings matching key. TB uses %m strings to separate multiply instantiated case. Bind dropbox details

Sponsored By: 11 of 15 Real Life example Initializing internal RAMs in SoC. –Contents of SPRAM contain code/data for CPU. –Must be initialized before reset. Need backdoor (zero time) methods CPU core I-cache/I-tag memories D-cache/D-tag memories internal data scratchpad (DSPRAM) internal instruction scratchpad (ISPRAM)

Sponsored By: 12 of 15 Memory wrappers organized as follows: module ispram_16kB(…); reg[7:0] mem[0:16383]; // synopsys translate_off function reg [7:0] read_byte(addr); function void write_byte(addr, din); // synopsys translate_on endmodule Real Life example 2D array for memory (behavioural model) 2D array for memory (behavioural model) helper functions spram_mem _accessor bind ispram_16kB spram_mem_accessor bind1();

Sponsored By: 13 of 15 spram_mem_accessor uses up-module reference. module spram_accessor(); function reg [7:0] _read_byte(addr); return read_byte(addr); endfunction function void _write_byte(addr, din); write_byte(addr,din); endfunction class my_mem_accessor extends mem_accessor_base;... my_mem_accessor _api = new initial bind_dropbox::register(...); endmodule Up-module reference up-module ref. into host module. up-module ref. into host module. abstract base class CREATE/R EGISTER

Sponsored By: 14 of 15 Putting it all together “xactor” to bind: spram_mem_accessor. API: –function reg [7:0] read_byte(input [31:0] addr); –function void write_byte(input [31:0] addr, [7:0] din); bind target: SoC internal memories –bind ispram_16kB spram_mem_accessor bind1(); –bind dspram_16kB spram_mem_accessor bind2(); WHY? Runtime backdoor access. Init uProc program. –compile ‘C’ program. gcc -> ELF file. –convert ELF to SREC. objcopy –O srec *.elf –parse SREC to obtain addr/data pairs to write. –map addr to appropriate memory. Use API to write bytes. API was recovered with bind_dropbox::recover.

Sponsored By: 15 of 15 Conclusion Presented binding transactors which can be actively controlled at runtime. Key concepts: –Abstract base classes –Packages –bind dropbox –upwards name referencing. Example use-case –Loading ‘C’ programs into full-chip SoC simulations. –integrated hardware/software verification

Sponsored By: 16 of 15 Thank you! QUESTIONS?

Sponsored By: 17 of 15 Comparison with UVM UVM uses interfaces. –top level testbench instantiates interface –agents require virtual version of interface Exchange of virtual interface objects through resource db –very similar in to bind_dropbox –uvm_resource_db#(virtual serial_intf)::set (“interfaces”, “vif”, hier.path.to.intf); –uvm_resource_db#(virtual serial_intf)::read_by_name (“interfaces”, “vif”, vif); Virtual interfaces are problematic when parameters exist. vintf