SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
Stop Writing Assertions!
Efficient Verification Methodology
  Dave Whipp – DVClub SV, August 2008
Todays Talk


         An Overview of Methodology Creation
                      Methodology as User Interface


         Making ESL work as a Hardware Design Flow
                      Evolution of a Interface Definition Language
                      Transaction Level Assertions
                      Transaction Level Debug




NVIDIA Confidential
A HW Development Flow

                                  Big Paper Spec
         ISS Model


                                                        Verification    Coverage
                                    Debug
           Design

                                            Testbench       Checkers   Tests

 RTL                  Synthesis

                                    Clocks, Resets        C Model      Directed
        Assertions
                                     BFMs,              Assertions     Random

                                     TLMs               Scoreboard     Formal
NVIDIA Confidential
User Model for Running Tests



           Build                       Run
         Testbench                   Predictor



                      *   Generate               Compare
                            Test                 Behaviors



                                       Run
                                       DUT




NVIDIA Confidential
Part 1

Methodology Design
Purpose of a Flow

         Conceptual Framework
                      Where do things live?
                      How do things work?


         Keep out of the way
                      Don’t make life difficult for people


         Define Metaphors
                      Subtly influence future directions


         Anchor for Variation
                      Give people something to complain about

NVIDIA Confidential
Two Philosophies


         Conformity
                      Emphasize Standardization


         Diversity
                      Emphasize Innovation




         Synergy or Conflict?




NVIDIA Confidential
Understanding Variation


         To understand what to standardize:
                      you need to understand what not to standardize


         Personal Preferences
         Technical Aspects of the Designs
         Supporting Legacy
         Seeking the Next Big Thing




NVIDIA Confidential
Personal Preferences

                      Emacs!


                      vi




NVIDIA Confidential
Personal Preferences


         Choice of editor doesn’t affect others
                      At least, not much
         Choice of scripting language has greater impact
                      But is encapsulated
                      A script’s users don’t see the implementation language
         Choice of HVL affects whole team
                      Can’t write “E” tests for a “Vera” testbench!
                      But a unit testbench isn’t seen by other units


         A good flow will allow encapsulation of preferences
                      I can go to any unit and build & run its tests
                      Enables rapid localization of infrastructure issues
NVIDIA Confidential
Technological Differences




NVIDIA Confidential
Technical Characteristics




               P              Graphics Pipe
               C
               I                              Frame
               E      Video
                                              Buffer


                         Off-chip Memory
NVIDIA Confidential
Reuse Vs Stagnation

         Reuse considered Good
                      Avoid reinventing the wheel
                      Build on the shoulders of giants
         Reuse invites Inertia
                      Reuse can propagate dependencies
                      Dependencies make things harder to change
                      Resistance to change is known as inertia


         Inertia can lead to Stagnation
                      Improper reuse accumulates dependencies
                      Reused code that is not understood will bit-rot
                      To avoid stagnation, inject agitation

NVIDIA Confidential
Are Single Paradigm Projects Possible?



Paradigm 1             Unit A


                       Unit B      Unit B      Unit B

Paradigm 2
                                   Unit C      Unit C


Paradigm 3                                     Unit D


                                                          time
                      Project 1   Project 2   Project 3



NVIDIA Confidential
Watch some Real Users




NVIDIA Confidential     Image courtesy of DAZ Productions
How to “Watch” Users


         Meetings and Discussions
         Coffee-Break Grousing

         Bug Reports
         Keep Track of Support Requests
                      create FAQs


         VNC (Remote Desktop)
         Instrumentation



NVIDIA Confidential
Build Time Distribution: 10,000 per sample

       100%

         90%

         80%                         > 1 hour
                                     < 1 hour
         70%
                                     < 30 min
         60%                         < 15 min
                                     < 10 min
         50%
                                     < 5 min
         40%                         < 2 min
                                     < 1 min
         30%
                                     < 30 sec
         20%                         < 20 sec
         10%

           0%

NVIDIA Confidential
Build Time Distribution: 1000 per sample

       100%

         90%

         80%                         > 1 hour
                                     < 1 hour
         70%
                                     < 30 min
         60%                         < 15 min
                                     < 10 min
         50%
                                     < 5 min
         40%                         < 2 min
                                     < 1 min
         30%
                                     < 30 sec
         20%                         < 20 sec
         10%

           0%


NVIDIA Confidential
Part 2

ESL for Transaction Design
A HW Development Flow (BAD)

                                  Big Paper Spec
         ISS Model


                                                        Verification    Coverage
                                    Debug
           Design

                                            Testbench       Checkers   Tests

 RTL                  Synthesis

                                    Clocks, Resets        C Model
        Assertions                                                     Directed
                                     BFMs,              Assertions
                                                                       Randoms
                                     TLMs               Scoreboard
NVIDIA Confidential
A HW Development Flow (BAD)

                                  Big Paper Spec
         ISS Model


                                                        Verification    Coverage
                                    Debug
           Design

                                            Testbench       Checkers   Tests

 RTL                  Synthesis

                                    Clocks, Resets        C Model
        Assertions                                                     Directed
                                      BFMs,             Assertions
                                                                       Randoms
                                      TLMs              Scoreboard
NVIDIA Confidential
A HW Development Flow (Better)

           Small Paper Spec
                                                      Coverage
                                                                        Triage

  ISS Model                    ESL
                                                                 Verification

                C Model                     Debug


                           Interfaces                       Testbench     Randoms
  Validation                              Design

                        Assertions
TLMs                                                RTL              Scoreboards

Directed Tests              BFMs            Assertions
                                                             Clocks, Resets
                                        Synthesis
  NVIDIA Confidential
Who Writes Assertions?


         Designers
                      Bottom Up Assumptions
         Verification Engineers
                      Top-down Intent




