SlideShare a Scribd company logo
The AVM and OVM in IP Core
Verification – Experiences and
Observations
Gareth Edwards
IP Solutions




April 22, 2009
Topics


 What is a methodology? What is it not?
 The timeline
 Some example OVM test environments




Page 2                        © Copyright 2009 Xilinx
What is methodology?


         methodology
          1. A collection of methods, practices,
             procedures and rules used by those who
             work in some field.
          2. The study of such methods etc.
          3. The implementation of such methods etc.




Page 3                       © Copyright 2009 Xilinx
Methodology is only part of the overall strategy


                                                           Compliance
               Hardware                                     Testing
               Validation



                            Functional
                            Verification
          CDC                                                     Linting
         Analysis


                             Formal
                             Proving



Page 4                           © Copyright 2009 Xilinx
The Timeline

                                                                        Various Ethernet testbenches
                                                                         Wrote our own extensions
 AVM 2.0 (July 2006)                                                  (primarily component removal)
 AVM 3.0 (May 2007)
     – ovm_object.clone()                                                Started CPRI testbench
     – Multiple environments                                             development, November
     – Component Removal
                                                                         2007
 OVM 1.0 (January 2008)
     –    Factories
     –    Configuration                                                  Ported CPRI testbench in-
     –    Sequences/scenarios
     –    Backward compatible with AVM 3.0
                                                                         flight
 OVM 1.1 (May 2008)
     – Singletop top
     – Refined test phasing                                              Ported CPRI testbench
     – Backward compatible with OVM 1.0                                  again…
 OVM 2.0 (Sep 2008)
     – Unified sequences
     – User Guide!
     – Backward compatible with OVM 1.1                                  CPRI I/Q Module
                                                                         testbenches


 Page 5                                      © Copyright 2009 Xilinx
The CPRI core – the DUT




Page 6               © Copyright 2009 Xilinx
The main CPRI Test suite (transmit)



                                 comparators



                                                                Cpri_model
                                                                                     HDLC
     tx_monitors
                                                                                      Eth
tx_drivers         DUT      monitor                                          DeMux

                                                                                      IQ


                                                      Startup       Sync             Vendor
                                                        SM           SM

  = tlm_fifo
                              byte_codeword_transaction
                   serial or
                                                      model_codeword_transaction
               2 byte parallel i/f

Page 7                                © Copyright 2009 Xilinx
The main CPRI Test suite (receive)


     = tlm_fifo
                                          comparators



                                                                         model
                                                                                    HDLC          rx_stim

                                                                                     Eth          rx_stim
         rx_monitors   DUT        driver
                                                                                     IQ           rx_stim


                                                              sync                  Vendor        rx_stim


                                        byte_codeword_transaction
                      serial or                                                  model_codeword_transaction
                  2 byte parallel i/f

