30.01.2015 Views

SystemVerilog Verification Classes & UVM - ALSE

SystemVerilog Verification Classes & UVM - ALSE

SystemVerilog Verification Classes & UVM - ALSE

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

___________________________________________________________________________________________<br />

Présentation<br />

<strong>SystemVerilog</strong> (IEEE 1800) est le nouveau « super-langage » qui s'est imposé depuis plusieurs années pour la<br />

Modélisation et la Vérification des circuits et systèmes numériques complexes. Bien adapté pour la conception<br />

(synthèse, RTL), c'est surtout dans les domaines de l'Architecture, de la Modélisation et de la Vérification que ce<br />

langage montre toute sa puissance (Types de données, Objectisation et <strong>Classes</strong>, Assertions SVA, Cover-driven<br />

Constrained Random generation, etc).<br />

Parallèlement, l'industrie a vu naître plusieurs Librairies Méthodologiques de Vérification qui ont aujourd'hui<br />

convergé sur le standard multi-vendeurs « <strong>UVM</strong> » ou Universal <strong>Verification</strong> Methodology qui est supporté par<br />

tous les principaux simulator <strong>SystemVerilog</strong> du marché.<br />

<strong>SystemVerilog</strong> & <strong>UVM</strong> pour Vérification est une Formation intégrée qui permet d'acquérir la partie « Objet » de<br />

<strong>SystemVerilog</strong> ainsi que la maîtrise d'<strong>UVM</strong>.<br />

Attention ! Il est demandé aux participants de maîtriser au préalable le langage <strong>SystemVerilog</strong> (partie « Design »),<br />

comme enseigné dans notre Formation <strong>SystemVerilog</strong> for Design.<br />

Les participants peuvent utiliser au choix différents outils de Simulation durant les exercices pratiques qui occupent<br />

environ 50 % du temps de la formation. Ces exercices progressifs, complets et soigneusement choisis, facilitent et<br />

renforcent l’acquisition des connaissances.<br />

Les Instructeurs <strong>ALSE</strong> sont aussi et surtout des Experts en Conception qui utilisent à journée entière les langages<br />

qu'ils enseignent pour concevoir et vérifier des systèmes complexes. Ils savent partager leur savoir-faire avec<br />

passion, et ils sont particulièrement appréciés des participants.<br />

___________________________________________________________________________________________<br />

Objectifs pédagogiques<br />

• Apprendre et maîtriser la partie « Objets » du langage <strong>SystemVerilog</strong>, les <strong>Classes</strong>, l'automatisation des<br />

bancs de test, la génération aléatoire contrainte, et la vérification dirigée par la mesure de couverture<br />

(constrained random & cover-driven simulation). Les fondements du langage <strong>SystemVerilog</strong> sont supposés<br />

déjà acquis.<br />

• Évoluer des techniques de tests unitaires vers l'adoption d'une librairie méthodologique pour construire des<br />

systèmes de test et vérification sophistiqués et ré-utilisables.<br />

• Maîtriser <strong>UVM</strong> : composants, environnement, le Kit (classes, macros documentation et exemples) pour<br />

construire votre propre environnement de vérification, savoir configurer, générer les stimuli, les rapports et<br />

les diagnostics.<br />

• Comment construire des composants et des environnements de vérification complets puissants et réutilisables<br />

basés sur la librairie <strong>UVM</strong>.<br />

___________________________________________________________________________________________<br />

Qu’apprendrez vous <br />

Le cours est structuré en différentes sections :<br />

<strong>SystemVerilog</strong> & <strong>UVM</strong><br />

pour Vérification<br />

Formation de 5 jours<br />

• Class-based System Verilog <strong>Verification</strong> (2 jours) décrit la partie « objet » de <strong>SystemVerilog</strong> (les<br />

<strong>Classes</strong>). Cette partie du langage offre des méthodes avancées de vérification (Génération de stimuli<br />

aléatoires contraints avec asservissement de couverture par exemple). Elle permet également de monter<br />

