Professional Documents
Culture Documents
Obsidian Software
Founded in 1997 by 3 ex-AMDers
Located in Austin, TX
Bootstrapped Private Company
Focus: Processors & Verification
Made Inc.500s List of Fastest Growing Companies
Obsidians Mission
Random Test Generators
Standard Architectures
Custom Architectures
Simple Processors
Verification Services
Resource Expenditure
Task
Tool/Solution
Required Effort
Correctness Checking
ISS
Testbench Development
Memory Model
Low
Coverage Measurements
Architectural
Moderate
Implementation
Moderate
Code
Moderate
Directed Tests
High
High
Engineers Looking at
Waveforms
High
Stimulus Generation
Debug Effort
Model of Operation
RAVEN is:
A tool to intelligently generate assembly instructions to provide
test stimulus for a microprocessor
A full featured processor specific random test generator
Under complete user control: intelligently direct tests into
difficult to reach areas
Extensible users can add new instructions
10
Architecture
Architecture Description
Extracted from Headers or
Processor Documentation
XML
GUI
XML
ISS
Dynamically linked
shared object
C API
RAVEN Core
XML
C++ libraries
C++ API
(function overrides)
Template File
generated by
GUI or text editor
Legend
Customer
Architectural Layer
Linked in
11
Customer or Obsidian
Obsidian
Generated
Business Model
Standard Processors
Proprietary Processors
12
Pricing Considerations
Product or Service
Description
RAVEN licensing
Development services
Verification Services
Intellectual Property
13
Solution
Structure
Relationship
Trusted
Advisor
Strategic
Partner
Engagement Activities
Impact on Success
Best
Proactive services insure
success due to identification of
key areas of focus and
dedication to maximum
verification productivity
Better
Enhanced development
support to bolster productivity
at all phases in the design cycle
RAVEN Licensing
CPU Arch layer
development
Std. Software Support
RAVEN training
Good
High-end solution focused
specifically on your processor
feature set
Technology
Provider
14
Engagement Model
Customer and Obsidian agree in principle to move
forward together
Obsidian provides on-site 1-2 day tutorial for detailed |
technical evaluation with following objectives:
15
Engagement Model
Phased delivery (3-9 months)
Integrate core ISS from customer
Deliver architecture layer in multiple phases
16
In Summary
Collett International Research 2002 Data:
39% First SI success
60% of initial failures caused by logical / functional problems
82% - Design errors
47% - Specification errors
14% - Imported IP problems
50% - 70% of resources consumed in verification
17
In Summary
Verification is Usually on the Critical Path to SI
Failure Costs Ranges From Bad (lots of money)
to Very Bad (lost market)
18
Spins
A few months time to market
Delay of next project
Loss of confidence in the market
RTG Methodology
19
Overview of Methodology
Use random or mostly random templates to
generate initial coverage
Define coverage points based on design knowledge
Write directed-random templates to hit missed
coverage points
Review all templates and relax restrictions where
possible
20
21
Verification Space
Covered
behaviors
Expect about
80% coverage
22
White-box
Areas of greatest change or risk
Can be sensitive to implementation
Points are defined by designers
23
Design
knowledge and
risk assessment
determines
placement
and density
of coverage
points
24
Coverage Points
25
RAVEN-GCS Introduction
27
RAVEN-GCS Features
Random test generator
Fully-random, semi-directed, and fully-directed
Generator knows full state of the processor at each instruction
boundary
Test files contain all register and memory updates
Full definition of the initial register and memory image
Full report of the final register and memory image
Never generates an invalid test
28
RAVEN-GCS Features
Easy to use
29
RAVEN-GCS Features
Expandable to all architectures
30
RAVEN-GCS Features
Biases or constraints for all supported features
31
Instruction
Operands
Addresses
Number generation
Operating modes
Register values
RAVEN-GCS Features
Data files are used to define architecture
Much of the architecture can be modified without recompiling
Features can be added as they become available in the RTL
Easy to work around known RTL or simulator bugs
32
Register Write
RAVEN
Test
Generator
Memory Write
Register Update
Memory Update
Instruction
Set
Simulator
Step Simulator
ISS-Interface
Generator writes values to uninitialized registers and
data memory
Generator determines exact opcode of instruction and
writes it to the simulators memory
Generator calls simulator Step()
Simulator returns memory and register updates caused by instruction
execution
34
RAVEN-GCS GUI
35
RAVEN-MP GUI
36
Instruction Overrides
39
Architecture definition
40
Architecture defintion
Most of the architecture can be specified in data files
these are all xml files
many can be parsed directly from architecture definition files such as
manuals or simulator header files
Types of files
definition of instructions and instruction trees
definition of operands and operand groups
definition of special conditions
exceptions
pipelining issues
packetization rules for VLIW
display information for the GUI
41
42
Instruction definition
43
Instruction definition
Operand class is AddressingModeOperand
44
Handling non-determinism
45
46
GP1
GP2
CR1
Initial State
0x01234567
0xabcdef0
0x35742278
Instr. 1
0x55327a8b
---
---
Instr. 4
---
---
0x35743378
Instr. 22
---
0xabcd7a1f
---
Instr. 55
0x00000000
0x55327a8f
---
Instr. 56
---
---
0x25743378
Instr. 121
0x00000001
---
---
Instr. 139
0x00000002
0x55327a90
---
Final State
0x00000002
0x55327a90
0x25743378
0x00000002
0x00000001
0x00000000
0x55327a8b
0x01234567
Actual values
from RTL
GP1
Initial State
0x01234567
Instr. 1
0x55327a8b
Instr. 4
---
Instr. 22
---
Instr. 55
0x00000000
Instr. 56
---
Instr. 121
0x00000001
Instr. 139
0x00000002
Final State
0x00000002
0x01234567
=
pass
0x55327a8b
pass
0x00000000
pass
=
fail
47
0x000000a1
Register Checking
With Unpredictable Fields
With each reported register
update, RAVEN also reports a
valid mask
Compare logic needs to examine
only those bits whose
corresponding valid mask bit is
set
The valid mask may change over
the course of the test to reflect
processor state
48
CR1 value
CR1 mask
Initial State
0x35742278
0xffffffff
Instr. 1
---
---
Instr. 4
0x35743378
0xfffffcff
Instr. 22
---
---
Instr. 55
---
---
Instr. 56
0x25743378
0xfffffcff
Instr. 121
---
---
Instr. 139
---
---
Final State
0x25743378
0xfffffcff
49
Writes to Addr X
CPU1
Initial State
0x01234567
Instr. 1
0x01327a8b
---
Instr. 22
---
0xabcd7a1f
Instr. 55
0x00000000
0x39327a8f
Instr. 56
---
---
Instr. 121
0x55abf790
---
Instr. 139
Final State
CPU2
0x55327a90
0x55,
0xXX (0xab/0x32),
0xXX (0xf7/0x7a),
0x90
0x55abf790
0x00000000
0x55abf790
CPU2
0x55327a90
0xabcd7a1f
0x01234567
0x1234567
=
0x55327a90
0xabcd7a1f
0x1327a8b or
0xabcd7a1f
0x01234567
pass
0x01327a8b
0x00000000 or
0xabcd7a1f
0x55327a90
0xabcd7a1f
pass
=
0x55327a90
0xabcd7a1f
fail
0x00000000
pass
0x55abf790 or
0xabcd7a1f
=
50
Actual values
from RTL
pass
0xabcd7a1f
51
CPU2
CPU3
CPU4
0xaabbccdd
0xaabbccdd
0xaabbccdd
0xaabbccdd
0x9867a430
0x20080325
0x03195725
0x0f152b35
0xa9fc20d4
0xa9441901
0x2298afc7
0xffffff34
= zone 3
0x00001003
0x70073447
0x7e9a98e0
0x99a9c0d8
= zone 4
0x109000ff
0x70073448
0xacde3f54
0xa5aa0977
0xdcb9444a
0x70073449
0x00000000
0x00000000
0x8987564a
0x7007344a
0x7007344c
0x00000001
0xf0cd7aad
0x7007344b
0x10001000
0x32457699
0x7007344c
0xefffefff
0x75913052
0x7007344d
0x7091304d
= initial state
= zone 1
= zone 2
52
53
CPU1
CPU2
CPU3
CPU4
0xaabbccdd
0xaabbccdd
0xaabbccdd
0xaabbccdd
0x9867a430
0x20080325
0x03195725
0x0f152b35
0xa9fc20d4
0xa9441901
0x2298afc7
0xffffff34
0x00001003
0x70073447
0x7e9a98e0
0x99a9c0d8
0x109000ff
0x70073448
0xacde3f54
0xa5aa0977
0xdcb9444a
0x70073449
0x00000000
0x00000000
0x8987564a
0x7007344a
0x7007344c
0x00000001
0xf0cd7aad
0x7007344b
0x10001000
0x32457699
0x7007344c
0xefffefff
0x75913052
0x7007344d
0x7091304c