Page 8                                         © Copyright 2009 Xilinx
The I/Q Module


                                           entity iq_module is
                                             generic (
                                               C_TX_WIDTH_1 : natural :=         10;
                                               C_TX_START_1 : natural :=          0;
                                               C_RX_WIDTH_1 : natural :=         10;
                                               C_RX_START_1 : natural :=          0;

                                               C_TX_WIDTH_2   :   natural   :=   10;
                                               C_TX_START_2   :   natural   :=   20;
                                               C_RX_WIDTH_2   :   natural   :=   10;
                                               C_RX_START_2   :   natural   :=   20;

                                               C_TX_WIDTH_3   :   natural   :=   10;
                                               C_TX_START_3   :   natural   :=   40;
                                               C_RX_WIDTH_3   :   natural   :=   10;
                                               C_RX_START_3   :   natural   :=   40;
                                           …




Page 9           © Copyright 2009 Xilinx
Testing the I/Q Module – parameterisation (1)

 class dut_param extends ovm_object;                               entity iq_module is
                                                                     generic (
    rand CpriSpeedType min_speed;                                      C_TX_WIDTH_1 : natural :=         10;
                                                                       C_TX_START_1 : natural :=          0;
    rand int n_tx_channels;                                            C_RX_WIDTH_1 : natural :=         10;
         int tx_width[1:24];                                           C_RX_START_1 : natural :=          0;
         int tx_start[1:24];
                                                                       C_TX_WIDTH_2   :   natural   :=   10;
    rand int n_rx_channels;                                            C_TX_START_2   :   natural   :=   20;
         int rx_width[1:24];                                           C_RX_WIDTH_2   :   natural   :=   10;
         int rx_start[1:24];                                           C_RX_START_2   :   natural   :=   20;
  function void pre_randomize();                                       C_TX_WIDTH_3   :   natural   :=   10;
     int status;                                                       C_TX_START_3   :   natural   :=   40;
 status = std::randomize(tx_width, rx_width)                           C_RX_WIDTH_3   :   natural   :=   10;
 with {                                                                C_RX_START_3   :   natural   :=   40;
       foreach (tx_width[i]) {
                                                                   …
         tx_width[i] inside {[4:20]};
       }
       foreach (rx_width[i]) {
         rx_width[i] inside {[4:20]};
       }
     };
 endfunction : pre_randomize




Page 10                                  © Copyright 2009 Xilinx
Testing the I/Q Module – parameterisation (2)

 class dut_param extends ovm_object;

    rand CpriSpeedType min_speed;                                     Stub program creates
    rand int n_tx_channels;                                            dut_param object,
         int tx_width[1:24];                                         randomizes and saves
         int tx_start[1:24];
                                                                       generics to storage
    rand int n_rx_channels;
         int rx_width[1:24];
         int rx_start[1:24];

  function void pre_randomize();
     int status;
 status = std::randomize(tx_width, rx_width)
 with {
       foreach (tx_width[i]) {
         tx_width[i] inside {[4:20]};
                                                                    Simulator reads generics,
       }                                                              elaborates testbench
       foreach (rx_width[i]) {
         rx_width[i] inside {[4:20]};
                                                                   and reconstructs dut_param
       }                                                                     object
     };
 endfunction : pre_randomize




Page 11                                  © Copyright 2009 Xilinx
Functional Coverage Tracking




Page 12              © Copyright 2009 Xilinx
Conclusions


 Using a Functional Verification Methodology can improve the
  quality of your verification effort
 We’ve used OVM; other verification methodologies are
  available
 It’s not that important which one you use
 Don’t forget the rest of your verification strategy




Page 13                          © Copyright 2009 Xilinx
Questions?




             ?
Page 14      © Copyright 2009 Xilinx

More Related Content

PDF
Mixed signal verification challenges - slides
PDF
Re usable continuous-time analog sva assertions - slides
PDF
Advanced Methodologies Used for Top-Level Verification of Mixed Signal Products
PDF
Directive-based approach to Heterogeneous Computing
PDF
Presentation of the open source CFD code Code_Saturne
PDF
Analogue Behavioral Modelling: An Inconvenient Truth
PDF
Cray XT Porting, Scaling, and Optimization Best Practices
PDF
Lambda
Mixed signal verification challenges - slides
Re usable continuous-time analog sva assertions - slides
Advanced Methodologies Used for Top-Level Verification of Mixed Signal Products
Directive-based approach to Heterogeneous Computing
Presentation of the open source CFD code Code_Saturne
Analogue Behavioral Modelling: An Inconvenient Truth
Cray XT Porting, Scaling, and Optimization Best Practices
Lambda

What's hot (10)

PDF
Doulos coverage-tips-tricks
PPTX
Camera camcorder framework overview(ginger bread)
PPT
Trusted Launch of Generic Virtual Machine Images in Public IaaS Environments
PDF
Re usable continuous-time analog sva assertions
PPT
20081114 Friday Food iLabt Bart Joris
PPT
TLM Based Software Control of UVCs for Vertical Verification Reuse
PDF
ARM and SoC Traning Part I -- Overview
PPTX
Fpga based implementation of a double precision ieee floating point adder
PPTX
FIBRE-BR – People, Resources , Roadmap
PPT
CFD - OpenFOAM
Doulos coverage-tips-tricks
Camera camcorder framework overview(ginger bread)
Trusted Launch of Generic Virtual Machine Images in Public IaaS Environments
Re usable continuous-time analog sva assertions
20081114 Friday Food iLabt Bart Joris
TLM Based Software Control of UVCs for Vertical Verification Reuse
ARM and SoC Traning Part I -- Overview
Fpga based implementation of a double precision ieee floating point adder
FIBRE-BR – People, Resources , Roadmap
CFD - OpenFOAM
Ad

Viewers also liked (7)

PDF
Cost Evaluation for Adopting Formal Property Checking
PDF
Deploying Functional Qualification at STMicroelectronics
PDF
OpenSPARC on FPGAs
PDF
The Cortex-A15 Verification Story
PDF
Constrained-Random Thoughts on Advanced Constrained-Random Thoughts on Advanc...
PDF
Formal Verification Theory and Practice
PDF
Using Formal Methods to Create Instruction Set Architectures
Cost Evaluation for Adopting Formal Property Checking
Deploying Functional Qualification at STMicroelectronics
OpenSPARC on FPGAs
The Cortex-A15 Verification Story
Constrained-Random Thoughts on Advanced Constrained-Random Thoughts on Advanc...
Formal Verification Theory and Practice
Using Formal Methods to Create Instruction Set Architectures
Ad

Similar to The AVM and OVM in IP Core Verification - Experiences and Observations (20)

PPT
DvClub 2102 tlm based software control of uvcs for vertical verification re...
PDF
Processor Verification Using Open Source Tools and the GCC Regression Test Suite
PDF
The Verification Methodology Landscape
PDF
Automating the Configuration of the FlexRay Communication Cycle
PDF
Tdd with python unittest for embedded c
PDF
RTI-CODES+ISSS-2012-Submission-1
PDF
May2010 hex-core-opt
PDF
PPTX
JavaMicroBenchmarkpptm
PPTX
Viavi_TeraVM Core Emulator.pptx
PDF
Polycom Automation Framework - Polycom
PDF
IVI-COM Action
PDF
DO-178C OOT supplement: A user's perspective
PDF
FlexRay Product Days RTaW
PPTX
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
PDF
Synopsys jul1411
PPTX
Stage 1 Tradecraft
PDF
Challenges in Using UVM at SoC Level
PDF
Microcontroller Based Testing of Digital IP-Core
PPT
Coverage Solutions on Emulators
DvClub 2102 tlm based software control of uvcs for vertical verification re...
Processor Verification Using Open Source Tools and the GCC Regression Test Suite
The Verification Methodology Landscape
Automating the Configuration of the FlexRay Communication Cycle
Tdd with python unittest for embedded c
RTI-CODES+ISSS-2012-Submission-1
May2010 hex-core-opt
JavaMicroBenchmarkpptm
Viavi_TeraVM Core Emulator.pptx
Polycom Automation Framework - Polycom
IVI-COM Action
DO-178C OOT supplement: A user's perspective
FlexRay Product Days RTaW
Shipping Code like a keptn: Continuous Delivery & Automated Operations on k8s
Synopsys jul1411
Stage 1 Tradecraft
Challenges in Using UVM at SoC Level
Microcontroller Based Testing of Digital IP-Core
Coverage Solutions on Emulators

More from DVClub (20)

PDF
IP Reuse Impact on Design Verification Management Across the Enterprise
PDF
Cisco Base Environment Overview
PDF
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
PDF
Verification of Graphics ASICs (Part II)
PDF
Verification of Graphics ASICs (Part I)
PDF
Stop Writing Assertions! Efficient Verification Methodology
PPT
Validating Next Generation CPUs
PPT
Verification Automation Using IPXACT
PDF
Validation and Design in a Small Team Environment
PDF
Trends in Mixed Signal Validation
PDF
Verification In A Global Design Community
PDF
Design Verification Using SystemC
PDF
Verification Strategy for PCI-Express
PDF
SystemVerilog Assertions (SVA) in the Design/Verification Process
PDF
Efficiency Through Methodology
PDF
Pre-Si Verification for Post-Si Validation
PDF
OpenSPARC T1 Processor
PDF
Intel Atom Processor Pre-Silicon Verification Experience
PDF
Using Assertions in AMS Verification
PDF
Low-Power Design and Verification
IP Reuse Impact on Design Verification Management Across the Enterprise
Cisco Base Environment Overview
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
Verification of Graphics ASICs (Part II)
Verification of Graphics ASICs (Part I)
Stop Writing Assertions! Efficient Verification Methodology
Validating Next Generation CPUs
Verification Automation Using IPXACT
Validation and Design in a Small Team Environment
Trends in Mixed Signal Validation
Verification In A Global Design Community
Design Verification Using SystemC
Verification Strategy for PCI-Express
SystemVerilog Assertions (SVA) in the Design/Verification Process
Efficiency Through Methodology
Pre-Si Verification for Post-Si Validation
OpenSPARC T1 Processor
Intel Atom Processor Pre-Silicon Verification Experience
Using Assertions in AMS Verification
Low-Power Design and Verification

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPT
Teaching material agriculture food technology
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Cloud computing and distributed systems.
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Empathic Computing: Creating Shared Understanding
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Approach and Philosophy of On baking technology
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Encapsulation theory and applications.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
The Rise and Fall of 3GPP – Time for a Sabbatical?
Teaching material agriculture food technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
Cloud computing and distributed systems.
NewMind AI Weekly Chronicles - August'25 Week I
Encapsulation_ Review paper, used for researhc scholars
20250228 LYD VKU AI Blended-Learning.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Understanding_Digital_Forensics_Presentation.pptx
Empathic Computing: Creating Shared Understanding
MYSQL Presentation for SQL database connectivity
Approach and Philosophy of On baking technology
Dropbox Q2 2025 Financial Results & Investor Presentation
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Encapsulation theory and applications.pdf

The AVM and OVM in IP Core Verification - Experiences and Observations

  • 1. The AVM and OVM in IP Core Verification – Experiences and Observations Gareth Edwards IP Solutions April 22, 2009
  • 2. Topics  What is a methodology? What is it not?  The timeline  Some example OVM test environments Page 2 © Copyright 2009 Xilinx
  • 3. What is methodology? methodology 1. A collection of methods, practices, procedures and rules used by those who work in some field. 2. The study of such methods etc. 3. The implementation of such methods etc. Page 3 © Copyright 2009 Xilinx
  • 4. Methodology is only part of the overall strategy Compliance Hardware Testing Validation Functional Verification CDC Linting Analysis Formal Proving Page 4 © Copyright 2009 Xilinx
  • 5. The Timeline Various Ethernet testbenches Wrote our own extensions  AVM 2.0 (July 2006) (primarily component removal)  AVM 3.0 (May 2007) – ovm_object.clone() Started CPRI testbench – Multiple environments development, November – Component Removal 2007  OVM 1.0 (January 2008) – Factories – Configuration Ported CPRI testbench in- – Sequences/scenarios – Backward compatible with AVM 3.0 flight  OVM 1.1 (May 2008) – Singletop top – Refined test phasing Ported CPRI testbench – Backward compatible with OVM 1.0 again…  OVM 2.0 (Sep 2008) – Unified sequences – User Guide! – Backward compatible with OVM 1.1 CPRI I/Q Module testbenches Page 5 © Copyright 2009 Xilinx
  • 6. The CPRI core – the DUT Page 6 © Copyright 2009 Xilinx
  • 7. The main CPRI Test suite (transmit) comparators Cpri_model HDLC tx_monitors Eth tx_drivers DUT monitor DeMux IQ Startup Sync Vendor SM SM = tlm_fifo byte_codeword_transaction serial or model_codeword_transaction 2 byte parallel i/f Page 7 © Copyright 2009 Xilinx
  • 8. The main CPRI Test suite (receive) = tlm_fifo comparators model HDLC rx_stim Eth rx_stim rx_monitors DUT driver IQ rx_stim sync Vendor rx_stim byte_codeword_transaction serial or model_codeword_transaction 2 byte parallel i/f Page 8 © Copyright 2009 Xilinx
  • 9. The I/Q Module entity iq_module is generic ( C_TX_WIDTH_1 : natural := 10; C_TX_START_1 : natural := 0; C_RX_WIDTH_1 : natural := 10; C_RX_START_1 : natural := 0; C_TX_WIDTH_2 : natural := 10; C_TX_START_2 : natural := 20; C_RX_WIDTH_2 : natural := 10; C_RX_START_2 : natural := 20; C_TX_WIDTH_3 : natural := 10; C_TX_START_3 : natural := 40; C_RX_WIDTH_3 : natural := 10; C_RX_START_3 : natural := 40; … Page 9 © Copyright 2009 Xilinx
  • 10. Testing the I/Q Module – parameterisation (1) class dut_param extends ovm_object; entity iq_module is generic ( rand CpriSpeedType min_speed; C_TX_WIDTH_1 : natural := 10; C_TX_START_1 : natural := 0; rand int n_tx_channels; C_RX_WIDTH_1 : natural := 10; int tx_width[1:24]; C_RX_START_1 : natural := 0; int tx_start[1:24]; C_TX_WIDTH_2 : natural := 10; rand int n_rx_channels; C_TX_START_2 : natural := 20; int rx_width[1:24]; C_RX_WIDTH_2 : natural := 10; int rx_start[1:24]; C_RX_START_2 : natural := 20; function void pre_randomize(); C_TX_WIDTH_3 : natural := 10; int status; C_TX_START_3 : natural := 40; status = std::randomize(tx_width, rx_width) C_RX_WIDTH_3 : natural := 10; with { C_RX_START_3 : natural := 40; foreach (tx_width[i]) { … tx_width[i] inside {[4:20]}; } foreach (rx_width[i]) { rx_width[i] inside {[4:20]}; } }; endfunction : pre_randomize Page 10 © Copyright 2009 Xilinx
  • 11. Testing the I/Q Module – parameterisation (2) class dut_param extends ovm_object; rand CpriSpeedType min_speed; Stub program creates rand int n_tx_channels; dut_param object, int tx_width[1:24]; randomizes and saves int tx_start[1:24]; generics to storage rand int n_rx_channels; int rx_width[1:24]; int rx_start[1:24]; function void pre_randomize(); int status; status = std::randomize(tx_width, rx_width) with { foreach (tx_width[i]) { tx_width[i] inside {[4:20]}; Simulator reads generics, } elaborates testbench foreach (rx_width[i]) { rx_width[i] inside {[4:20]}; and reconstructs dut_param } object }; endfunction : pre_randomize Page 11 © Copyright 2009 Xilinx
  • 12. Functional Coverage Tracking Page 12 © Copyright 2009 Xilinx
  • 13. Conclusions  Using a Functional Verification Methodology can improve the quality of your verification effort  We’ve used OVM; other verification methodologies are available  It’s not that important which one you use  Don’t forget the rest of your verification strategy Page 13 © Copyright 2009 Xilinx
  • 14. Questions? ? Page 14 © Copyright 2009 Xilinx