en niveau d'abstraction aussi bien pour la modélisation comportementale que pour la construction<br />

d'environnements complets de vérification.<br />

• <strong>UVM</strong> Adopter Class (3 jours) permet de maîtriser cette librairie méthodologique universelle.<br />

Vous y découvrirez les principes de vérification par <strong>UVM</strong>, la structure standard des composants et<br />

environnements, comme utiliser le Kit <strong>UVM</strong> pour bâtir votre propre environnement de vérification, comment<br />

organiser vos bancs de test, etc...<br />

Connaissances préalables indispensables<br />

Une connaissance préalable du langage <strong>SystemVerilog</strong> (hors partie objet) est nécessaire. Ces connaissances<br />

peuvent être acquises par notre formation <strong>SystemVerilog</strong> for VHDL Designers (par exemple).<br />

© 2012 – Doulos UK & <strong>ALSE</strong> Formation <strong>SystemVerilog</strong> & <strong>UVM</strong> pour Vérification 1


___________________________________________________________________________________________<br />

Supports de cours<br />

Les manuels de cours Doulos sont réputés pour être détaillés, précis et faciles d’utilisation. Leur style, leur contenu et<br />

leur exhaustivité sont uniques dans le monde de la formation HDL. Ils sont souvent utilisés ensuite comme référence.<br />

Sont compris dans la formation :<br />

• Les Classeurs du cours théorique, avec un Index.<br />

Ils constituent des Manuels de Référence précis et concis.<br />

• Les Cahiers des Exercices pratiques, qui permettent de mettre en œuvre<br />

les connaissances théoriques.<br />

• Les « Doulos Golden Reference Guide » : (<strong>SystemVerilog</strong> + <strong>UVM</strong>)<br />

sont très exhaustifs et pratiques (syntaxe, sémantique, trucs et astuces).<br />

Il sont destinés à devenir pendant longtemps les compagnons de votre<br />

clavier...<br />

___________________________________________________________________________________________<br />

Programme<br />

Class-based <strong>SystemVerilog</strong> <strong>Verification</strong> (Jours 1 & 2)<br />

Introducing classes<br />

<strong>SystemVerilog</strong>’s class syntax Describing stimulus data and a stimulus generator<br />

Randomization of class members (without constraints) Objects and references<br />

Constructors and new Shallow copy using new Writing a custom copy method<br />

Hooking classes to the DUT<br />

Dynamically-constructed test environment vs. statically-elaborated DUT and test harness<br />

Using virtual interface and class-based BFMs The role of clocking and program blocks<br />

Appropriate structure for DUT, clock generators and other structural elements<br />

Constructing and launching the test environment (program+initial) Simple class-based testbench architecture<br />

Advanced object-oriented features<br />

Using inheritance to extend data classes Type parametrization of classes<br />

Using virtual methods and polymorphism to create generic testbench infrastructure such as channels,<br />

FIFOs, scoreboards Deriving custom classes from generic base classes in a <strong>Verification</strong> Library<br />

Constrained Randomisation<br />

Full details of <strong>SystemVerilog</strong> randomization, including inline and declarative constraints<br />

Dynamic control of constraints Constraints as checkers Procedural randomization: randcase, randsequence<br />

Control fields in classes for flexible constraints Constraints and inheritance<br />

Modelling techniques<br />

Process control in <strong>SystemVerilog</strong>: new forms of fork..join Spawning long-running threads with fork..join_none<br />

Other modeling support: built-in classes for linked-list, semaphore, mailbox<br />

Writing checkers and behavioral reference models<br />

Class-based testbench architecture<br />

Layered architectures – moving verification to higher levels of abstraction<br />

Relation between layering and self-contained verification IP Vendor-advocated methodologies<br />