NVIDIA Confidential
Who Writes Assertions?


         Designers
                      Bottom Up Assumptions
         Verification Engineers
                      Top-down Intent


         Architects
                      The Specification
                      Top Down Assumptions
                      Bottom Up Intent




NVIDIA Confidential
Where to Write Assertions


         The RTL
                      Inline
                      Bound
         The Testbench
                      Scoreboard
         Environment
                      E.g. Post Process Log file




NVIDIA Confidential
Where to Write Assertions


         The RTL
                      Inline
                      Bound
         The Testbench
                      Scoreboard
         Environment
                      Post Process Log files


         The Specification
                      C Models (?)



NVIDIA Confidential
Where To Write Specification Assertions



           Functionality
              Model
                             RTL
                            Design
           Performance
              Model




NVIDIA Confidential
Where To Write Specification Assertions

                           ISS Model

             Transaction
                Model
                                Correlation    RTL
                                  Model       Design
           Performance
              Model
                             Debug/Triage
                                Model


NVIDIA Confidential
Where To Write Specification Assertions



             Transaction
                Model
                           Structural    RTL
                             Model      Design
           Performance
              Model




NVIDIA Confidential
Interfaces Vs State


         Two approaches to comparing models:

                      Compare “Architectural State”
                         Registers/flops within the design whose existence is
                         required by the specification


                      Compare externally visible behavior
                         Compare interface traffic
                         B. F. Skinner?




NVIDIA Confidential
Birth of an IDL


         Interface Description Language

         Initially, a language just to define signals

           Interface a2b
               clock clk
               down U valid 1
               up    U busy 1
               down U cmd 24
               down U data 32



NVIDIA Confidential
Evolution of an IDL


         Quickly added flow-control protocol abstraction

           Interface a2b
               clock clk
               flow valid_busy
               down U cmd 24
               down U data 32


         From this we can generate:
                      Testbench components (BFMs: producers, consumers)
                      Protocol Assertions
                      …
NVIDIA Confidential
Continued Evolution of an IDL

         Separation of packet structure from interface

           group SOP
              down U cmd 24
           group MOP
              down U data 32
           group EOP
              down U checksum 32

           Interface a2b
               clock clk
               flow valid_busy
               packet SOP, MOP, EOP

NVIDIA Confidential
Transaction Assertions in YACC


                 valid_interface_traffic:
                        | valid_interface_traffic transaction;

                 transaction: begin middle end;

                 begin: SOP;
                 middle:
                       | middle MOP;
                 end: EOP


