Easy Steps Towards Virtual Prototyping using the SystemVerilog DPI

Slides:



Advertisements
Similar presentations
Network II.5 simulator ..
Advertisements

Computer Architecture
Using emulation for RTL performance verification
Using Virtual Platforms for Firmware Verification James Pangburn Jason Andrews.
Reporter :LYWang We propose a multimedia SoC platform with a crossbar on-chip bus which can reduce the bottleneck of on-chip communication.
WHAT IS AN OPERATING SYSTEM? An interface between users and hardware - an environment "architecture ” Allows convenient usage; hides the tedious stuff.
by Adiel Khan Staff CAE Synopsys
February 28 – March 3, 2011 Stepwise Refinement and Reuse: The Key to ESL Ashok B. Mehta Senior Manager (DTP/SJDMP) TSMC Technology, Inc. Mark Glasser.
FIU Chapter 7: Input/Output Jerome Crooks Panyawat Chiamprasert
LOGO HW/SW Co-Verification -- Mentor Graphics® Seamless CVE By: Getao Liang March, 2006.
Input-output and Communication Prof. Sin-Min Lee Department of Computer Science.
An Introduction to Electronic System Level Design 錢偉德 國家晶片及系統中心設計服務組 清大資工系視訊通訊研究室.
I/O Hardware n Incredible variety of I/O devices n Common concepts: – Port – connection point to the computer – Bus (daisy chain or shared direct access)
Configurable System-on-Chip: Xilinx EDK
Ritu Varma Roshanak Roshandel Manu Prasanna
Read Chapter 3 (David E. Simon, An Embedded Software Primer)
Midterm Tuesday October 23 Covers Chapters 3 through 6 - Buses, Clocks, Timing, Edge Triggering, Level Triggering - Cache Memory Systems - Internal Memory.
1 Introduction Chapter What is an operating system 1.2 History of operating systems 1.3 The operating system zoo 1.4 Computer hardware review 1.5.
COMP3221 lec31-mem-bus-II.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lectures 32: Memory and Bus Organisation - II
Embedded Systems Design at Mentor. Platform Express Drag and Drop Design in Minutes IP Described In XML Databook s Simple System Diagrams represent complex.
A Tale of Two Languages: SystemVerilog & SystemC by David C Black Senior MTS Doulos.
3-1 System peripherals & Bus Structure Memory map of the LPC2300 device is one contiguous 32-bit address range. However, the device itself is made up of.
Cortex-M3 Debugging System
RaPTEX: Rapid Prototyping of Embedded Communication Systems Dr. Alex Dean & Dr. Mihai Sichitiu (ECE) Dr. Tom Wolcott (MEAS) Motivation  Existing work.
Role of Standards in TLM driven D&V Methodology
Input/Output. Input/Output Problems Wide variety of peripherals —Delivering different amounts of data —At different speeds —In different formats All slower.
Chapter 8 Input/Output. Busses l Group of electrical conductors suitable for carrying computer signals from one location to another l Each conductor in.
1 Chapter 2. The System-on-a-Chip Design Process Canonical SoC Design System design flow The Specification Problem System design.
LPC2148 Programming Using BLUEBOARD
Three fundamental concepts in computer security: Reference Monitors: An access control concept that refers to an abstract machine that mediates all accesses.
1-1 Embedded Network Interface (ENI) API Concepts Shared RAM vs. FIFO modes ENI API’s.
2007 Oct 18SYSC2001* - Dept. Systems and Computer Engineering, Carleton University Fall SYSC2001-Ch7.ppt 1 Chapter 7 Input/Output 7.1 External Devices.
I/O Example: Disk Drives To access data: — seek: position head over the proper track (8 to 20 ms. avg.) — rotational latency: wait for desired sector (.5.
New and active ways to bind to your design by Kaiming Ho Fraunhofer IIS.
Computer Architecture Lecture10: Input/output devices Piotr Bilski.
집적회로 Spring 2007 Prof. Sang Sik AHN Signal Processing LAB.
System Verilog Testbench Language David W. Smith Synopsys Scientist
Laurent VUILLEMIN Platform Compile Software Manager Emulation Division The Veloce Emulator and its Use for Verification and System Integration of Complex.
2009 Sep 10SYSC Dept. Systems and Computer Engineering, Carleton University F09. SYSC2001-Ch7.ppt 1 Chapter 7 Input/Output 7.1 External Devices 7.2.
Dr Mohamed Menacer College of Computer Science and Engineering Taibah University CE-321: Computer.
High Performance Embedded Computing © 2007 Elsevier Lecture 18: Hardware/Software Codesign Embedded Computing Systems Mikko Lipasti, adapted from M. Schulte.
Boost Verification Results by Bridging the Hw/Sw Testbench Gap by Matthew Ballance Verification Technologist Mentor Graphics.
MBG 1 CIS501, Fall 99 Lecture 18: Input/Output (I/O): Buses and Peripherals Michael B. Greenwald Computer Architecture CIS 501 Fall 1999.
Winter-Spring 2001Codesign of Embedded Systems1 Methodology for HW/SW Co-verification in SystemC Part of HW/SW Codesign of Embedded Systems Course (CE.
Modes of transfer in computer
SOC Consortium Course Material Debugging and Evaluation Speaker: Yung-Tsung Wang InstructorProf. Tsung-Han Tsai.
CH10 Input/Output DDDData Transfer EEEExternal Devices IIII/O Modules PPPProgrammed I/O IIIInterrupt-Driven I/O DDDDirect Memory.
L/O/G/O Input Output Chapter 4 CS.216 Computer Architecture and Organization.
Embedded Network Interface (ENI). What is ENI? Embedded Network Interface Originally called DPO (Digital Product Option) card Printer without network.
1: Operating Systems Overview 1 Jerry Breecher Fall, 2004 CLARK UNIVERSITY CS215 OPERATING SYSTEMS OVERVIEW.
VLSI Algorithmic Design Automation Lab. THE TI OMAP PLATFORM APPROACH TO SOC.
SOC Virtual Prototyping: An Approach towards fast System- On-Chip Solution Date – 09 th April 2012 Mamta CHALANA Tech Leader ST Microelectronics Pvt. Ltd,
Simics: A Full System Simulation Platform Synopsis by Jen Miller 19 March 2004.
SVA Encapsulation in UVM enabling phase and configuration aware assertions by Mark Litterick Verification Consultant Verilab GmbH, Munich, Germany.
Input/Output Problems Wide variety of peripherals —Delivering different amounts of data —At different speeds —In different formats All slower than CPU.
IT3002 Computer Architecture
Input Output Techniques Programmed Interrupt driven Direct Memory Access (DMA)
Major OS Components CS 416: Operating Systems Design, Spring 2001 Department of Computer Science Rutgers University
Presented By Aditya Dayal ITM University, Gwalior.
System-on-Chip Design Homework Solutions
Figure 1 PC Emulation System Display Memory [Embedded SOC Software]
I/O Systems I/O Hardware Application I/O Interface
Yikes! Why is my SystemVerilog Testbench So Slooooow?
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
Presentation transcript:

Easy Steps Towards Virtual Prototyping using the SystemVerilog DPI by Dave Rich Verification Architect Mentor Graphics

Overview The world loves two kingdoms Hardware you can touch Software is what most people see Not very many people understand both concepts well enough for verification Finding clip art for software

Objectives Provide a verification environment for hardware and software as a system Early hardware access from software Preserve debugging environments for both sides Provide most optimal abstraction levels for performance Do not duplicate hardware/software component verification

external bus interface Typical SOC Design Software in Memory Embedded Core ARM core/CPU on-chip RAM or ROM test i/f ctrl external bus interface Bus Fabric AHB External Devices DMA controller bridge UART timer parallel i/f APB other master/slave devices Internal Devices

Virtual Prototype Backplane CPU or native code RAM Direct Memory References Memory Mapped References External bus interface Memory Map UART timer parallel i/f other master/slave devices Virtual Backplane

Block-Level Verification Environment UART timer parallel i/f USB VIP APB VIP APB Processor is irrelevant

Mixed Software/Hardware Simulation Memory Mapped References external bus interface Virtual CPU or native code Virtual Bus handler Direct Memory References RAM Bus agent UART timer parallel i/f Virtual backplane routes traffic APB

Levels of Abstraction

Abstraction Levels of Accuracy Untimed (UT) – limited or unspecified timing accuracy. At this level, only ordering of operations matters and there may be no bookkeeping of elapsed simulated time. Loosely-timed (LT) – time is broken into slices or some quantum unit. An SoC virtual platform is likely to choose the execution of an instruction as its quantum time unit. Approximately-timed (AT) – Quantum units are broken down into phases and the tracking of elapsed simulated time is enough to gather relative performance statistics. Cycle-accurate/cycle-callable (CC) Timing is accurate enough to run in lock-step to match the hardware models at a pin-level, clock or bus-cycle boundaries.

Partitioning Choices Wide range of abstraction choices for software models Hardware tends to limit to what is synthesizable What components can be black-box verified?

Software to Hardware DPI link void C_routine() { if (address==0xFFA) { APB_read(address,&data); } else { data = MemRead[address]; } APB_write(address,data+1); Pin-level transactions task APB_read(input int address, output int data); @(posedge clock) bus <= address; cmd <= read; cmd <= ack; data = bus; endtask   export “DPI-C” task APB_read; export “DPI-C” task APB_write; function call transactions

Compressed Hardware Simulation Timing APB_read op1 op2 APB_write MemRead op3 op4 … op1001 MemWrite op1002 op1003   Read Write Read Read Write Write Read Simulation time

Approximated Hardware Simulation Timing task APB_idle(input int cycles); repeat (cycles) @(posedge clock); endtask   APB_read op1 op2 APB_write MemRead op3 APB_idle(3); op4 … op1004 APB_idle(50) APB_read;   Read Write idle Read Do I really need 1000 cycles? Write idle Read

One of many ways to represent an interrupt Interrupt Monitor task APB_idle( input int requestedCycles, output int iRequested, output int actualCycles); int i; fork for(i=0;i<requestedCycles;i++) @(posedge clock); @(IRQ!=0); join_any disable fork; actualCycles = i; iRequested = IRQ; endtask One of many ways to represent an interrupt

Transaction Specification Field Type Description Operation Enum Read, write,idle,burst Address 32-bit Physical starting address ReqStart Time Time of Request ReqDuration Time allocated for operation TrStart Actual start time TrEnd Actual end time InterruptMode Ignore, Complete, Abort InterruptReq None,Requested InterruptTime Time of Interrupt Length Int Size of data Payload nBytes Transaction data

MASTER to MASTER Communication

Starting A C Thread int c_code() { /* C task */ while(1) { /* C thread */ v_code(args); ... } }   module top; import “DPI-C” task c_code(); initial c_code; // start C thread bit clk; always #10 clk++; export “DPI-C” task v_code; task v_code(args); addr <= args; @(posedge clk); args = result; endtask endmodule  

Inter-process Communication Software Master Hardware Client C Thread System Verilog Threads Virtual Prototype Threads Initiate Socket Connect to Socket Single bus transaction   Software Bus Model Wait for message DPI Communication Send message IPC Communication Send transaction Wait for response Wait for message Send message

UVM Testbench Re-Use IPC Bus Model channel Virtual Prototype UVM Test DPI C Thread UVM Test   regA.read() regA.write() DUT Register Model Bus Agent Sequence

Summary This methodology has been deployed with a number commercially and internally developed virtual prototypes It turns out this technique can be used for a wide range of applications where non-SystemVerilog stimulus is needed Any C code needs to be the master Python/Perl Testbench (For legacy, of course)