Moving transactions around a testbench Unifying ideas: transaction ports + FIFO, design pattern<br />

for publisher/subscriber, callbacks (snooping & error injection)<br />

Base classes for transaction, transactor, environment Automating the activity of testbench components<br />

Coverage and planning<br />

Coverage-driven TBA methodology Coverage planning as the first step in verification process<br />

<strong>SystemVerilog</strong> coverage constructs in details<br />

Analyzing and interpreting coverage data<br />

© 2012 – Doulos UK & <strong>ALSE</strong> Formation <strong>SystemVerilog</strong> & <strong>UVM</strong> pour Vérification 2


<strong>UVM</strong> Adopter Class (Jours 3 à 5)<br />

Introducing to UWM<br />

Course structure Motivation Principles of coverage-driven verification benefits<br />

transaction level modelling The <strong>UVM</strong> kit Test bench organisation <strong>UVM</strong> class summary<br />

Overview of key <strong>UVM</strong> features<br />

Getting Started with <strong>UVM</strong><br />

Test bench structure uvm_env and uvm_test Field automation macros Basic reporting<br />

Transaction classes generating a randomized sequence driver class linking to the DUT<br />

Virtual interfaces running a test Lab - a simple test bench<br />

Monitors and Reporting<br />

Creating a monitor The <strong>UVM</strong> printer reports and actions configuring the <strong>UVM</strong> report handler<br />

The <strong>UVM</strong> report catcher TLM ports, exports, and binding analysis ports<br />

uvm_subscriber tlm_analysis_fifo Lab - Monitor with analysis ports<br />

Checkers and Scoreboards<br />

The role of assertions Structural versus protocol assertions Reference models Monitor operation<br />

Sampling signal values Scoreboards and the uvm_scoreboard class <strong>UVM</strong> built-in comparators<br />

Field macros and their flags • Overriding the compare method Redirecting reports Log files<br />

Lab - implementing a checker<br />

Functional Coverage<br />

Separating data gathering from coverage analysis Property-based coverage<br />

Property variables and actions Covergroup & coverpoint Cross coverage Binning<br />

Analysis subscriber Coverage on internal states of DUT Lab - creating a coverage collector<br />

Random Stimulus Generation<br />

Constrained random stimulus Packing <strong>UVM</strong> class fields The sequencer-driver interface<br />

Controlling the constraint solver Serial I/O example Overriding generated sequence items<br />

the uvm_do sequence macro family Lab - constraints and random stimulus<br />

Configuring the Testbench<br />

Using component names to represent hierarchy Locating and identifying component instances by name<br />

Using the <strong>UVM</strong> factory Registering fields with factory Overriding factory defaults<br />

Using the factory with parameterized components The resource database and configuration database<br />

Virtual interface wrappers Configuring multiple tests Configuration with command-line arguments<br />

stopping a test Lab - testbench configuration and overriding the factory<br />

Agent Architecture<br />

"Agent" architecture and its relationship with other verification methodologies Class monitors and drivers<br />

Standard agent architecture uvm_agent Sequence library and default <strong>UVM</strong> sequences<br />

Communication between sequencer and driver connecting and configuring agent end-of-test mechanisms<br />

Objections Lab - configuring an agent<br />

Sequences<br />

The uvm_sequence class Sequence phases Sequence callbacks Starting sequences Nested sequences<br />

sequence control knobs virtual sequences and sequencers Lab - creating nested and virtual sequences<br />

More on Sequences<br />

Overriding sequences Getting response from sequence driver interleaved sequences sequence priority and<br />

arbitration grabbing control of sequences sequence layering Lab - overriding sequences, grabbing sequences,<br />

and using sequence priority<br />

Appendices (optional topics): Callbacks + register Layer + Advanced Register topics<br />

© 2012 – Doulos UK & <strong>ALSE</strong> Formation <strong>SystemVerilog</strong> & <strong>UVM</strong> pour Vérification 3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!