Title: TestBencher Pro
1TestBencher Pro
- Graphical Test Bench Generation for VHDL,
Verilog, OpenVera, e, and C!
21.0 TestBencher Pro Overview
- Provides specification based verification
- Generates VHDL, Verilog, OpenVera, e, and C
test benches from graphical timing diagrams - Resulting code is modular, easy to debug, and
compatible with all major VHDL and Verilog
simulators - Language independent timing diagrams enhance the
ability of engineers to share data across
projects - The graphical interface speeds development for
both expert and novice users, dramatically
reducing the time necessary to create and
maintain test benches
3Specification Based Verification
- Problem Verify an SOC Model that interacts with
different protocols
Solution Use TestBencher to define the
protocols, and then automatically generate the
transactors, transaction data, and logic to
verify the results.
1.1 Overview
4Code Generation Process
- Create bus-functional models using
- Timing Diagrams to define reusable timing
transactions - Top-level template defines transaction sequence
and monitors MUT status
1.2 Overview
5Transaction Level Modeling
- TestBencher creates bus-functional models from a
set of user created transactions. - Examples of transactions are PCI bus cycles or
microprocessor read and write cycles. - Define each transaction with a timing diagram
- Define sequence of transaction calls
- tb_write.Execute_once('h20, 'hEE, 10)
- tb_read.Execute_once('h20, 'hEE, 10)
-
- User writes code at the transactional level
1.3 Overview
6Timing Diagrams Communicate Transaction Behavior
- HDL Code
- Simplest signal behavior difficult to communicate
- Code complexity greatly increases for
- response checking code
- parallel execution blocks
- module testbench
- ...
- task write(addr,data,csb2dbus)
- input 70 addr
- input 150 data
- input 10 csb2dbus
- begin
- ABUS addr
- _at_(posedge CLK0) //required abus2csb setup
- CSB 1'b0
- repeat (csb2dbus) _at_CLK0
- DBUS data
- _at_(posedge CLK0)
- CSB 1'b1
- DBUS 'hz
- ABUS 'hz
- end
- endtask
- ...
- Graphical Representation
- Concisely communicates transaction behavior
1.4 Overview
7Transactions are Reusable
- Supports State and Timing parameter variables
- Set parameters at runtime with function calls
- Set parameters from data files for regression
testing - Express runtime-computable timing relationships
between signal transitions
State Parameters Apply_tbread('h20, 'hEE,
10.5) Timing Parameter
1.5 Overview
8Transaction Manager
- Transaction Manager maintains a queue of
transactions to be executed. Accepts transactions
from many sources
- Transactions read from a file
- Other BFM models in the verification hierarchy
- Transaction Apply calls made by the user in the
template file - Randomly generated transactions produced by the
Transaction Generator - Transactions spawned by other transactions
1.6 Overview
9Transaction Monitor Generator
- Transaction Monitor and Generator work together
to accumulate statistics on what transactions
occur, and then dynamically adjust the
randomization constraints to ensure important
test cases are covered.
1.7 Overview
102.0 Advanced Features
- Hierarchical BFM Components
- Golden Reference Model
- Automatic generation of file I/O code
- Fast conversion from time- to cycle-based test
benches - External Simulation and Compiler Control
11Hierarchical BFM Architecture
- TestBencher Pro uses a project file to control
the generation of a bus-functional model - Projects can be included hierarchically in other
projects - Multiple Instantiation of test bench components
- Multiple Port Testing supported
- Reuse test bench models as sub-components to
another test bench model
2.1 Advanced Features
12Golden Reference Model
- Golden Reference Models are high-level
descriptions of a system that are used to
automate the verification of system output - Generates all of the stub functions for golden
model - User writes behavioral code inside stub functions
- Automatically compares MUT output against golden
reference model during simulation and reports
errors
2.2 Advanced Features
13Automatic Generation of File I/O Code
- Test-vector spreadsheet format used for file I/O
- Read from or Write to a record structure
- Import state and timing information
- Export data collected by samples
- Quickly generate tedious file I/O code using file
associations - Easily swap between using a test-vector file or
function calls to control transaction state and
timing parameters
2.3 Advanced Features
14Switching between Time-based and Cycle-based test
benches
- Supports time and cycle-based test benches
- Specify a clock signal to switch to cycle based
- All signals, delays, samples, and markers have
the clocking feature - Supports sensitivity to multiple clock edges
- positive, negative, or both clock edges
- Supports multiple clocks
2.4 Advanced Features
15External Simulator Control
- TestBencher Pro controls compilation and
simulation - One environment for test development and design
debug - Handles simulators and compilers running on
different operating systems and remote machines - Graphically display simulation results and log
files
2.5 Advanced Features
16VHDL, Verilog, C
- C Library Support using TestBuilder
- Constrained Random Data Structure Generation
- External control of simulator and compiler
2.6a Advanced Features
17VERA and OpenVera Support
- Graphical environment for generating OpenVera
test benches - Data structure code generation for classes,
arrays, associative arrays, and queues. - Samples generate OpenVera expects.
- Constrained Random Data support through a
graphical interface in the data structures
dialog. - Remote execution of VERA and HDL simulator for
seamless development and debug
2.6b Advanced Features
18Specman Elite and e Support
- Graphical environment for generating e test
benches - Data structure code generation for structs,
arrays, associative arrays, and queues. - Samples generate e Temporal Expressions
- Constrained Random Data support through a
graphical interface in the data structures
dialog. - Remote execution of Specman Elite and HDL
simulator for seamless development and debug
2.6c Advanced Features
193.0 Transaction Examples
- TestBenchers Transactions can express complex
protocol behavior - Sequence Recognition with Graphical Samples
- Trigger Delayed Events and Conditionally Sample
- Constrained Random Data Structures
- Concurrent Timing Transactions
- TestBencher has been used to generate bus
functional models for some of the most advanced
systems - PCI Burst Mode
- ATM File Output
- ARM Pipelining Transactions
20Trigger Delayed Events and Conditionally Sample
Values
- Graphical Samples can be used to
- Trigger Delays and other Samples to set up a
logical path of diagram execution and error
checking. - Write sampled data to memory which can be used to
drive states or used to compare against other
states later in the same simulation or in another
simulation run. - These triggered events can be chained
3.1 Transaction Examples
21Sequence Recognition
- Use graphical Samples to monitor MUT during
simulation - Verify Sequence of Events before allowing
transaction to proceed. - Verify a Particular Cycle before responding
3.2 Transaction Examples
22Constrained Random Data Structures
- Create Data Structure once and use it anywhere in
the test bench project or save it in a reusable
library - Control Random Data generation for each field
- Create Memories, FIFOs, and Stacks for driving
Tests
3.3 Transaction Examples
23Concurrent Timing Transactions
- Sequencer Process controls order in which
transactions are applied to the MUT. - Transactions can run sequentially in a blocking
mode or concurrently. - Transactions can be set to run once or run in a
continuously looping mode - Transaction calls are automatically generated
using a dialog interface
3.5 Transaction Examples
24PCI Burst Mode
- This diagram models a PCI master device.
- A loop is used to parameterize the number of data
cycles to perform.
3.6 Test Bench Examples
25ATM File Output
- This slave transaction receives data cells from
an ATM switch. - Samples are used to output the ATM cells to a
spreadsheet formatted file.
3.7 Transaction Examples
26ARM Pipelining Transactions
- This diagram models an ARM master device.
- The pipeline nature of the bus is simulated using
a set of queues and cycle loops. The value of the
data bus is read by samples and then stored in a
queue. The data bus value is then read from the
queue for write cycles.
3.8 Transaction Examples
274.0 Basic Design Flow
- Four-step process to create test benches
- 1) Add model under test and extract port
information - 2) Create re-usable transactions from timing
diagrams - 3) Sequence transactions in top-level module
- 4) Generate test bench
28Step 1 Add Model Under Test and Extract Port
Information
- Add Model Under Test (MUT) to project
- Verilog and VHDL parsers
- automatically extract port information
- automatically extract signal properties
- Data extracted at any level of the MUT
4.1 Basic Design Flow
29Step 2 Create Reusable Timing Transactions
- Use built-in timing diagram editor to create
reusable timing transactions - Parameterize state and timing values using
variables - Color indicates driven/expected states in
waveform - Samples verify and react to response of model
under test
4.2 Basic Design Flow
30Step 3 Sequence Transactions in Top Level Module
- Top-Level code generated from template files
- Instantiate the model under test
- Add transaction calls. For example,
- Apply_tbread()
- (Optional) Add any other top-level processing
code. For example, - for or while loops
- function calls
-- Sequencer Process process variable delay0
real begin tb_initialize_SweepTest(SweepTest)
Apply_gClock_looping_nowait(SweepTest,
100.0) for i in 0 to 5
loop delay0 real (32 - (i 5))
Apply_tbwrite(SweepTest, xF0,
xAE, delay0) Apply_tbread(SweepTest,
xF0, xAE, delay0) end
loop wait Abort_gClock(SweepTest) end
process
4.3 Basic Design Flow
31Step 4 Generate Test Bench and Simulate
- Automatically generate test bench
- Template macros are expanded
- User written code remains
- Test Bench files needed for Simulation
- One file for top-level test bench
- One file for each timing diagram (transaction)
4.4 Basic Design Flow
325.0 Graphical Constructs
- Simple set of graphical constructs naturally
express timing and bus protocols - Waveforms - stimulus and expected response
- Variables - parameterize state and timing values
- Delays - parameterize time delays
- Samples - verify and react to output from MUT
- Markers - model looping constructs, insert native
HDL subroutine calls, or end transaction
33Waveforms Provide Stimulus and Expected Response
Information
- Several methods available for waveform entry
- Graphically draw stimulus/response waveforms
- Generate waveforms using RTL-level equations
- Import from simulators VHDL, Verilog, SPICE
- Import from logic analyzers Agilent, Tektronix
- Import state information from spreadsheets
5.1 Graphical Constructs
34Variables Parameterize State Values
- State Variables control bus states during
simulation - Variables can be read from a file like
_at_readData.dbus70 passed into the transaction
as a function parameter like addr - Variables can be specified as conditional
expressions including Boolean equations that
reference state variables and user-defined data
structures.
5.2 Graphical Constructs
35Delays Parameterize Time Values
- Delays can conditionally control when edges occur
- Delay values can be time or cycle-based
- Delay values can be passed in from a function
call or read in from a file
5.3 Graphical Constructs
36Samples Verify MUT Output
- Sample constructs can monitor and perform actions
based on the data sampled - Sample can work at a single point or over a
windowed area - They can perform relative to the beginning of the
transaction or relative to another event in the
diagram.
5.4 Graphical Constructs
37Markers used for Control Looping Sections of
Transactions
- Specify the End of Transaction
- Create loops
- Insert HDL code
- Useful for generating conditional burst type
transactions
5.5 Graphical Constructs
38Summary
- TestBencher Pro reduces the time required to
create and maintain test benches in VHDL,
Verilog, OpenVera, e, and SystemC. - Features include external simulator control,
sequence recognition, conditional execution,
hierarchical, and multiple instantiation of test
bench projects - TestBencher can model the most advanced
verification problems PCI, ARM, and ATM - Easy four-step process to create a test bench
- Timing Diagrams are a natural way to express
timing protocols.
39Contacts
- Visit our Web site at www.syncad.com
- Call us at 1-540-953-3390
- Download and install, then request a free 30-day
license