I Didn t Know Constraints Could Do That!
|
|
- Wesley Hoover
- 5 years ago
- Views:
Transcription
1 I Didn t Know Constraints Could Do That! John Dickol Samsung Austin R&D Center 6 February 2018 DVClub Europe DVClub Europe 6 Feb
2 Agenda Introduction SystemVerilog Constraint Techniques Constraint Examples DVClub Europe 6 Feb
3 Introduction SystemVerilog constraint solvers continue to improve Solvers can handle more complex constraint problems Why use complex constraints? Use constraints to define legal stimulus Add constraints to steer stimulus Complex stimulus needs complex constraints DVClub Europe 6 Feb
4 Constraint Techniques DVClub Europe 6 Feb
5 Constraint Basics SystemVerilog constraints are declarative, not procedural. Describe what you want - Solver will figure out how Constraints specify expressions which must be true Can be any SV expression using variables & constants of integral type Constraint solver chooses values for random variables to ensure all constraints are satisfied All constraints solved simultaneously (usually some exceptions) Full specification in SystemVerilog Language Reference Latest version: IEEE Std Download free copy from IEEE Get Program: DVClub Europe 6 Feb
6 Constraint Expressions Simple Complex 1; 0; x == 1; x inside {[0:10]; x < y; (x + y) == z; if(a>b) c<d; if(x==y) { 0; foreach(n_txns_per_slave[s]) { n_txns_per_slave[s] == txn_map.sum with( (item.index(2) == s)? item : 0); ); map.ranges.or(r) with ( item.addr inside {[r.start_addr : (r.end_addr - item.size)] && item.cache_type == r.cache_type ); DVClub Europe 6 Feb
7 Soft Constraints Are applied only if not contradicted by other constraints with higher priority In general, last constraint specified has higher priority See SV LRM for complete list of priorities Good for specifying default values for UVM sequence/sequence_item which can be overridden in higher-level sequence DVClub Europe 6 Feb
8 Soft Constraint Example class myseq extends uvm_sequence#(mytxn); rand int count // number of transactions Default constraint for count Soft constraint may be overridden constraint c_count { soft count inside {[10:20]; task body; mytxn txn; repeat(count) begin `uvm_do(txn) end endtask endclass class topseq extends uvm_sequence#(mytxn); task body; myseq seq; `uvm_do(seq) `uvm_do_with(seq, {count == 1000; endtask endclass Default soft constraint applies Inline hard constraint overrides soft constraint DVClub Europe 6 Feb
9 Unique Constraints Constrain set of variables to have unique values: Scalar integral values Unpacked arrays of integral values rand int x, y, z; rand int arr[10]; int q[$] = {1, 2, 7, 11; constraint c_unique { unique {x, y, z; unique {arr; unique {x, y, arr; unique {x, y, q; Equivalent to: x!=y; y!=z; z!=x; Fill arr with unique values Can mix scalars and arrays Pick x & y not equal to elements of non-rand queue DVClub Europe 6 Feb
10 Array Iterative Constraints foreach constraint applies to each element of array Array size can be constrained LRM requirement: array size solved before iterative constraints rand int arr[10]; rand int q[$]; constraint c_foreach { foreach(arr[i]) arr[i] inside {[0:15]; q.size() inside {[5:10]; Constrain each array element Constrain queue size foreach(q[i]) { if(i>0) q[i] > q[i-1]; Create sorted queue: q[0] < q[1], q[2] Constraint guard avoids index out of bounds error DVClub Europe 6 Feb
11 Array Reduction Constraints Operate on unpacked arrays of integral values Apply specified operation between each element of the array rand int a[10]; a.sum == a[0] + a[1] + a.product == a[0] * a[1] * a.and == a[0] & a[1] & a.or == a[0] a[1] a.xor == a[0] ^ a[1] ^ Methods return single value of the same type as array element i.e sum of int returns int. xor of bit returns bit, etc. Optional with expression applied to each element before reduction operation Inside with expression: item refers to current array element item.index refers to current array index DVClub Europe 6 Feb
12 Array Reduction Constraint Examples Constrain number of 1s in array of bits: rand bit bq[$]; constraint c_sum { bq.size inside {[10:20]; (bq.sum with (int (item))) == 7; Constrain sum of first 3 elements of array: sum() of bit is single bit Cast to int to avoid overflow sum with( ) equivalent to: foreach(a[i]) if(i<3) sum+= a[i] rand int a[10]; constraint c_sum_first_3 { (a.sum with ((item.index < 3)? item : 0)) == 10; item.index equivalent to i item equivalent to a[i] DVClub Europe 6 Feb
13 Global (Hierarchical) Constraints Class with rand variables may be rand member of another class When top-level object is randomized, all rand class members are also randomized Top-level object may constrain lower-level object variables DVClub Europe 6 Feb
14 Global Constraint Example: Line Drawing Rand instances of XY point class class XY; rand int x; rand int y; constraint c_valid { x inside {[0:100]; y inside {[0:100]; endclass class Line; rand XY pt1; rand XY pt2; rand enum {HORIZONTAL, VERTICAL direction; function new; if(pt1==null) pt1 = new; if(pt2==null) pt2 = new; endfunction constraint c_valid { if(direction == VERTICAL) { pt1.x == pt2.x; pt1.y!= pt2.y; Top-level object constrains lower-level if(direction == HORIZONTAL) { pt1.y == pt2.y; pt1.x!= pt2.x; endclass DVClub Europe 6 Feb
15 Reusing Constraints: Policy Classes Problem: Define constraints once and reuse in multiple objects Add additional constraints to object at runtime Implementation: Variation of hierarchical constraints: Lower-level object constrains parent object Define reusable constraints in policy class container Policy classes extended from common base class item variable in policy class refers to parent object Parent object has rand queue of policy base class More info in DVCon 2015 paper: SystemVerilog Constraint Layering via Reusable Randomization Policy Classes DVClub Europe 6 Feb
16 Policy Class Example class rand_policy_base #(type T=uvm_object); T item; virtual function void set_item(t item); this.item = item; endfunction endclass item refers to parent Line object Rand queue of policy base class class line_direction_policy extends rand_policy_base#(line); constraint c_direction { item.direction dist { Line::VERT := 5, Line::HORIZ := 1 ; endclass class Line; rand enum {HORIZ, VERT direction; rand rand_policy_base#(line) pcy[$]; function void pre_randomize; foreach(pcy[i]) pcy[i].set_item(this); endfunction... endclass Test case Line l = new; line_direction_policy dir_pcy = new; l.pcy = {dir_pcy; l.randomize; Set item in policy objects to point to this Line instance Add policy to queue DVClub Europe 6 Feb
17 Example 1: Bus Interconnect Testbench DVClub Europe 6 Feb
18 Bus Interconnect Testbench Master Agent Master Agent Tests may want to control: Total number of transactions for all masters Number of transactions per master Bus Interconnect DUT Number of transactions per slave Number of transactions from one master to a particular slave Slave Agent Slave Agent Use/avoid using certain masters or slaves Etc. DVClub Europe 6 Feb
19 Bus Interconnect Configuration Constraints Use 2-D array to model number of transactions rand int unsigned txn_map[n_master][n_slave]; Add rand variables and constraints for provide knobs controllable by test S0 S1 S2 S3 S4 S5 Total txns per master Sum rows to get txns per master M Sum columns to get txns per slave M M M M Sum entire array to get total txns Total Txns per slave Total txns 1151 DVClub Europe 6 Feb
20 Constrain Total Number of Transactions class ms_config#(n_master=5, N_SLAVE=6); rand int unsigned txn_map[n_master][n_slave]; rand int unsigned total_txns; sum with( )is equivalent to: foreach(txn_map[m,s]) sum += txn_map[m][s]; constraint c_valid { total_txns == txn_map.sum; endclass DVClub Europe 6 Feb
21 Constrain Transactions Per Master class ms_config#(n_master=5, N_SLAVE=6); rand int unsigned txn_map[n_master][n_slave]; rand int unsigned n_txns_per_master[n_master]; Sum each row of txn_map array constraint c_valid { foreach(n_txns_per_master[m]) { n_txns_per_master[m] == txn_map[m].sum; endclass DVClub Europe 6 Feb
22 Constrain Transactions Per Slave class ms_config#(n_master=5, N_SLAVE=6);... rand int unsigned n_txns_per_slave[n_slave]; sum with( ) is equivalent to: foreach(txn_map[m,s]) if(s == s) sum += txn_map[m][s]; else sum += 0; constraint c_valid { foreach(n_txns_per_slave[s]) { n_txns_per_slave[s] == txn_map.sum with( (item.index(2) == s)? item : 0); ); endclass item.index(2) returns Index for 2 nd array dimension; DVClub Europe 6 Feb
23 Constrain Individual Masters/Slaves class ms_config#(n_master=5, N_SLAVE=6);... rand bit use_master[n_master]; rand bit use_slave[n_master]; rand int unsigned use_n_masters; rand int unsigned use_n_slaves; constraint c_valid { foreach(use_master[m]) { (use_master[m] == 1) == (n_txns_per_master[m] > 0); use_n_masters == use_master.sum with (int'(item)); Master is used if it has at least 1 transaction Count number of used masters foreach(use_slave[s]) { (use_slave[s] == 1) == (n_txns_per_slave[s] > 0); use_n_slaves == use_slave.sum with (int'(item)) endclass DVClub Europe 6 Feb
24 Test Scenario Constraints ms_config cfg = new; cfg.randomize with { total_txns == 10000; use_n_masters inside {[2:4]; use_master[1] == 1; use_slave[3] == 0; Generate a total of transactions Use between 2 and 4 masters Use Master 1 Don t use Slave 3 DVClub Europe 6 Feb
25 Command Line Control of Constraints function void ms_config::get_plusargs; if($value$plusargs("total_txns=%d", total_txns)) total_txns.rand_mode(0); if($value$plusargs("use_n_masters=%d", use_n_masters)) use_n_masters.rand_mode(0); foreach(use_master[m]) begin string format = $sformatf("use_master[%0d]=%%b", m); if($value$plusargs(format, use_master[m])) use_master[m].rand_mode(0); end... endfunction If plusarg specified on command line, disable randomization for corresponding variable Compute plusarg names for individual array elements Test case configuration ms_config cfg = new; cfg.get_plusargs; cfg.randomize; Simulator command line {irun simv vsim +total_txns= use_n_masters=3 +use_master[1]=1... DVClub Europe 6 Feb
26 Example 2: Memory Map Generation See Appendix DVClub Europe 6 Feb
27 Summary Constraint techniques: Soft constraints Unique constraints Array constraints (foreach, size) Array reduction constraints (sum, and, ) Reusable constraints: policy classes Constraint solver can handle complex problems use it! DVClub Europe 6 Feb
28 Thank You DVClub Europe 6 Feb
29 Appendix DVClub Europe 6 Feb
30 Example 2: Memory Map Generation DVClub Europe 6 Feb
31 Memory Map Generation Memory Management Unit Features: 32-bit address 3 address range (page) sizes: 1KB, 4KB, 1MB Range starting address aligned to range size Range can be Non-cacheable, Write-through cacheable, write-back cacheable Problem: Generate interesting sets of non-overlapping memory ranges Select memory transactions from mapped ranges DVClub Europe 6 Feb
32 Memory Map Generation Implementation: mem_range class describes single range mem_map class has rand array of mem_range (plus constraints) mem_range array fixed maximum size; randomize number of valid ranges (workaround for solve size before foreach limitation) Configurable constraint policy classes select number & types of ranges map range[0] range[1] range[2] range[3] range[n-1] range[n] valid size cache... valid size cache... valid size cache... valid size cache invalid size cache... invalid size cache... DVClub Europe 6 Feb
33 Memory Range Class typedef bit [31:0] addr_t; typedef enum addr_t { SIZE_1K='h400, SIZE_4K='h1000, SIZE_1M='h size_t; typedef enum { NONCACHEABLE, WT_CACHEABLE, WB_CACHEABLE cache_t; This range is valid (will be constrained) class mem_range; rand bit rand size_t rand addr_t rand addr_t rand cache_t valid; size; start_addr; end_addr; cache_type; constraint c_valid { size == (1 + end_addr - start_addr); (start_addr & (size - 1)) == 0; endclass Ensure size, start, end are in sync Size-align start address DVClub Europe 6 Feb
34 Memory Map Class class mem_map; int max_ranges = 10; rand int num_ranges; rand mem_range ranges[]; rand rand_policy_base#(mem_map) pcy[$]; function new(int max_ranges); this.max_ranges = max_ranges; endfunction function void pre_randomize; ranges = new[max_ranges]; foreach (ranges[i]) ranges[i] = new(); foreach(pcy[i]) pcy[i].set_item(this); endfunction... Rand array of mem_ranges Ensure all mem_range instances are constructed before randomizing DVClub Europe 6 Feb
35 Memory Map Class class mem_map; int max_ranges = 10; rand int num_ranges; rand mem_range ranges[]; rand rand_policy_base#(mem_map) pcy[$]; Non-overlapping valid ranges sorted by address function new(int max_ranges); this.max_ranges = max_ranges; endfunction function void pre_randomize; ranges = new[max_ranges]; foreach (ranges[i]) ranges[i] = new(); foreach(pcy[i]) pcy[i].set_item(this); endfunction... Ensure first num_ranges entries are valid, remainder invalid... constraint c_valid { foreach(ranges[i]) if(i>0) { if(ranges[i].valid) ranges[i].start_addr > ranges[i-1].end_addr; num_ranges inside {[1:max_ranges]; foreach(ranges[i]) { ranges[i].valid == ((i < num_ranges)? 1 : 0); endclass DVClub Europe 6 Feb
36 Memory Range Allocation Policies Allocate between min and max pages of specified size class page_count_policy extends rand_policy_base#(mem_map); addr_t size; int min; // minimum number of pages of given size int max; // maximum number of pages of given size Constrain number of valid pages of desired size constraint c_count { item.ranges.sum(r) with (int'(r.valid && (r.size == size))) inside {[min:max]; function new(addr_t size, int min, int max=min); this.size = size; this.min = min; this.max = max; endfunction endclass DVClub Europe 6 Feb
37 Memory Range Allocation Policies Allocate between min and max bytes of a specified cache type class cache_size_policy extends rand_policy_base#(mem_map); cache_t cache_type; addr_t min; addr_t max; constraint c_cache { item.ranges.sum(r) with ( (r.valid && (r.cache_type == cache_type))? r.size : 0 ) inside {[min:max]; Constrain number of valid pages of desired cache type function new(cache_t cache_type, addr_t min, addr_t max='1); this.cache_type = cache_type; this.min = min; this.max = max; endfunction endclass DVClub Europe 6 Feb
38 Configuring the Memory Map // Allocate memory map with: // Any number of 1K pages // At most 2 4KB pages // No 1MB pages // At least 4KB of non-cacheable memory // At least 8KB of write-back cacheable memory // No write-though cacheable memory Construct policies with desired characteristics mem_map map = new; page_count_policy count_4k_pcy = new(size_4k, 0, 2); page_count_policy count_1m_pcy = new(size_1m, 0); Add policies to map cache_size_policy NC_pcy = new(noncacheable, SIZE_4K); cache_size_policy WB_pcy = new(wb_cacheable, 2*SIZE_4K); cache_size_policy WT_pcy = new(wt_cacheable, 0,0); map.pcy = { NC_pcy, WB_pcy, WT_pcy, count_4k_pcy, count_1m_pcy; map.randomize; DVClub Europe 6 Feb
39 Using the Memory Map Problem: Generate Memory Transactions Using Memory Map Transactions may be 1, 2 or 4 bytes. All bytes of a transaction must be within a single memory range Transaction addresses must be size-aligned Transaction s cache type must match its memory range cache type Implementation Use policy class to inject memory map constraints into memory transaction DVClub Europe 6 Feb
40 Memory Transaction class mem_txn; rand addr_t addr; rand addr_t size; rand cache_t cache_type; rand rand_policy_base#(mem_txn) pcy[$]; Constrain sizes and alignment constraint c_size { size inside {1, 2, 4; constraint c_align { (addr & (size-1)) == 0; function void pre_randomize; foreach(pcy[i]) pcy[i].set_item(this); endfunction endclass DVClub Europe 6 Feb
41 Transaction Selection Policy class mem_txn; rand addr_t addr; rand addr_t size; rand cache_t cache_type; rand rand_policy_base#(mem_txn) pcy[$]; class txn_pick_policy extends rand_policy_base#(mem_txn); constraint c_size mem_map { size map; inside {1, 2, 4; constraint c_align { (addr & (size-1)) == 0; function new(mem_map map); function void pre_randomize; this.map = map; foreach(pcy[i]) endfunction pcy[i].set_item(this); endfunction endclass constraint c_pick { map.ranges.or(r) with ( item.addr inside {[r.start_addr : (r.end_addr - item.size)] && item.cache_type == r.cache_type ); endclass Use the policy when randomizing txn txn_pick_policy pick_pcy = new(mem_map); mem_txn txn = new; txn.pcy = {pick_pcy; txn.randomize; Non-rand mem_map used as state variable Use OR-reduction to constrain txn to fit within range with same cache type DVClub Europe 6 Feb
The Top Most Common SystemVerilog Constrained Random Gotchas
The Top Most Common SystemVerilog Constrained Random Gotchas Author: Ahmed Yehia Presenter: Gabriel Chidolue Accellera Systems Initiative 1 Motivation More time is taken in debug than any other project
More informationThe Top Most Common SystemVerilog Constrained Random Gotchas
The Top Most Common SystemVerilog Constrained Random Gotchas Ahmed Yehia, Mentor Graphics Corp., Cairo, Egypt, ahmed_yehia@mentor.com Abstract The Constrained Random (CR) portion in any verification environment
More informationUse the Sequence, Luke
Use the Sequence, Luke Guidelines to Reach the Full Potential of UVM Sequences Jeff Vance, Jeff Montesano, Mark Litterick Verilab October 23, 2018 Austin SNUG 2018 1 Agenda Introduction Sequence API Strategy
More informationSet a longer list of transaction attributes as per protocol legality Perform the cache data/state update at end of transaction, as needed
Cache Coherent Interface Verification IP How a Cache Controller and Generic APIs Can Make It Easier to Generate Stimulus. by Amit Kumar Jain, Questa VIP Product Team, Mentor Graphics ABSTRACT In a multi-processor
More informationVerification Prowess with the UVM Harness
Verification Prowess with the UVM Harness Interface Techniques for Advanced Verification Strategies Jeff Vance, Jeff Montesano Verilab Inc. October 19, 2017 Austin SNUG 2017 1 Agenda Introduction UVM Harness
More informationConfiguring a Date with a Model
Configuring a Date with a Model A Guide to Configuration Objects and Register Models Jeff Montesano, Jeff Vance Verilab, Inc. copyright (c) 2016 Verilab & SNUG September 29, 2016 SNUG Austin SNUG 2016
More informationUser Experience with UVM
User Experience with UVM Stephen D Onofrio & Peter D Antonio Stacking Verification Components in UVM 2012 The MITRE Corporation. All Rights Reserved. Approved for Public Release: 12-0309 Distribution Unlimited
More informationList of Code Samples. xiii
xiii List of Code Samples Sample 1-1 Driving the APB pins 16 Sample 1-2 A task to drive the APB pins 17 Sample 1-3 Low-level Verilog test 17 Sample 1-4 Basic transactor code 21 Sample 2-1 Using the logic
More informationInterconnect Shared Cache
2016 17th International Workshop on Microprocessor and SOC Test and Verification : A Flexible and Simulation Cost-Effective UVC for Testing Shared Caches Saddam Jamil Quirem Samsung Austin R&D Center Austin,
More informationMy Testbench Used to Break! Now it Bends: Adapting to Changing Design Configurations
My Testbench Used to Break! Now it Bs: Adapting to Changing Design Configurations Jeff Vance, Jeff Montesano, Kevin Vasconcellos, Kevin Johnston Verilab Inc. 609 Castle Ridge Road Suite 210, Austin, TX
More informationCreating Stimulus and Stimulating Creativity:
Creating Stimulus and Stimulating Creativity: Using the VMM Scenario Generator Jonathan Bromley Doulos Ltd, Ringwood, UK jonathan.bromley@doulos.com 2 Outline Introduction: motivation for scenarios The
More informationPractical Experience in Automatic Functional Coverage Convergence and Reusable Collection Infrastructure in UVM
Practical Experience in Automatic Functional Coverage Convergence and Reusable Collection Infrastructure in UVM Roman Wang roman.wang@amd.com Suresh Babu & Mike Bartley sureshbabu.p@testandverification.com
More informationSelf- Tuning Coverage
Self- Tuning Coverage Jonathan Bromley 1 Overview Coverage reuse needs flexibility, configurability SELF TUNING in response to configuration, parameters etc Coverage can mislead! SV covergroups are not
More informationModeling Usable & Reusable Transactors in SystemVerilog Janick Bergeron, Scientist
Modeling Usable & Reusable Transactors in SystemVerilog Janick Bergeron, Scientist Verification Group, Synopsys Inc janick@synopsys.com Transactors Definition Building blocks of verification environments
More informationVerification Prowess with the UVM Harness
Interface Techniques for Advanced Verification Strategies Jeff Vance, Jeff Montesano, Kevin Johnston Verilab Inc. Austin, Texas www.verilab.com ABSTRACT In this paper we show how to create a UVM testbench
More informationTitle: Using Test-IP Based Verification Techniques in a UVM Environment
Title: Using Test-IP Based Verification Techniques in a UVM Environment Vidya Bellippady Sundar Haran Jay O Donnell Microsemi Corporation Microsemi Corporation Mentor Graphics San Jose, CA Hyderabad, India
More informationEasier UVM Functional Verification for Mainstream Designers
Easier UVM Functional Verification for Mainstream Designers John Aynsley, Doulos 1 Easier UVM Functional Verification for Mainstream Designers Introducing UVM Transactions and Components Sequencers and
More informationDesignCon Modeling Data and Transactions in SystemVerilog. Janick Bergeron, Synopsys
DesignCon 2005 Modeling Data and Transactions in SystemVerilog Janick Bergeron, Synopsys janick@synopsys.com Abstract This paper describes how to properly use the object-oriented features of SystemVerilog
More informationConstrained Random Data Generation Using SystemVerilog
Constrained Random Data Generation Using SystemVerilog Tim Pylant, Cadence Design Systems, Inc. 1 Ideal Stimulus Generation Need a way to generate stimulus without long, manual process Data should be random
More informationHiding the Guts by Ray Salemi, Senior Verification Consultant, Mentor Graphics
Hiding the Guts by Ray Salemi, Senior Verification Consultant, Mentor Graphics We verification test bench designers are happy sausage makers, merrily turning out complex and powerful verification environments.
More informationYet Another Memory Manager (YAMM)
by Ionut Tolea, Andrei Vintila AMIQ Consulting SRL Bucharest, Romania http://www.amiq.com/consulting ABSTRACT This paper presents an implementation of a memory manager (MM) verification component suitable
More informationSVA in a UVM Class-based Environment by Ben Cohen, author, consultant, and trainer
SVA in a UVM Class-based Environment by Ben Cohen, author, consultant, and trainer INTRODUCTION Verification can be defined as the check that the design meets the requirements. How can this be achieved?
More informationGraph-Based Verification in a UVM Environment
Graph-Based Verification in a UVM Environment Staffan Berg European Applications Engineer July 2012 Graph-Based Intelligent Testbench Automation (itba) Welcome DVClub Attendees Organizers Presenters Verification
More informationGetting Started with OVM 2.0
A Series of Tutorials based on a set of Simple, Complete Examples Introduction In this tutorial, the emphasis is on getting a simple example working rather than on understanding the broad flow of the constrained
More information3) Cache, money. Dollar bills, y all. (24 min, 15 pts)
Login: cs61c- Answers 3) Cache, money. Dollar bills, y all. (24 min, 15 pts) Suppose we have a standard 32-bit byte-addressed MIPS machine, a single direct-mapped 32KiB cache, a write-through policy, and
More informationResponding to TAT Improvement Challenge through Testbench Configurability and Re-use
Responding to TAT Improvement Challenge through Testbench Configurability and Re-use Akhila M, Kartik Jain, Renuka Devi, Mukesh Bhartiya Accellera Systems Initiative 1 Motivation Agenda Generic AMBA based
More informationThis paper was presented at DVCon-Europe in November It received the conference Best Paper award based on audience voting.
This paper was presented at DVCon-Europe in November 2015. It received the conference Best Paper award based on audience voting. It is a very slightly updated version of a paper that was presented at SNUG
More informationGetting Started with UVM. Agenda
Getting Started with UVM Vanessa Cooper Verification Consultant 1 Agenda Testbench Architecture Using the Configuration Database Connecting the Scoreboard Register Model: UVM Reg Predictor Register Model:
More informationStacking UVCs Methodology. Revision 1.2
Methodology Revision 1.2 Table of Contents 1 Stacking UVCs Overview... 3 2 References... 3 3 Terms, Definitions, and Abbreviations... 3 4 Stacking UVCs Motivation... 4 5 What is a Stacked UVC... 6 5.1
More informationOVERVIEW: ============================================================ REPLACE
OVERVIEW: With mantis 928, formal arguments to properties and sequences are defined to apply to a list of arguments that follow, much like tasks and function arguments. Previously, the type had to be replicated
More informationSlicing Through the UVM's Red Tape A Frustrated User's Survival Guide
Slicing Through the UVM's Red Tape A Frustrated User's Survival Guide Jonathan Bromley Accellera Systems Initiative 1 UVM!= Straitjacket Doesn't cover everything Some key common requirements unsatisfied
More informationPractical experience in automatic functional coverage convergence and reusable collection infrastructure in UVM verification
Practical experience in automatic functional coverage convergence and reusable collection infrastructure in UVM verification Roman Wang, +8613482890029, Advanced Micro Devices, Inc., Shanghai, China (roman.wang@amd.com)
More information5 Developing Acceleratable Universal Verification Components (UVCs)
5 Developing Acceleratable Universal Verification Components (UVCs) This chapter discusses the following topics: Introduction to UVM Acceleration UVC Architecture UVM Acceleration Package Interfaces SCE-MI
More informationEasy migration between frameworks using UVM Multi- Language (UVM-ML) Dr. Mike Bartley, Test and Verification Solutions
Easy migration between frameworks using UVM Multi- Language (UVM-ML) Dr. Mike Bartley, Test and Verification Solutions Agenda The need for UVM-ML UVM-ML : A background TVS Test Environment UVM-ML Use Cases
More informationCSE 591: Advanced Hardware Design Professor: Kyle Gilsdorf
CSE 591: Advanced Hardware Design Professor: Kyle Gilsdorf (Kyle.Gilsdorf@asu.edu) What: System Verilog Verification Environment for Lab #2 Table of Contents 1. Overview 2 1. Verification 3 2. Feature
More informationFebruary 24-26, 2009
Divide and conquer: February 24-26, 2009 Techniques for creating a highly reusable stimulus generation process Ning Guo Paradigm Works Outline Introduction Stimulus Representation Stimulus Generation Implementation
More informationSeven Separate Sequence Styles Speed Stimulus Scenarios
Seven Separate Sequence Styles Speed Stimulus Scenarios Mark Peryer Mentor Graphics (UK) Ltd Rivergate, London Road, Newbury, Berkshire, RG14 2QB., UK mark_peryer@mentor.com Abstract Writing effective
More informationOptimizing Session Caches in PowerCenter
Optimizing Session Caches in PowerCenter 1993-2015 Informatica Corporation. No part of this document may be reproduced or transmitted in any form, by any means (electronic, photocopying, recording or otherwise)
More informationpackage uvm_svid_monitor_package; import uvm_pkg::*; // //svid_transmit_packet_configuration
`include "uvm_macros.svh" package uvm_svid_monitor_package; import uvm_pkg::*; //---------------------------------------------------------- //svid_transmit_packet_configuration //----------------------------------------------------------
More informationList of Examples List of Figures List of Tables. Acknowledgments 1. VERIFICATION GUIDELINES 1
Contents List of Examples List of Figures List of Tables Preface Acknowledgments xiii xxvii xxix xxxi xxxvii 1. VERIFICATION GUIDELINES 1 1.1 The Verification Process 2 1.2 The Verification Methodology
More informationGraph-Based IP Verification in an ARM SoC Environment by Andreas Meyer, Verification Technologist, Mentor Graphics Corporation
Graph-Based IP Verification in an ARM SoC Environment by Andreas Meyer, Verification Technologist, Mentor Graphics Corporation The use of graph-based verification methods for block designs has been shown
More informationVertical Reuse of functional verification from subsystem to SoC level (with seamless SoC emulation)
Vertical Reuse of functional verification from subsystem to SoC level (with seamless SoC emulation) Pranav Kumar, Staff Engineer Digvijaya Pratap SINGH, Sr. Staff Engineer STMicroelectronics, Greater NOIDA,
More informationNon-numeric types, boolean types, arithmetic. operators. Comp Sci 1570 Introduction to C++ Non-numeric types. const. Reserved words.
, ean, arithmetic s s on acters Comp Sci 1570 Introduction to C++ Outline s s on acters 1 2 3 4 s s on acters Outline s s on acters 1 2 3 4 s s on acters ASCII s s on acters ASCII s s on acters Type: acter
More informationSystemVerilog 3.1: It s What The DAVEs In Your Company Asked For
February 24-26, 2003 SystemVerilog 3.1: It s What The DAVEs In Your Company Asked For Stuart HDL, Inc. www.sutherland-hdl.com 2/27/2003 1 This presentation will Define what is SystemVerilog Provide an
More informationBeyond UVM Registers Better, Faster, Smarter
Beyond UVM Registers Better, Faster, Smarter Rich Edelman, Bhushan Safi Mentor Graphics, US, India Accellera Systems Initiative 1 What are UVM Registers good for? Standard Runs on all the simulators High
More informationNo RTL Yet? No Problem UVM Testing a SystemVerilog Fabric Model
No RTL Yet? No Problem UVM Testing a SystemVerilog Fabric Model Rich Edelman Mentor Graphics, Fremont, CA rich_edelman@mentor.com 510-354-7436 Abstract-SystemVerilog is a powerful language which can be
More informationNoC Generic Scoreboard VIP by François Cerisier and Mathieu Maisonneuve, Test and Verification Solutions
NoC Generic Scoreboard VIP by François Cerisier and Mathieu Maisonneuve, Test and Verification Solutions Abstract The increase of SoC complexity with more cores, IPs and other subsystems has led SoC architects
More informationBoost Verification Results by Bridging the Hardware/Software Testbench Gap
Boost Verification Results by Bridging the Hardware/Software Testbench Gap Matthew Ballance Mentor Graphics Corporation Design Verification Technology Division Wilsonville, Oregon matt_ballance@mentor.com
More informationModule- or Class-Based URM? A Pragmatic Guide to Creating Verification Environments in SystemVerilog. Paradigm Works, Inc. Dr.
Module- or Class-Based URM? A Pragmatic Guide to Creating Verification Environments in SystemVerilog Paradigm Works, Inc. Dr. Ambar Sarkar Session # 2.15 Presented at Module- or Class-Based URM? A Pragmatic
More informationINF5430. SystemVerilog for Verification. Chapter Randomization
INF5430 SystemVerilog for Verification Chapter 6.1-12 Randomization Chapter 6: Randomization Directed testing: Checks only anticipated bugs Scales poorly as requirements change Little upfront work Linear
More informationHDL Introduction and Reuse
Verilog HDL Introduction and Reuse P. Bakowski bako@ieee.org Verilog HDL Verilog IEEE 13641 1995 95 P. Bakowski 2 Verilog HDL Verilog IEEE 13641 Verilog AMS 1995 95 1998 P. Bakowski 3 Verilog HDL Verilog
More informationTest Scenarios and Coverage
Test Scenarios and Coverage Testing & Verification Dept. of Computer Science & Engg,, IIT Kharagpur Pallab Dasgupta Professor, Dept. of Computer Science & Engg., Professor-in in-charge, AVLSI Design Lab,
More informationFast Track to Productivity Using Questa Verification IP by David Aerne and Ankur Jain, Verification Technologists, Mentor Graphics
Fast Track to Productivity Using Questa Verification IP by David Aerne and Ankur Jain, Verification Technologists, Mentor Graphics ABSTRACT The challenges inherent in verifying today s complex designs
More informationUVM Tips & Tricks. By: Shankar Arora. Logic Fruit Technologies. White Paper
Logic Fruit Technologies White Paper 806, 8th Floor BPTP Park Centra, Sector 30, Gurgaon. Pin: 122001 T: +91-124-4117336 W: http://www.logic-fruit.com UVM Tips & Tricks By: Shankar Arora UVM is the most
More informationSlaying the UVM Reuse Dragon Issues and Strategies for Achieving UVM Reuse
Slaying the UVM Reuse Dragon Issues and Strategies for Achieving UVM Reuse Mike Baird WHDL Willamette, OR mike@whdl.com Bob Oden UVM Field Specialist Mentor Graphics Raleigh, NC bob_oden@mentor.com Abstract
More informationWarmup January 9th, What is the value of the following C expression? 8*9 % 10/ 2
Warmup January 9th, 2018 What is the value of the following C expression? 8*9 % 10/ 2 Warmup January 11th, 2018 What is the value of the following C expression? ( -42 3!= 3) && ( -3 < -2 < -1) Warmup January
More informationWhat, If Anything, In SystemVerilog Will Help Me With FPGA-based Design. Stuart Sutherland, Consultant and Trainer, Sutherland HDL, Inc.
What, If Anything, In SystemVerilog Will Help Me With FPGA-based Design Stuart Sutherland, Consultant and Trainer, Sutherland HDL, Inc. About the Presenter... Stuart Sutherland, SystemVerilog wizard Independent
More informationSunburst Design - SystemVerilog UVM Verification Training by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc.
World Class SystemVerilog & UVM Training Sunburst Design - SystemVerilog UVM Verification Training by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc. Cliff Cummings is
More informationEasy Steps Towards Virtual Prototyping using the SystemVerilog DPI
Easy Steps Towards Virtual Prototyping using the SystemVerilog DPI Dave Rich Mentor Graphics, Inc. Fremont, CA dave_rich@mentor.com Abstract The hardware and software worlds have been drifting apart ever
More informationPerplexing Parameter Permutation Problems? Immunize Your Testbench
Immunize Your Testbench Alex Melikian Paul Marriott Verilab Montreal, Quebec, Canada verilab.com @verilab ABSTRACT RTL parameters are used frequently in designs, especially IPs, in order to increase flexibility
More informationSystem Verilog Tagged Unions and Pattern Matching
System Verilog Tagged Unions and Pattern Matching (An extension to System Verilog 3.1 proposed to Accellera) Bluespec, Inc. Contact: Rishiyur S. Nikhil, CTO, Bluespec, Inc. 200 West Street, 4th Flr., Waltham,
More informationA short introduction to SystemVerilog. For those who know VHDL We aim for synthesis
A short introduction to SystemVerilog For those who know VHDL We aim for synthesis 1 Verilog & SystemVerilog 1984 Verilog invented, C-like syntax First standard Verilog 95 Extra features Verilog 2001 A
More informationKampala August, Agner Fog
Advanced microprocessor optimization Kampala August, 2007 Agner Fog www.agner.org Agenda Intel and AMD microprocessors Out Of Order execution Branch prediction Platform, 32 or 64 bits Choice of compiler
More informationA New Class Of Registers
A New Class Of s M. Peryer Mentor Graphics (UK) Ltd., Rivergate, London Road, Newbury, Berkshire, RG14 2QB, United Kingdom D. Aerne Mentor Graphics Corp., 8005 SW Boeckman Road, Wilsonville, OR USA 97070-7777
More informationDevelopment of UVM based Reusabe Verification Environment for SHA-3 Cryptographic Core
Development of UVM based Reusabe Verification Environment for SHA-3 Cryptographic Core M. N. Kubavat Dept. of VLSI & Embedded Systems Design, GTU PG School Gujarat Technological University Ahmedabad, India
More informationFinal Exam. Name: Student ID: Section: Signature:
Final Exam PIC 10B, Spring 2016 Name: Student ID: Section: Discussion 3A (2:00 2:50 with Kelly) Discussion 3B (3:00 3:50 with Andre) I attest that the work presented in this exam is my own. I have not
More informationChapter 2. Procedural Programming
Chapter 2 Procedural Programming 2: Preview Basic concepts that are similar in both Java and C++, including: standard data types control structures I/O functions Dynamic memory management, and some basic
More informationOpen Verification Methodology (OVM)
Open Verification Methodology (OVM) Built on the success of the Advanced Verification Methodology (AVM) from Mentor Graphics and the Universal Reuse Methodology (URM) from Cadence, the OVM brings the combined
More informationC# Fundamentals. Hans-Wolfgang Loidl School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh
C# Fundamentals Hans-Wolfgang Loidl School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh Semester 1 2018/19 H-W. Loidl (Heriot-Watt Univ) F20SC/F21SC 2018/19
More informationA User s Experience with SystemVerilog
A User s Experience with SystemVerilog and Doulos Ltd Ringwood, U.K. BH24 1AW jonathan.bromley@doulos.com michael.smith@doulos.com 2 Objectives Practical use of SystemVerilog Synopsys tools (VCS, Design
More informationC++ For Science and Engineering Lecture 15
C++ For Science and Engineering Lecture 15 John Chrispell Tulane University Wednesday September 29, 2010 Function Review Recall the basics you already know about functions. Provide a function definition.
More information166 SystemVerilog Assertions Handbook, 4th Edition
166 SystemVerilog Assertions Handbook, 4th Edition example, suppose that a cache controller performs behavior A when there is a cache hit (e.g., fetch data from the cache), or performs behavior B when
More informationThe Verification Future needs an Easier UVM
Verification Futures The Verification Future needs an Easier UVM John Aynsley, CTO, Doulos 1 The Verification Future needs an Easier UVM Motivation Introducing Easier UVM Coding Guidelines Code Generation
More informationFinal Exam Solutions PIC 10B, Spring 2016
Final Exam Solutions PIC 10B, Spring 2016 Problem 1. (10 pts) Consider the Fraction class, whose partial declaration was given by 1 class Fraction { 2 public : 3 Fraction ( int num, int den ); 4... 5 int
More informationSunburst Design - Advanced SystemVerilog for Design & Verification by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc.
World Class Verilog & SystemVerilog Training Sunburst Design - Advanced SystemVerilog for Design & Verification by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc. Cliff
More informationThree Things You Need to Know to Use the Accellera PSS
Three Things You Need to Know to Use the Accellera PSS Sharon Rosenberg, Senior Solutions Architect, Cadence Three primary considerations for adopting the Accellera Portable Stimulus Standard (PSS) are
More informationOVM/UVM Update. Universal Verification Methodology. Open Verification Methodology. Tom Fitzpatrick Verification Technologist Mentor Graphics Corp.
Open Verification Methodology Universal Verification Methodology OVM/UVM Update Tom Fitzpatrick Verification Technologist Mentor Graphics Corp. Sharon Rosenberg Solutions Architect Cadence Design Systems
More informationSystem Verilog Tagged Unions and Pattern Matching
System Verilog Tagged Unions and Pattern Matching (An extension to System Verilog 3.1 proposed to Accellera) Bluespec, Inc. Contact: Rishiyur S. Nikhil, CTO, Bluespec, Inc. 200 West Street, 4th Flr., Waltham,
More informationSystemVerilog Essentials Simulation & Synthesis
SystemVerilog Essentials Simulation & Synthesis Course Description This course provides all necessary theoretical and practical know-how to design programmable logic devices using SystemVerilog standard
More informationCSE 306/506 Operating Systems Process Address Space. YoungMin Kwon
CSE 306/506 Operating Systems Process Address Space YoungMin Kwon Process s Address Space Memory allocation for user processes On request, a right to use a new range of linear address is given to the process
More informationSubmission instructions (read carefully): SS17 / Assignment 4 Instructor: Markus Püschel. ETH Zurich
263-2300-00: How To Write Fast Numerical Code Assignment 4: 120 points Due Date: Th, April 13th, 17:00 http://www.inf.ethz.ch/personal/markusp/teaching/263-2300-eth-spring17/course.html Questions: fastcode@lists.inf.ethz.ch
More informationStick a fork in It: Applications for SystemVerilog Dynamic Processes. Doug Smith and David Long Doulos
Stick a fork in It: Applications for SystemVerilog Dynamic Processes Doug Smith and David Long Doulos Processes Fine-grained process control Foreign code adapters Creating stimulus Summary APPLICATIONS
More informationM1-R4: Programing and Problem Solving using C (JAN 2019)
M1-R4: Programing and Problem Solving using C (JAN 2019) Max Marks: 100 M1-R4-07-18 DURATION: 03 Hrs 1. Each question below gives a multiple choice of answers. Choose the most appropriate one and enter
More informationMemory, Arrays & Pointers
1 Memory, Arrays & Pointers Memory int main() { char c; int i,j; double x; c i j x 2 Arrays Defines a block of consecutive cells int main() { int i; int a[3]; i a[0] a[1] a[2] Arrays - the [ ] operator
More informationLecture 2: Snooping and Directory Protocols. Topics: Snooping wrap-up and directory implementations
Lecture 2: Snooping and Directory Protocols Topics: Snooping wrap-up and directory implementations 1 Split Transaction Bus So far, we have assumed that a coherence operation (request, snoops, responses,
More informationIMPORTANT QUESTIONS IN C FOR THE INTERVIEW
IMPORTANT QUESTIONS IN C FOR THE INTERVIEW 1. What is a header file? Header file is a simple text file which contains prototypes of all in-built functions, predefined variables and symbolic constants.
More informationC Language Advanced Concepts. Microcomputer Architecture and Interfacing Colorado School of Mines Professor William Hoff
C Language Advanced Concepts 1 Switch Statement Syntax Example switch (expression) { } case const_expr1: statement1; case const_expr2: : statement2; default: statementn; The break statement causes control
More informationAn Evaluation of the Advantages of Moving from a VHDL to a UVM Testbench by Shaela Rahman, Baker Hughes
An Evaluation of the Advantages of Moving from a VHDL to a UVM Testbench by Shaela Rahman, Baker Hughes FPGA designs are becoming too large to verify by visually checking waveforms, as the functionality
More informationSimulation-Based FlexRay TM Conformance Testing - An OVM Success Story
Simulation-Based FlexRay TM Conformance Testing - An OVM Success Story Mark Litterick Consultant & Co-Founder Verilab Agenda FlexRay overview What we mean by conformance testing What OVM brings to the
More informationSyntax Syntax for file I/O error detection system function (not in Annex A)
writes any buffered output to the file(s) specified by mcd, to the file specified by fd, or if $fflush is invoked with no arguments, to all open files. 21.3.7 I/O error status file_error_detect_function
More informationComplex Signal Processing Verification under DO-254 Constraints by François Cerisier, AEDVICES Consulting
Complex Signal Processing Verification under DO-254 Constraints by François Cerisier, AEDVICES Consulting Building a complex signal processing function requires a deep understanding of the signal characteristics
More information(6) The specification of a name with its type in a program. (7) Some memory that holds a value of a given type.
CS 7A - Fall 2016 - Midterm 1 10/20/16 Write responses to questions 1 and 2 on this paper or attach additional sheets, as necessary For all subsequent problems, use separate paper Do not use a computer
More informationCS61C Sample Final. 1 Opening a New Branch. 2 Thread Level Parallelism
CS61C Sample Final 1 Opening a New Branch struct market { char *name; struct item *inventory; // array of items int invsize; // size of array }; struct item { int id; int price; }; typedef struct market
More informationMonitors, Monitors Everywhere Who Is Monitoring the Monitors
Monitors, Monitors Everywhere Who Is Monitoring the Monitors Rich Edelman Mentor Graphics Raghu Ardeishar Mentor Graphics Abstract The reader of this paper should be interested in predicting the behavior
More informationBentley Rules for Optimizing Work
6.172 Performance Engineering of Software Systems SPEED LIMIT PER ORDER OF 6.172 LECTURE 2 Bentley Rules for Optimizing Work Charles E. Leiserson September 11, 2012 2012 Charles E. Leiserson and I-Ting
More informationLast class: Today: Deadlocks. Memory Management
Last class: Deadlocks Today: Memory Management CPU il1 L2 Memory Bus (e.g. PC133) Main Memory dl1 On-chip I/O Bus (e.g. PCI) Disk Ctrller Net. Int. Ctrller Network Binding of Programs to Addresses Address
More informationUVM: The Next Generation in Verification Methodology
UVM: The Next Generation in Verification Methodology Mark Glasser, Methodology Architect February 4, 2011 UVM is a new verification methodology that was developed by the verification community for the
More informationArchitecture Validation of VFP Control for the WiNC2R Platform
Architecture Validation of VFP Control for the WiNC2R Platform BY AKSHAY JOG A Thesis submitted to the Graduate School -- New Brunswick Rutgers, The State University of New Jersey in partial fulfillment
More informationAXI4-Stream Verification IP v1.0
AXI4-Stream Verification IP v1.0 LogiCORE IP Product Guide Vivado Design Suite Table of Contents IP Facts Chapter 1: Overview Feature Summary..................................................................
More informationUVM-SystemC Standardization Status and Latest Developments
2/27/2017 UVM-SystemC Standardization Status and Latest Developments Trevor Wieman, SystemC CCI WG Chair Slides by Michael Meredith, Cadence Design Systems 2 Outline Why UVM-SystemC? UVM layered architecture
More information