SystemVerilog Verification Classes & UVM - ALSE
SystemVerilog Verification Classes & UVM - ALSE
SystemVerilog Verification Classes & UVM - ALSE
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