15
Creating Test Environments HDL Model HDL Testbench Simulation Engine API stimulus check Testbench Program stimulus check •Non-HDL languages may be used to control testing process •Provide software abstractions not available in HDLs

Creating Test Environments

  • Upload
    calder

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

HDL Model. stimulus. Testbench Program. API. stimulus. check. check. HDL Testbench. Simulation Engine. Creating Test Environments. Non-HDL languages may be used to control testing process Provide software abstractions not available in HDLs. HDL (Verilog) Test Environments. - PowerPoint PPT Presentation

Citation preview

Page 1: Creating Test Environments

Creating Test Environments

HDL Model

HDL Testbench SimulationEngine

APIstimulus

check

TestbenchProgram

stimulus

check

•Non-HDL languages may be used to control testing process•Provide software abstractions not available in HDLs

Page 2: Creating Test Environments

HDL (Verilog) Test Environments

•HDLs provide basic facilities for testbench development•Hierarchy is primarily structural•No classes

Page 3: Creating Test Environments

External Control in Verilog

•$readmemh allows files to be read•Interactive control is weak in language (must use simulator)

Page 4: Creating Test Environments

Behavioral Hierarchy

•Tasks (and functions) enable behavioral hierarchy

STIM module

Page 5: Creating Test Environments

Other Verilog Testbench Features

Debug Trace File Generation

•$display/$fdisplay print data to stdio/files•$monitor/$fmonitor print data whenever signals change

Randomization - watch out for seed values

•$random produces uniform distribution•$dist_normal(), $dist_exponential, $dist_poisson

Page 6: Creating Test Environments

C/C++ Testbench

Benefits

•Every engineer can write C/C++ code•Can use classes, pointers, and other software features

Disadvantages

•Control flow between HDL and C/C++ domain in confusing•Partitioning is an issue•Difficult to make HW tests in SW language (time, structure, etc)

Page 7: Creating Test Environments

Integrated C/C++ Testbench

•HDL Simulator calls C/C++ functions- Program Language Interface (PLI) for Verilog- Foreign Language Interface (FLI) or VHPI for VHDL

Ex. The write_command task could be written in C

•C/C++ performs sub-functions (i.e. make test data, compare test response) but top control flow is in HDL

•C/C++ can be invoked implicitly on events, at time steps

•May be hard to follow control flow when invocation is implicit

Page 8: Creating Test Environments

Separated C/C++ Testbench

•Control flow switches between C/C++ and HDL at each time step•HDL simulator keeps track of signal values over time•Control flow switch at two explicit points, easier to follow

Page 9: Creating Test Environments

High-Level Verification Languages

Common Features

•Temporal Expressions - check for event sequences over time

•Constrained Random Test Generation - need to weight the occurrence of events on inputs

1. Constrain the domain: x >5 OR x <22. Weight the domain: x = 1 (50%), x=2 (25%), x=3 (25%)3. Constrain mutual domains: x + y < MAXVAL4. Temporal constraints: valid0 = 1 => valid1 = 0

Page 10: Creating Test Environments

High-Level Verification Language Features

•Coverage Collection - Quantify the amount of the design covered during testing

•Automatic Garbage Collection (Memory Management) - No malloc, memory leaks, etc.

•Interpretation and Compilation - Interpretation is often useful during interactive debugging

Page 11: Creating Test Environments

OpenVera

•Supported by Synopsys•Object-Oriented language•Random variables can be defined with constraints/weights

Page 12: Creating Test Environments

Context Free Exressions in OpenVera

•Backus-Naur Form (BNF) expressions can be used to restrict test generation

•Weights are possible too

Page 13: Creating Test Environments

E Language

•Owned by Cadence (previously Verisity)•Also object-oriented•Standard subclass hierarchy allowed with “like”

Page 14: Creating Test Environments

Extension and Constraints in E

•“extend” adds fields to a struct

•“keep” constrains field values

•Extend can be useful when different data is used for different tests•May be hard to keep track of all variations

Page 15: Creating Test Environments

System C Language

•Another object-oriented HVL•It is C++ with extra classes to support hardware concepts•Great for cosimulation of HW/SW systems