Writing C-programs to verify a SoC design. Sven Andersson Zoocad Consulting

Similar documents
Quartus II Software Design Series : Foundation. Digitale Signalverarbeitung mit FPGA. Digitale Signalverarbeitung mit FPGA (DSF) Quartus II 1

The Advanced JTAG Bridge. Nathan Yawn 05/12/09

Altera Error Message Register Unloader IP Core User Guide

Digitale Signalverarbeitung mit FPGA (DSF) Soft Core Prozessor NIOS II Stand Mai Jens Onno Krah

FPGA Design From Scratch It all started more than 40 years ago

ModelSim-Altera Software Simulation User Guide

Product Development Flow Including Model- Based Design and System-Level Functional Verification

Digital Systems Design! Lecture 1 - Introduction!!

Getting off the ground when creating an RVM test-bench

Quartus Prime Standard Edition Handbook Volume 3: Verification

Quartus II Handbook Volume 3: Verification

Automating Root-Cause Analysis to Reduce Time to Find Bugs by Up to 50%

Echtzeittesten mit MathWorks leicht gemacht Simulink Real-Time Tobias Kuschmider Applikationsingenieur

Best Practises for LabVIEW FPGA Design Flow. uk.ni.com ireland.ni.com

Qsys System Design Tutorial

Freescale Semiconductor, I

Tensilica Software Development Toolkit (SDK)

Linux. Reverse Debugging. Target Communication Framework. Nexus. Intel Trace Hub GDB. PIL Simulation CONTENTS

PowerPlay Power Analysis & Optimization Technology

FLIX: Fast Relief for Performance-Hungry Embedded Applications

9/14/ :38

An Introduction to MPLAB Integrated Development Environment

ARM Webinar series. ARM Based SoC. Abey Thomas

ESP-CV Custom Design Formal Equivalence Checking Based on Symbolic Simulation

Development With ARM DS-5. Mervyn Liu FAE Aug. 2015

Low Cost System on Chip Design for Audio Processing

MicroBlaze Debug Module (MDM) v3.2

International Journal of Scientific & Engineering Research, Volume 4, Issue 6, June ISSN

VHDL Test Bench Tutorial

Introduction to Digital System Design

Microtronics technologies Mobile:

System on Chip Platform Based on OpenCores for Telecommunication Applications

10 Gigabit Ethernet MAC Core for Altera CPLDs. 1 Introduction. Product Brief Version February 2002

Modeling Registers and Counters

Designing a System-on-Chip (SoC) with an ARM Cortex -M Processor

White Paper. Real-time Capabilities for Linux SGI REACT Real-Time for Linux

Eingebettete Systeme. 4: Entwurfsmethodik, HW/SW Co-Design. Technische Informatik T T T

OpenSoC Fabric: On-Chip Network Generator

Using a Generic Plug and Play Performance Monitor for SoC Verification

7a. System-on-chip design and prototyping platforms

Efficient Project Management and Verification Sign-off Using Questa Verification Management

Lab 1: Introduction to Xilinx ISE Tutorial

UG103.8 APPLICATION DEVELOPMENT FUNDAMENTALS: TOOLS

Implementation of Web-Server Using Altera DE2-70 FPGA Development Kit

Agenda. Michele Taliercio, Il circuito Integrato, Novembre 2001

FPGA Prototyping Primer

Introduction to Functional Verification. Niels Burkhardt

System / Verification: Performance & Debug Track Abstracts

Soft processors for microcontroller programming education

Price: see your VeriFone sales representative. Per student, Excluding VAT.

Modeling Latches and Flip-flops

Software based Finite State Machine (FSM) with general purpose processors

Using the CoreSight ITM for debug and testing in RTX applications

13. Publishing Component Information to Embedded Software

A Mixed-Signal System-on-Chip Audio Decoder Design for Education

CSE467: Project Phase 1 - Building the Framebuffer, Z-buffer, and Display Interfaces

Hardware Based Flash Memory Failure Characterization Platform

How To Test Your Code

