>

 

 

Advanced Verification Methods Using VHDL

Course duration: 3 days

Course Curriculum.

This three-day interactive course teaches you how to overcome the "white page syndrome" – Now that you know VHDL, what’s next?  In this class, you will go through the step-by-step process required to plan and implement a sophisticated, self-checking verification environment for first-time success.

The course is rich in methodology hints and tricks used by our verification experts who regularly verify 10+ million gate systems – experts with knowledge that only comes from being the independent voice in the EDA verification industry.  With the help and guidance of our experienced VHDL verification consultants, you will learn:

  1.

The basics of writing testbenches presents how functional verification fits into the overall design process. The experienced RTL designer or VHDL novice is then introduced to the concepts of applying stimulus and observing response in a more sophisticated fashion than using simple synchronous test vectors.

2.

User-defined types, usually not synthesizable, are very powerful for writing testbenches. Enumerated types, records, and arrays, as well as subtypes constraining them are covered. Packages are introduced as the mechanism to share and distribute type declaration and their associated subprograms.

  3.

Advanced verification techniques are presented to minimize maintenance and code duplication between numerous testbenches. Complex verification sequences are decomposed into high- and mid-level service procedures on top of the low-level procedural interface provided by the bus-functional models.

  4.

The advanced language features offered by access types, generate statements and concurrent procedure calls create opportunities for writing more efficient verification structures. Access types and linked lists can be used to efficiently model large memories, while generate statements can be used to easily describe regular structures.

Who should attend?

If you need to verify a design with a high-degree of confidence, write a test plan, or implement testbenches in VHDL, then this course is for you.  Because of the advanced nature of this course, you must have prior knowledge of the fundamentals of VHDL before attending this course.

Prerequisites for this class.

Successful completion of Verifica’s course Introduction to VHDL Verification Methods or equivalent experience with VHDL.

The learning environment.

This is an interactive course with numerous labs that cement the concepts taught in the lecture portion of each session. Students will use their choice of the latest version of VHDL simulators from Synopsys (VCS MX), Cadence (Incisive and NC-VHDL), and Mentor Graphics (ModelSim).

How to attend this course.

You can attend a regularly scheduled public course, or schedule your own private session at your facility.  To find out more, contact us toll free now at , or contact us by Clicking Here.

Detailed course outline.

This course is structured as multiple sessions taught over three days. Interactive labs and group exercises are distributed throughout the course. For more information about course content and structure, or if you're interested in customization, please call us toll free at , or contact us by Clicking Here.

 

Section 1:

Introduction to Testbenches

 

Functional verification in the overall design process. How does it differ from formal verification or hardware testing? How do you make sure that you verify against the design intent?

 

VHDL libraries

 

 

  • How to configure your VHDL tools to understand where a particular library is located.

  • Referencing library units in other libraries.

  • Structuring your model across multiple libraries.

 

Lab Session

 

File input using TEXTIO. How to write programmable testbenches.

 

Lab Session

 

How to abstract operations using bus-functional models. Embedded output validation in a self-checking bus-functional model.

 

Lab Session

 

Bus-functional models for CPU buses and interfaces. How to model an asynchronous protocol and return data uninterpreted.

 

Lab Session

 

Turning a testbench into a component of a regression suite. How to write a testbench tolerant of changes in latency, throughput or clock cycle boundaries. Adding observability inside a model and white-box verification.

 

Lab Session

     
 

Section 2:

User-Defined Types

 

Enumerated types: how to define them and how to use them. What are they useful for?  Overloading an enumeral. Using a subtype to constrain the range of a enumerated type. Predefined enumerated types.

 

Lab Session

 

Defining unconstrained and multi-dimensional arrays. Array attributes and literals. Using an enumerated type to index an array. Defining standard array sizes using subtypes.

 

Lab Session

 

Using record to keep related information of different types together. How to declare and use a record type. Record literals or aggregates. Comparing records and arrays.

 

Lab Session

 

Overloading functions and procedures to enhance readability and conserve the name space. Publishing and sharing useful types and subprograms using packages. Dependencies on package and their bodies. Predefined packages.

 

Lab Session

     
 

Section 3:

Advanced Verification Techniques

 

Specification of a design that needs to be verified.

 

Lab Session: design a verification plan

 

Modeling asynchronous protocols and verifying that timing constraints are met. Indicating completion status and error recovery.

 

Lab Session

 

Assigning signals in a procedure via side-effects. Implied signal drivers and restrictions on locating the procedure declaration. Arguments of kind signal and distributing bus-functional models in packages.

 

Lab Session

 

Handling exceptions such as reset. Aborting a bus-functional procedure.

 

Lab Session

 

A complete set of procedures implementing a bus-functional model for a CPU interface.

 

Lab Session

 

Writing an initialization procedure to minimize the amount of duplicated code between different testbenches.

 

Lab Session

 

Writing a procedure verifying an arbitrary memory-mapped register and describing the characteristics of a particular registers. Dealing with unpredictable or incompatible array bounds in unconstrained formal subprogram arguments.

 

Lab Session

 

Implementing the testcase verifying the correct implementation of the memory-mapped register interface. How to use strong typing to your advantage: choosing the appropriate data types to minimize the probability of run-time errors.

 

Lab Session

 

Writing a configurable bus-functional model. Choosing the appropriate data types to represent configuration data. Verifying the data transmission capabilities of the design.

 

Lab Session

 

Stressing the design at maximum speed. Eliminating wait states created by output checking. Implementing a fork/join control structure.

 

Lab Session

 

Timing restrictions imposed by slave bus-functional models. Ensuring that no data is missed by a slave model.

 

Lab Session

     
 

Section 4:

Advanced Language Constructs

 

Access types: pointers in VHDL. Allocating, accessing, then de-allocating dynamic memory. Using access types to implement a linked list to model a large memory

 

Lab Session

 

Using concurrent procedure calls to implement small single-process entity/architectures without the additional overhead of additional library units, a component declaration and a configuration statement.

 

Lab Session

 

Using the if-generate statement to create models with optional behavior. The difference between if-generate statements and ifdef preprocessor directives. Recursive hardware models. Describing regular, repetitive structures using the for-generate statement. Generate statements and unconstrained ports. Configuring instantiations inside generate statements.

 

Lab Session

 

Debugging contradictions.

 

Lab Session

     

Schedule your Verifica course today.

There is no substitute for a private course taught on-site at your facility, particularly when you have 6 or more engineers to train. Simply put, for large groups it’s always less expensive for us to come to you than the other way around. And if you want a custom course, we can arrange it. Do you need to squeeze a four day course into three? No problem. We know how to do it without compromise. And if you need a course on short notice, we can be there sooner than you think. For more information, contact us at:

Verifica – the right kind of verification training, tuned to your needs.  Contact us now.