NVIDIA Confidential
Cycle Level Assertions in SVA
 clk

 cmd                  SOP   MOP   MOP EOP


         sequence valid_trans;
            (cmd==SOP)
            (##1 cmd != SOP && cmd != EOP) [*0:$]
            ##1 cmd == EOP
         endsequence

         a_well_formed_transaction: assert @(posedge clk)
           cmd == SOP |-> sequence (valid_trans)

NVIDIA Confidential
Transaction Level Assertions in SVA
 clk

 valid

 cmd                  SOP   MOP   MOP        EOP



         sequence valid_transaction;
            (cmd==SOP)
            (##1 cmd != SOP && cmd != EOP) [*0:$]
            ##1 cmd == EOP
         endsequence



NVIDIA Confidential
Transaction Level Assertions in SVA
 clk

 valid

 busy

 cmd                  SOP   MOP   MOP         EOP


         event sample;
         always @(posedge clk)
            if (valid && ! busy) -> sample
         assert @(sample)
            cmd == SOP |-> sequence (valid_transaction)


NVIDIA Confidential
Transaction Level Assertions in SVA
 clk

 valid

 busy

 cmd                  SOP   MOP   MOP        EOP


         event sample;
         always @(posedge clk)
            if (valid && ! busy) -> sample
         assert @(sample)
            cmd == BEGIN |-> sequence (valid_transaction)


NVIDIA Confidential
Grammer using IDL


assert “temporal representation”
           data SOP => past( EOP )
           data MOP => past( SOP | MOP )
           data EOP => past( SOP | MOP )



assert “bnf representation”
           bnf SOP
              -> MOP ** past( SOP.length-1 :sample( SOP ) )
              -> EOP




NVIDIA Confidential
Multi-Unit Assemblies




            A               B         C         D         E         F         G
                      a2b       b2c       c2d       d2e       e2f       f2g




                                      A simple pipeline




NVIDIA Confidential
Multi-Unit Assemblies



                            a2b       b2c       c2d
                        A         B         C         D



                      d2e         E         F         G
                                      e2f       f2g

                             Simple rearrangement



NVIDIA Confidential
Multi-Unit Assemblies



                            a2b          b2c            c2d
                        A         B                 C           D



                      d2e         E                F            G
                                         e2f            f2g

                        Identify units with similar behaviors



NVIDIA Confidential
Multi-Unit Assemblies




                                  d2be                    cf2d
                                                                 D
                                         B be2cf C
                           a2be          E       F
                      A                                   cf2g
                                                                 G

                          Extract common behavior into unified components
                                        be2cf === b2c + e2f

NVIDIA Confidential
Reusing Interface Definitions



                      A    B     C    D       E       F   G




                                                  D
                                  B       C
                                  E       F
                            A                     G




              How to maximize reuse between these two architectures?


NVIDIA Confidential
Packets as Traffic Streams

           group b2c
              down U data 32
           group e2f
              down U data 32

           Interface be2cf
               clock clk
               flow valid_credit
               packet b2c, e2f




NVIDIA Confidential
Time Units of Temporal Expressions


Group b2c
           down U value 4
           assert value != past( value )


Group e2f
           down U value 4
           assert ( value == 0 ) => ( past( value ) != 0 )


Interface be2cf
           packet b2c, e2f
           assert b2c => ( b2c.value != past( b2c.value :sample(b2c) ) )
           assert past( e2f && e2f.value == 0 ) => (b2c && b2c.value != 0)
NVIDIA Confidential
Example


                      Renderer   Memory




NVIDIA Confidential
The Traffic
         group mem_write
            down U address 16
            down U data 1

         group sync
            down U shape 2
               enum SQUARE, CIRCLE, TRIANGE, BLANK
            down U radius 3




NVIDIA Confidential
Accumulate Memory State


group mem_write

         down U address 16
         down U data 1

         assign mem[ x = 0 .. 15 ][ y = 0 .. 15 ]
            = past( data :sample( address == {x,y} ))




NVIDIA Confidential
Add Predicates


group_more mem_write

         assign is_circle[ r = 0..7 ] = “&&”(
            [ x = -8 .. 7 ]
            [ y = -8 .. 7 ]
               mem[ x+8 ][ y+8 ] == ( x**2 + y**2 <= r**2 )
         )




NVIDIA Confidential
Define the interface

interface render2memory
   clock mem_clk
   flow valid_busy
   packet sync, mem_write

         assert “correct sync shape”
            sync && sync.shape == CIRCLE
                  => past( mem_write.is_circle[ sync.radius ] )




NVIDIA Confidential
Example



Renderer                                           Memory




    assert “correct sync shape”
          sync && sync.shape == CIRCLE
            => past( mem_write.is_circle[ sync.radius ] )


NVIDIA Confidential
Summary


         Efficient Verification
                      Understand Variation
                      Encourage Diversity
                         avoid anarchy
                      Encourage Standardization
                         avoid stagnation


         Frontload The Schedule
                      Provide Verification with Executable Spec (ESL)
                         C Model, Correlation Model (pre validated)
                         Interfaces, Transactions (definitions for code generators)
                         Assertions, Testpoints (neutral language, pre validated)


NVIDIA Confidential
Questions

http://dave.whipp.name/dv
Summary


         Architects should write assertions
                      Validated assertions are input to Verification


         Assertions must be directly reusable across models
                      Manual recoding invites errors


         Explicitly model the structure that is common to
         architectural models and to design
                      Tie assertions to these common points




NVIDIA Confidential
Threading Models


         Thread Follows Resource
                      Traditional SystemC approach
         Thread Follows Transaction
                      Think “Multithreaded ISS”
         Cycle-based Model
                      The “Old” way of doing things
                      A non-threaded version of “thread follows resource”


         Different models are convenient at various times
                      But SystemC forces you to commit early to one approach
                      Therefore need extra code for transaction level debug


NVIDIA Confidential
70%


         70% of schedule is Verification

         What is correct figure

         0%
                      synthesize architectural models, constraints
                      Correct by construction!


         100%
                      synthesize verification models, constraints
                      no design needed!

NVIDIA Confidential
Transactions Vs Cycles




                      Data min_val (Addr a1, Addr a2)
                                               Pipelined Bus
                      {
                         Data d1 = mem_read(a1);
                         Data d2 = mem_read(a2); t2 t3 t4
                                                t1               t5   t6

                          if (d1 < d2) Address    a1        a2
                                return d1;
                          else             Data        d1             d2
                                return d2;
                      }




NVIDIA Confidential
Unit Level System Testing



  Graphics Pipeline (Transaction Model)


   Stage                      Stage       Stage
    N-1                         N          N+1



                             RTL
                                          DIFF
                             Unit

NVIDIA Confidential
Avoiding Stagnation


      New Challenges
      New Tools
      New Platforms
      New People
      New Ideas

      Refactoring
      Testability
      D.R.Y.




NVIDIA Confidential

Mais conteúdo relacionado

Mais procurados

Leverage DevOps & Agile Development to Transform Your Application Testing Pro...
Leverage DevOps & Agile Development to Transform Your Application Testing Pro...Leverage DevOps & Agile Development to Transform Your Application Testing Pro...
Leverage DevOps & Agile Development to Transform Your Application Testing Pro...Deborah Schalm
 
Agile Maintenance
Agile MaintenanceAgile Maintenance
Agile MaintenanceNaresh Jain
 
Optimizing DevOps strategy in a large enterprise
Optimizing DevOps strategy in a large enterpriseOptimizing DevOps strategy in a large enterprise
Optimizing DevOps strategy in a large enterpriseEyal Edri
 
Improving Quality through Continuous Integration - A case study of CollabNet
Improving Quality through Continuous Integration - A case study of CollabNetImproving Quality through Continuous Integration - A case study of CollabNet
Improving Quality through Continuous Integration - A case study of CollabNetVenkat Janardhanam, MS, MBA
 
Pair Programming
Pair ProgrammingPair Programming
Pair ProgrammingNaresh Jain
 
Offshore Agile Maintenance
Offshore Agile MaintenanceOffshore Agile Maintenance
Offshore Agile MaintenanceNaresh Jain
 
Scaling Your DevOps with Chef (December 15th 2016)
Scaling Your DevOps with Chef (December 15th 2016)Scaling Your DevOps with Chef (December 15th 2016)
Scaling Your DevOps with Chef (December 15th 2016)Anthony Hodson
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deploymentDaniel
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Ajay Danait
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentIBM UrbanCode Products
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentNaresh Jain
 
Distributed Agile
Distributed AgileDistributed Agile
Distributed AgileNaresh Jain
 
Building a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilBuilding a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilIBM UrbanCode Products
 
Evolution Of Team Interaction Models
Evolution Of Team Interaction ModelsEvolution Of Team Interaction Models
Evolution Of Team Interaction ModelsNaresh Jain
 
Refactoring Fest
Refactoring FestRefactoring Fest
Refactoring FestNaresh Jain
 
Agile and Secure
Agile and SecureAgile and Secure
Agile and SecureDenim Group
 
Refactoring legacy code driven by tests - ITA
Refactoring legacy code driven by tests -  ITARefactoring legacy code driven by tests -  ITA
Refactoring legacy code driven by tests - ITALuca Minudel
 
Techniques for Automated Software Evolution
Techniques for Automated Software EvolutionTechniques for Automated Software Evolution
Techniques for Automated Software EvolutionRaffi Khatchadourian
 

Mais procurados (20)

Leverage DevOps & Agile Development to Transform Your Application Testing Pro...
Leverage DevOps & Agile Development to Transform Your Application Testing Pro...Leverage DevOps & Agile Development to Transform Your Application Testing Pro...
Leverage DevOps & Agile Development to Transform Your Application Testing Pro...
 
Agile Maintenance
Agile MaintenanceAgile Maintenance
Agile Maintenance
 
Optimizing DevOps strategy in a large enterprise
Optimizing DevOps strategy in a large enterpriseOptimizing DevOps strategy in a large enterprise
Optimizing DevOps strategy in a large enterprise
 
Improving Quality through Continuous Integration - A case study of CollabNet
Improving Quality through Continuous Integration - A case study of CollabNetImproving Quality through Continuous Integration - A case study of CollabNet
Improving Quality through Continuous Integration - A case study of CollabNet
 
Pair Programming
Pair ProgrammingPair Programming
Pair Programming
 
Offshore Agile Maintenance
Offshore Agile MaintenanceOffshore Agile Maintenance
Offshore Agile Maintenance
 
Scaling Your DevOps with Chef (December 15th 2016)
Scaling Your DevOps with Chef (December 15th 2016)Scaling Your DevOps with Chef (December 15th 2016)
Scaling Your DevOps with Chef (December 15th 2016)
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
 
2014 12-10 aimee
2014 12-10 aimee2014 12-10 aimee
2014 12-10 aimee
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel Development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Distributed Agile
Distributed AgileDistributed Agile
Distributed Agile
 
Building a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilBuilding a DevOps Team that isn't Evil
Building a DevOps Team that isn't Evil
 
Evolution Of Team Interaction Models
Evolution Of Team Interaction ModelsEvolution Of Team Interaction Models
Evolution Of Team Interaction Models
 
Refactoring Fest
Refactoring FestRefactoring Fest
Refactoring Fest
 
Agile and Secure
Agile and SecureAgile and Secure
Agile and Secure
 
Refactoring legacy code driven by tests - ITA
Refactoring legacy code driven by tests -  ITARefactoring legacy code driven by tests -  ITA
Refactoring legacy code driven by tests - ITA
 
2012 01-jenkins-udeploy
2012 01-jenkins-udeploy2012 01-jenkins-udeploy
2012 01-jenkins-udeploy
 
Techniques for Automated Software Evolution
Techniques for Automated Software EvolutionTechniques for Automated Software Evolution
Techniques for Automated Software Evolution
 

Semelhante a Stop Writing Assertions! Efficient Verification Methodology

Discovery delivery 中国软件技术大会2011
Discovery delivery 中国软件技术大会2011Discovery delivery 中国软件技术大会2011
Discovery delivery 中国软件技术大会2011Qiao Liang
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionProduct Marketing Services
 
Releasing fast code - The DevOps approach
Releasing fast code - The DevOps approachReleasing fast code - The DevOps approach
Releasing fast code - The DevOps approachMichael Kopp
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery OverviewWill Iverson
 
Troubleshooting Virtualization Cascade10
Troubleshooting Virtualization Cascade10Troubleshooting Virtualization Cascade10
Troubleshooting Virtualization Cascade10Riverbed Technology
 
What's new in CQ 5.3? Top 10 features.
What's new in CQ 5.3? Top 10 features.What's new in CQ 5.3? Top 10 features.
What's new in CQ 5.3? Top 10 features.David Nuescheler
 
David Nuescheler: Igniting CQ 5.3: What's New and Roadmap
David Nuescheler: Igniting CQ 5.3: What's New and RoadmapDavid Nuescheler: Igniting CQ 5.3: What's New and Roadmap
David Nuescheler: Igniting CQ 5.3: What's New and RoadmapDay Software
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static AnalysisElena Laskavaia
 
Effective Strategies for Distributed Testing
Effective Strategies for Distributed TestingEffective Strategies for Distributed Testing
Effective Strategies for Distributed TestingAnand Bagmar
 
Agile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveAgile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveWee Witthawaskul
 
Постоянное тестирование интеграции
Постоянное тестирование интеграцииПостоянное тестирование интеграции
Постоянное тестирование интеграцииSQALab
 
SF DevOps: Introducing Vagrant
SF DevOps: Introducing VagrantSF DevOps: Introducing Vagrant
SF DevOps: Introducing VagrantMitchell Hashimoto
 
Visual Studio 2010 ALM Tools Overview
Visual Studio 2010 ALM Tools Overview Visual Studio 2010 ALM Tools Overview
Visual Studio 2010 ALM Tools Overview Ayman El-Hattab
 
Lanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMLanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMDebora Di Piano
 
10 Reasons Your Software Sucks - Election 2012 Edition
10 Reasons Your Software Sucks - Election 2012 Edition10 Reasons Your Software Sucks - Election 2012 Edition
10 Reasons Your Software Sucks - Election 2012 EditionCaleb Jenkins
 
你真的搞懂了甚麼叫敏捷式開發?
你真的搞懂了甚麼叫敏捷式開發?你真的搞懂了甚麼叫敏捷式開發?
你真的搞懂了甚麼叫敏捷式開發?Jen-Chieh Ko
 
Agile Australia Conference 2011 - Devops live accounts- continuous delivery_st
Agile Australia Conference 2011 - Devops live accounts- continuous delivery_stAgile Australia Conference 2011 - Devops live accounts- continuous delivery_st
Agile Australia Conference 2011 - Devops live accounts- continuous delivery_stNish Mahanty
 

Semelhante a Stop Writing Assertions! Efficient Verification Methodology (20)

Discovery delivery 中国软件技术大会2011
Discovery delivery 中国软件技术大会2011Discovery delivery 中国软件技术大会2011
Discovery delivery 中国软件技术大会2011
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
 
Releasing fast code - The DevOps approach
Releasing fast code - The DevOps approachReleasing fast code - The DevOps approach
Releasing fast code - The DevOps approach
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
 
Troubleshooting Virtualization Cascade10
Troubleshooting Virtualization Cascade10Troubleshooting Virtualization Cascade10
Troubleshooting Virtualization Cascade10
 
What's new in CQ 5.3? Top 10 features.
What's new in CQ 5.3? Top 10 features.What's new in CQ 5.3? Top 10 features.
What's new in CQ 5.3? Top 10 features.
 
David Nuescheler: Igniting CQ 5.3: What's New and Roadmap
David Nuescheler: Igniting CQ 5.3: What's New and RoadmapDavid Nuescheler: Igniting CQ 5.3: What's New and Roadmap
David Nuescheler: Igniting CQ 5.3: What's New and Roadmap
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static Analysis
 
Effective Strategies for Distributed Testing
Effective Strategies for Distributed TestingEffective Strategies for Distributed Testing
Effective Strategies for Distributed Testing
 
Agile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveAgile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer Perspective
 
Постоянное тестирование интеграции
Постоянное тестирование интеграцииПостоянное тестирование интеграции
Постоянное тестирование интеграции
 
How to Introduce Continuous Delivery
How to Introduce Continuous DeliveryHow to Introduce Continuous Delivery
How to Introduce Continuous Delivery
 
SF DevOps: Introducing Vagrant
SF DevOps: Introducing VagrantSF DevOps: Introducing Vagrant
SF DevOps: Introducing Vagrant
 
Creating value using Agile Methods- Nanda Lankalapalli
Creating value using Agile Methods- Nanda LankalapalliCreating value using Agile Methods- Nanda Lankalapalli
Creating value using Agile Methods- Nanda Lankalapalli
 
Electric Cloud
Electric CloudElectric Cloud
Electric Cloud
 
Visual Studio 2010 ALM Tools Overview
Visual Studio 2010 ALM Tools Overview Visual Studio 2010 ALM Tools Overview
Visual Studio 2010 ALM Tools Overview
 
Lanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMLanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALM
 
10 Reasons Your Software Sucks - Election 2012 Edition
10 Reasons Your Software Sucks - Election 2012 Edition10 Reasons Your Software Sucks - Election 2012 Edition
10 Reasons Your Software Sucks - Election 2012 Edition
 
你真的搞懂了甚麼叫敏捷式開發?
你真的搞懂了甚麼叫敏捷式開發?你真的搞懂了甚麼叫敏捷式開發?
你真的搞懂了甚麼叫敏捷式開發?
 
Agile Australia Conference 2011 - Devops live accounts- continuous delivery_st
Agile Australia Conference 2011 - Devops live accounts- continuous delivery_stAgile Australia Conference 2011 - Devops live accounts- continuous delivery_st
Agile Australia Conference 2011 - Devops live accounts- continuous delivery_st
 

Mais de DVClub

Cisco Base Environment Overview
Cisco Base Environment OverviewCisco Base Environment Overview
Cisco Base Environment OverviewDVClub
 
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
Intel Xeon Pre-Silicon Validation: Introduction and ChallengesIntel Xeon Pre-Silicon Validation: Introduction and Challenges
Intel Xeon Pre-Silicon Validation: Introduction and ChallengesDVClub
 
Verification of Graphics ASICs (Part II)
Verification of Graphics ASICs (Part II)Verification of Graphics ASICs (Part II)
Verification of Graphics ASICs (Part II)DVClub
 
Verification of Graphics ASICs (Part I)
Verification of Graphics ASICs (Part I)Verification of Graphics ASICs (Part I)
Verification of Graphics ASICs (Part I)DVClub
 
Validating Next Generation CPUs
Validating Next Generation CPUsValidating Next Generation CPUs
Validating Next Generation CPUsDVClub
 
Verification Automation Using IPXACT
Verification Automation Using IPXACTVerification Automation Using IPXACT
Verification Automation Using IPXACTDVClub
 
Validation and Design in a Small Team Environment
Validation and Design in a Small Team EnvironmentValidation and Design in a Small Team Environment
Validation and Design in a Small Team EnvironmentDVClub
 
Trends in Mixed Signal Validation
Trends in Mixed Signal ValidationTrends in Mixed Signal Validation
Trends in Mixed Signal ValidationDVClub
 
Verification In A Global Design Community
Verification In A Global Design CommunityVerification In A Global Design Community
Verification In A Global Design CommunityDVClub
 
Design Verification Using SystemC
Design Verification Using SystemCDesign Verification Using SystemC
Design Verification Using SystemCDVClub
 
Verification Strategy for PCI-Express
Verification Strategy for PCI-ExpressVerification Strategy for PCI-Express
Verification Strategy for PCI-ExpressDVClub
 
Efficiency Through Methodology
Efficiency Through MethodologyEfficiency Through Methodology
Efficiency Through MethodologyDVClub
 
Pre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si ValidationPre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si ValidationDVClub
 
OpenSPARC T1 Processor
OpenSPARC T1 ProcessorOpenSPARC T1 Processor
OpenSPARC T1 ProcessorDVClub
 
Intel Atom Processor Pre-Silicon Verification Experience
Intel Atom Processor Pre-Silicon Verification ExperienceIntel Atom Processor Pre-Silicon Verification Experience
Intel Atom Processor Pre-Silicon Verification ExperienceDVClub
 
Using Assertions in AMS Verification
Using Assertions in AMS VerificationUsing Assertions in AMS Verification
Using Assertions in AMS VerificationDVClub
 
Low-Power Design and Verification
Low-Power Design and VerificationLow-Power Design and Verification
Low-Power Design and VerificationDVClub
 
UVM Update: Register Package
UVM Update: Register PackageUVM Update: Register Package
UVM Update: Register PackageDVClub
 
Verification of the QorIQ Communication Platform Containing CoreNet Fabric wi...
Verification of the QorIQ Communication Platform Containing CoreNet Fabric wi...Verification of the QorIQ Communication Platform Containing CoreNet Fabric wi...
Verification of the QorIQ Communication Platform Containing CoreNet Fabric wi...DVClub
 
Verification of Wireless SoCs: No Longer in the Dark Ages
Verification of Wireless SoCs: No Longer in the Dark AgesVerification of Wireless SoCs: No Longer in the Dark Ages
Verification of Wireless SoCs: No Longer in the Dark AgesDVClub
 

Mais de DVClub (20)

Cisco Base Environment Overview
Cisco Base Environment OverviewCisco Base Environment Overview
Cisco Base Environment Overview
 
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
Intel Xeon Pre-Silicon Validation: Introduction and ChallengesIntel Xeon Pre-Silicon Validation: Introduction and Challenges
Intel Xeon Pre-Silicon Validation: Introduction and Challenges
 
Verification of Graphics ASICs (Part II)
Verification of Graphics ASICs (Part II)Verification of Graphics ASICs (Part II)
Verification of Graphics ASICs (Part II)
 
Verification of Graphics ASICs (Part I)
Verification of Graphics ASICs (Part I)Verification of Graphics ASICs (Part I)
Verification of Graphics ASICs (Part I)
 
Validating Next Generation CPUs
Validating Next Generation CPUsValidating Next Generation CPUs
Validating Next Generation CPUs
 
Verification Automation Using IPXACT
Verification Automation Using IPXACTVerification Automation Using IPXACT
Verification Automation Using IPXACT
 
Validation and Design in a Small Team Environment
Validation and Design in a Small Team EnvironmentValidation and Design in a Small Team Environment
Validation and Design in a Small Team Environment
 
Trends in Mixed Signal Validation
Trends in Mixed Signal ValidationTrends in Mixed Signal Validation
Trends in Mixed Signal Validation
 
Verification In A Global Design Community
Verification In A Global Design CommunityVerification In A Global Design Community
Verification In A Global Design Community
 
Design Verification Using SystemC
Design Verification Using SystemCDesign Verification Using SystemC
Design Verification Using SystemC
 
Verification Strategy for PCI-Express
Verification Strategy for PCI-ExpressVerification Strategy for PCI-Express
Verification Strategy for PCI-Express
 
Efficiency Through Methodology
Efficiency Through MethodologyEfficiency Through Methodology
Efficiency Through Methodology
 
Pre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si ValidationPre-Si Verification for Post-Si Validation
Pre-Si Verification for Post-Si Validation
 
OpenSPARC T1 Processor
OpenSPARC T1 ProcessorOpenSPARC T1 Processor
OpenSPARC T1 Processor
 
Intel Atom Processor Pre-Silicon Verification Experience
Intel Atom Processor Pre-Silicon Verification ExperienceIntel Atom Processor Pre-Silicon Verification Experience
Intel Atom Processor Pre-Silicon Verification Experience
 
Using Assertions in AMS Verification
Using Assertions in AMS VerificationUsing Assertions in AMS Verification
Using Assertions in AMS Verification
 
Low-Power Design and Verification
Low-Power Design and VerificationLow-Power Design and Verification
Low-Power Design and Verification
 
UVM Update: Register Package
UVM Update: Register PackageUVM Update: Register Package
UVM Update: Register Package
 
Verification of the QorIQ Communication Platform Containing CoreNet Fabric wi...
Verification of the QorIQ Communication Platform Containing CoreNet Fabric wi...Verification of the QorIQ Communication Platform Containing CoreNet Fabric wi...
Verification of the QorIQ Communication Platform Containing CoreNet Fabric wi...
 
Verification of Wireless SoCs: No Longer in the Dark Ages
Verification of Wireless SoCs: No Longer in the Dark AgesVerification of Wireless SoCs: No Longer in the Dark Ages
Verification of Wireless SoCs: No Longer in the Dark Ages
 

Último

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 

Último (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 

Stop Writing Assertions! Efficient Verification Methodology

  • 1. Stop Writing Assertions! Efficient Verification Methodology Dave Whipp – DVClub SV, August 2008
  • 2. Todays Talk An Overview of Methodology Creation Methodology as User Interface Making ESL work as a Hardware Design Flow Evolution of a Interface Definition Language Transaction Level Assertions Transaction Level Debug NVIDIA Confidential
  • 3. A HW Development Flow Big Paper Spec ISS Model Verification Coverage Debug Design Testbench Checkers Tests RTL Synthesis Clocks, Resets C Model Directed Assertions BFMs, Assertions Random TLMs Scoreboard Formal NVIDIA Confidential
  • 4. User Model for Running Tests Build Run Testbench Predictor * Generate Compare Test Behaviors Run DUT NVIDIA Confidential
  • 6. Purpose of a Flow Conceptual Framework Where do things live? How do things work? Keep out of the way Don’t make life difficult for people Define Metaphors Subtly influence future directions Anchor for Variation Give people something to complain about NVIDIA Confidential
  • 7. Two Philosophies Conformity Emphasize Standardization Diversity Emphasize Innovation Synergy or Conflict? NVIDIA Confidential
  • 8. Understanding Variation To understand what to standardize: you need to understand what not to standardize Personal Preferences Technical Aspects of the Designs Supporting Legacy Seeking the Next Big Thing NVIDIA Confidential
  • 9. Personal Preferences Emacs! vi NVIDIA Confidential
  • 10. Personal Preferences Choice of editor doesn’t affect others At least, not much Choice of scripting language has greater impact But is encapsulated A script’s users don’t see the implementation language Choice of HVL affects whole team Can’t write “E” tests for a “Vera” testbench! But a unit testbench isn’t seen by other units A good flow will allow encapsulation of preferences I can go to any unit and build & run its tests Enables rapid localization of infrastructure issues NVIDIA Confidential
  • 12. Technical Characteristics P Graphics Pipe C I Frame E Video Buffer Off-chip Memory NVIDIA Confidential
  • 13. Reuse Vs Stagnation Reuse considered Good Avoid reinventing the wheel Build on the shoulders of giants Reuse invites Inertia Reuse can propagate dependencies Dependencies make things harder to change Resistance to change is known as inertia Inertia can lead to Stagnation Improper reuse accumulates dependencies Reused code that is not understood will bit-rot To avoid stagnation, inject agitation NVIDIA Confidential
  • 14. Are Single Paradigm Projects Possible? Paradigm 1 Unit A Unit B Unit B Unit B Paradigm 2 Unit C Unit C Paradigm 3 Unit D time Project 1 Project 2 Project 3 NVIDIA Confidential
  • 15. Watch some Real Users NVIDIA Confidential Image courtesy of DAZ Productions
  • 16. How to “Watch” Users Meetings and Discussions Coffee-Break Grousing Bug Reports Keep Track of Support Requests create FAQs VNC (Remote Desktop) Instrumentation NVIDIA Confidential
  • 17. Build Time Distribution: 10,000 per sample 100% 90% 80% > 1 hour < 1 hour 70% < 30 min 60% < 15 min < 10 min 50% < 5 min 40% < 2 min < 1 min 30% < 30 sec 20% < 20 sec 10% 0% NVIDIA Confidential
  • 18. Build Time Distribution: 1000 per sample 100% 90% 80% > 1 hour < 1 hour 70% < 30 min 60% < 15 min < 10 min 50% < 5 min 40% < 2 min < 1 min 30% < 30 sec 20% < 20 sec 10% 0% NVIDIA Confidential
  • 19. Part 2 ESL for Transaction Design
  • 20. A HW Development Flow (BAD) Big Paper Spec ISS Model Verification Coverage Debug Design Testbench Checkers Tests RTL Synthesis Clocks, Resets C Model Assertions Directed BFMs, Assertions Randoms TLMs Scoreboard NVIDIA Confidential
  • 21. A HW Development Flow (BAD) Big Paper Spec ISS Model Verification Coverage Debug Design Testbench Checkers Tests RTL Synthesis Clocks, Resets C Model Assertions Directed BFMs, Assertions Randoms TLMs Scoreboard NVIDIA Confidential
  • 22. A HW Development Flow (Better) Small Paper Spec Coverage Triage ISS Model ESL Verification C Model Debug Interfaces Testbench Randoms Validation Design Assertions TLMs RTL Scoreboards Directed Tests BFMs Assertions Clocks, Resets Synthesis NVIDIA Confidential
  • 23. Who Writes Assertions? Designers Bottom Up Assumptions Verification Engineers Top-down Intent NVIDIA Confidential
  • 24. Who Writes Assertions? Designers Bottom Up Assumptions Verification Engineers Top-down Intent Architects The Specification Top Down Assumptions Bottom Up Intent NVIDIA Confidential
  • 25. Where to Write Assertions The RTL Inline Bound The Testbench Scoreboard Environment E.g. Post Process Log file NVIDIA Confidential
  • 26. Where to Write Assertions The RTL Inline Bound The Testbench Scoreboard Environment Post Process Log files The Specification C Models (?) NVIDIA Confidential
  • 27. Where To Write Specification Assertions Functionality Model RTL Design Performance Model NVIDIA Confidential
  • 28. Where To Write Specification Assertions ISS Model Transaction Model Correlation RTL Model Design Performance Model Debug/Triage Model NVIDIA Confidential
  • 29. Where To Write Specification Assertions Transaction Model Structural RTL Model Design Performance Model NVIDIA Confidential
  • 30. Interfaces Vs State Two approaches to comparing models: Compare “Architectural State” Registers/flops within the design whose existence is required by the specification Compare externally visible behavior Compare interface traffic B. F. Skinner? NVIDIA Confidential
  • 31. Birth of an IDL Interface Description Language Initially, a language just to define signals Interface a2b clock clk down U valid 1 up U busy 1 down U cmd 24 down U data 32 NVIDIA Confidential
  • 32. Evolution of an IDL Quickly added flow-control protocol abstraction Interface a2b clock clk flow valid_busy down U cmd 24 down U data 32 From this we can generate: Testbench components (BFMs: producers, consumers) Protocol Assertions … NVIDIA Confidential
  • 33. Continued Evolution of an IDL Separation of packet structure from interface group SOP down U cmd 24 group MOP down U data 32 group EOP down U checksum 32 Interface a2b clock clk flow valid_busy packet SOP, MOP, EOP NVIDIA Confidential
  • 34. Transaction Assertions in YACC valid_interface_traffic: | valid_interface_traffic transaction; transaction: begin middle end; begin: SOP; middle: | middle MOP; end: EOP NVIDIA Confidential
  • 35. Cycle Level Assertions in SVA clk cmd SOP MOP MOP EOP sequence valid_trans; (cmd==SOP) (##1 cmd != SOP && cmd != EOP) [*0:$] ##1 cmd == EOP endsequence a_well_formed_transaction: assert @(posedge clk) cmd == SOP |-> sequence (valid_trans) NVIDIA Confidential
  • 36. Transaction Level Assertions in SVA clk valid cmd SOP MOP MOP EOP sequence valid_transaction; (cmd==SOP) (##1 cmd != SOP && cmd != EOP) [*0:$] ##1 cmd == EOP endsequence NVIDIA Confidential
  • 37. Transaction Level Assertions in SVA clk valid busy cmd SOP MOP MOP EOP event sample; always @(posedge clk) if (valid && ! busy) -> sample assert @(sample) cmd == SOP |-> sequence (valid_transaction) NVIDIA Confidential
  • 38. Transaction Level Assertions in SVA clk valid busy cmd SOP MOP MOP EOP event sample; always @(posedge clk) if (valid && ! busy) -> sample assert @(sample) cmd == BEGIN |-> sequence (valid_transaction) NVIDIA Confidential
  • 39. Grammer using IDL assert “temporal representation” data SOP => past( EOP ) data MOP => past( SOP | MOP ) data EOP => past( SOP | MOP ) assert “bnf representation” bnf SOP -> MOP ** past( SOP.length-1 :sample( SOP ) ) -> EOP NVIDIA Confidential
  • 40. Multi-Unit Assemblies A B C D E F G a2b b2c c2d d2e e2f f2g A simple pipeline NVIDIA Confidential
  • 41. Multi-Unit Assemblies a2b b2c c2d A B C D d2e E F G e2f f2g Simple rearrangement NVIDIA Confidential
  • 42. Multi-Unit Assemblies a2b b2c c2d A B C D d2e E F G e2f f2g Identify units with similar behaviors NVIDIA Confidential
  • 43. Multi-Unit Assemblies d2be cf2d D B be2cf C a2be E F A cf2g G Extract common behavior into unified components be2cf === b2c + e2f NVIDIA Confidential
  • 44. Reusing Interface Definitions A B C D E F G D B C E F A G How to maximize reuse between these two architectures? NVIDIA Confidential
  • 45. Packets as Traffic Streams group b2c down U data 32 group e2f down U data 32 Interface be2cf clock clk flow valid_credit packet b2c, e2f NVIDIA Confidential
  • 46. Time Units of Temporal Expressions Group b2c down U value 4 assert value != past( value ) Group e2f down U value 4 assert ( value == 0 ) => ( past( value ) != 0 ) Interface be2cf packet b2c, e2f assert b2c => ( b2c.value != past( b2c.value :sample(b2c) ) ) assert past( e2f && e2f.value == 0 ) => (b2c && b2c.value != 0) NVIDIA Confidential
  • 47. Example Renderer Memory NVIDIA Confidential
  • 48. The Traffic group mem_write down U address 16 down U data 1 group sync down U shape 2 enum SQUARE, CIRCLE, TRIANGE, BLANK down U radius 3 NVIDIA Confidential
  • 49. Accumulate Memory State group mem_write down U address 16 down U data 1 assign mem[ x = 0 .. 15 ][ y = 0 .. 15 ] = past( data :sample( address == {x,y} )) NVIDIA Confidential
  • 50. Add Predicates group_more mem_write assign is_circle[ r = 0..7 ] = “&&”( [ x = -8 .. 7 ] [ y = -8 .. 7 ] mem[ x+8 ][ y+8 ] == ( x**2 + y**2 <= r**2 ) ) NVIDIA Confidential
  • 51. Define the interface interface render2memory clock mem_clk flow valid_busy packet sync, mem_write assert “correct sync shape” sync && sync.shape == CIRCLE => past( mem_write.is_circle[ sync.radius ] ) NVIDIA Confidential
  • 52. Example Renderer Memory assert “correct sync shape” sync && sync.shape == CIRCLE => past( mem_write.is_circle[ sync.radius ] ) NVIDIA Confidential
  • 53. Summary Efficient Verification Understand Variation Encourage Diversity avoid anarchy Encourage Standardization avoid stagnation Frontload The Schedule Provide Verification with Executable Spec (ESL) C Model, Correlation Model (pre validated) Interfaces, Transactions (definitions for code generators) Assertions, Testpoints (neutral language, pre validated) NVIDIA Confidential
  • 55. Summary Architects should write assertions Validated assertions are input to Verification Assertions must be directly reusable across models Manual recoding invites errors Explicitly model the structure that is common to architectural models and to design Tie assertions to these common points NVIDIA Confidential
  • 56. Threading Models Thread Follows Resource Traditional SystemC approach Thread Follows Transaction Think “Multithreaded ISS” Cycle-based Model The “Old” way of doing things A non-threaded version of “thread follows resource” Different models are convenient at various times But SystemC forces you to commit early to one approach Therefore need extra code for transaction level debug NVIDIA Confidential
  • 57. 70% 70% of schedule is Verification What is correct figure 0% synthesize architectural models, constraints Correct by construction! 100% synthesize verification models, constraints no design needed! NVIDIA Confidential
  • 58. Transactions Vs Cycles Data min_val (Addr a1, Addr a2) Pipelined Bus { Data d1 = mem_read(a1); Data d2 = mem_read(a2); t2 t3 t4 t1 t5 t6 if (d1 < d2) Address a1 a2 return d1; else Data d1 d2 return d2; } NVIDIA Confidential
  • 59. Unit Level System Testing Graphics Pipeline (Transaction Model) Stage Stage Stage N-1 N N+1 RTL DIFF Unit NVIDIA Confidential
  • 60. Avoiding Stagnation New Challenges New Tools New Platforms New People New Ideas Refactoring Testability D.R.Y. NVIDIA Confidential