Von der Hardware zur Software in FPGAs mit Embedded Prozessoren. Alexander Hahn Senior Field Application Engineer Lattice Semiconductor

Smart Business Architecture for Midsize Networks Network Management Deployment Guide

How To Design A Chip Layout

(Refer Slide Time: 00:01:16 min)

Fastest Path to Your Design. Quartus Prime Software Key Benefits

Design Cycle for Microprocessors

Zynq-7000 Platform Software Development Using the ARM DS-5 Toolchain Authors: Simon George and Prushothaman Palanichamy

Design and Functional Verification of A SPI Master Slave Core Using System Verilog

Universal Flash Storage: Mobilize Your Data

Simplifying Embedded Hardware and Software Development with Targeted Reference Designs

Post-Configuration Access to SPI Flash Memory with Virtex-5 FPGAs Author: Daniel Cherry

Digital IC Design Flow

FPGA Implementation of an Advanced Traffic Light Controller using Verilog HDL

Introduction. - Please be sure to read and understand Precautions and Introductions in CX-Simulator Operation Manual and

Codesign: The World Of Practice

Design and Verification of Nine port Network Router

Vivado Design Suite Tutorial

A SystemC Transaction Level Model for the MIPS R3000 Processor

Chapter 13: Verification

The structured application of advanced logging techniques for SystemVerilog testbench debug and analysis. By Bindesh Patel and Amanda Hsiao.

LAB #4 Sequential Logic, Latches, Flip-Flops, Shift Registers, and Counters

A Survey on ARM Cortex A Processors. Wei Wang Tanima Dey

Using Vivado Design Suite with Version Control Systems Author: Jim Wu

ARM Ltd 110 Fulbourn Road, Cambridge, CB1 9NJ, UK.

10/100/1000Mbps Ethernet MAC with Protocol Acceleration MAC-NET Core with Avalon Interface

High-Level Synthesis for FPGA Designs

Fastboot Techniques for x86 Architectures. Marcus Bortel Field Application Engineer QNX Software Systems

DE4 NetFPGA Packet Generator Design User Guide

Novas Software, Inc. Introduction. Goal. PART I: Original Technology Donation 1. Data Dump Reader

Pre-tested System-on-Chip Design. Accelerates PLD Development

Implementation Details

Lab #5: Design Example: Keypad Scanner and Encoder - Part 1 (120 pts)

MAX II ISP Update with I/O Control & Register Data Retention

Prototyping ARM Cortex -A Processors using FPGA platforms

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

A Verilog HDL Test Bench Primer Application Note

Architecture Guide Community release

All Programmable Logic. Hans-Joachim Gelke Institute of Embedded Systems. Zürcher Fachhochschule

LabVIEW DSP Test Integration Toolkit for TI DSP

BY STEVE BROWN, CADENCE DESIGN SYSTEMS AND MICHEL GENARD, VIRTUTECH

Introduction to the Latest Tensilica Baseband Solutions

Computer Architectures

Transcription:

Writing C-programs to verify a SoC design 2013 11 06 Sven Andersson

Agenda Presentation / Introduction Why using C programs for RTL verification Major obstacles to overcome Chipotle C program based test language environment Verification environment Xtensa LX5 customizable DPU Verilog test bench Simulation commands Running a simulation using Mongoose Platforms supported Conclusion Demonstration

Presenting Myself 1950 Born 1969 Studied Electrical Engineering at Royal Institute of Engineering 1974 Got my first job as a component engineer at LM Ericsson 1990 Joined the ASIC design group at Ericsson 1992 Verilog training course 1992 My first RTL design (JTAG controller) 1993 First version of the Mongoose program 2006 Started my own company ( ) 2013 Specified the Chipotle test language

Introduction Every SoC design has one or more processor core(s) When testing the SoC the embedded processor will execute a program Programs are normally written in the C language The C program can easily by converted to a program memory load module The load module can be loaded to the memory model before RTL simulation starts Only the processor clock and reset must be provided to start the RTL simulation To make it useful for system verification we have to find a way to control input signals and measure output signals in our SoC This is what this presentation is all about

Why Using C Programs for RTL Verification A lot more people know how to write C programs compared to Verilog or SystemVerilog code The C language is easy to understand and has a lot of built-in functions C compilers are very efficient and generate compact program code The whole simulation can be controlled from one place C programs makes debugging the design simpler By adding special instruction the hardware setup can be controlled Simulation time is saved because we don't have to compile and elaborate the RTL test bench for every simulation run

Major Obstacles to Overcome Converting the compiled c-program to a Verilog load module Detecting end of program execution Printing to a console or a log file Generating pseudo-random data Controlling the c-program from the verilog testbench Controlling the verilog testbench from the c-program Finding out if the program execution hangs

Chipotle Test Language Environment An extension to the normal C programming language to support RTL debug and verification The Verilog test bench will recognize these macros and implement the specified function A special print macro supports printing from the C program to the Verilog test bench logfile or console Lots of statistics can be generated during a simulation run Pseudo-random data generation is supported 64, 32, 16 and 8 bit data formats can be used Different test modes are supported (debug, waveform dumps, regression testing)

SoC Verification Timelines

Verification Flow Diagram

Xtensa LX5 Digital Processing Unit Small, low-power 32-bit base architecture Configurable over a wide range of pre-verified options Extendable with designer-defined instructions, register files, and I/O Local memory configurable up to 8MB Dual load/stores up to 512 bits wide IEEE 754 compliant double-precision floating point unit Coresight compatible interface for debug and trace

Verilog Test Bench

Simulation Control Commands writecontrol(sim_control,simulation_time) writecontrol(sim_control, END_OF_TEST) writecontrol(sim_control,display_statistics) writecontrol(sim_control,start_measure) writecontrol(sim_control,stop_measure) writecontrol(sim_control,inc_fail_counter) writecontrol(sim_control,inc_pass_counter)

Simulation Hardware Control Commands writecontrol(enable_interrupt,0x2) writecontrol(enable_test,gpio) writecontrol(drive_gpio_in,0xabcd) writecontrol(check_gpio_out,0x1234) writecontrol(enable_counter,0xff) writecontrol(clear_counter,0x33)

Supporting C Functions printdate(date_value) printtime(time_value) waitcycles(clock_cycles) generaterandomdata(seed) printtextstring( text ) convertbinarytodec( 1000101 ) printbinary(value)

C-program Example for (i=0; I < NUMBER_OF_GPIO_REGISTERS; i++) { expectedvalue = (int32_t)generaterandomdata32(&seedvalue); registervalue = readdata(gpio_base_address+i*4); #ifdef ENABLE_PRINT writecontrol(write_result_hex,gpio_base_address+i*4); writecontrol(display_result_hex,registervalue); #endif if (registervalue!= expectedvalue) writecontrol(sim_control,inc_fail_counter); else writecontrol(sim_control,inc_pass_counter); }

Mongoose Simulation Environment Mongoose is a control center for running RTL simulations It supports Cadence Incisive, Synopsys VCS and Mentor Graphics Questa It uses a graphical user interface to handle the simulation flow (compilation, elaboration and simulation) The whole setup can easily be scripted Includes full support for C program compilation and load module generation Waveform data from all nodes in the RTL design can easily be generated Can also be used for regression testing

Mongoose startup window

Mongoose Processor Program Compilation www.tobii.com

Processor Platforms Supported Xtensa LX5 (Tensilica) OpenRISC 1200 (OpenCores) MicroBlaze (Xilinx) Nios II (Altera)

Conclusion By extending C programs with special test macros a complete hardware verification test suite can be built By adding a print macro full test reports can be generated External test generators and test recorders can be controlled from the C-program Pseudo-random data generation is fully supported It is a perfect debugging environment Incremental setup C program based test setup can not fully replace a SystemVerilog test bench but it is a very good complement It gives us a jump start. It is ready to run long before the SystemVerilog test bench is ready. Simplicity

More Reading and Watching ChipotleTestLanuage.pdf http://www.youtube.com/watch?v=vdg9gkmwsea&feature=youtu.be http://www.zoocad.com/docs/zoodesignplatform.pdf