22.11.2014 Views

sVM Training

sVM Training

sVM Training

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>sVM</strong> <strong>Training</strong><br />

Mar-04<br />

ClubV US 2004 1


Agenda<br />

1. Intro to <strong>sVM</strong>: focus + roadmap<br />

2. <strong>sVM</strong> Architecture 45min<br />

• Module eVC, unit to system<br />

• Structural generation<br />

3. Register and Memory package 45min<br />

4. Summary<br />

ClubV US 2004 2


1: <strong>sVM</strong> Introduction<br />

1.a. Focus<br />

ClubV US 2004 3


<strong>sVM</strong> Roadmap<br />

• Short term focus<br />

• Provide svm_lib with the basic features<br />

• Architecture guidelines<br />

• Golden eVCs demonstrating guidelines<br />

ClubV US 2004 4


1: <strong>sVM</strong> Introduction<br />

1.b. Example<br />

ClubV US 2004 5


The DUT - RSoC<br />

• The RSoC is our DUT:<br />

a Point-Of-Sales station<br />

(somewhat simplified)<br />

RSoC_Full<br />

RSoC_D<br />

RSoC_HW<br />

XCore<br />

Enet<br />

• Contains HW and SW<br />

• The QSoC is a smaller<br />

subset of the RSoC, but<br />

with the same SW<br />

ClubV US 2004 6


The RSoC - HW and SW<br />

RSoC (HW + full SW)<br />

SW Application<br />

Legend<br />

sVE<br />

RSoC (HW + SW drivers)<br />

RSoC (HW only)<br />

SW Device Drivers<br />

CPU<br />

DMA<br />

Memory<br />

AHB<br />

XBridge<br />

XCore<br />

XBus<br />

Ethernet<br />

XCore<br />

XCore<br />

USB<br />

Ethernet<br />

From keyboard<br />

To screen<br />

From barcode /<br />

credit card reader<br />

To / From<br />

credit center<br />

ClubV US 2004 7


Some Specifications<br />

RSoC (HW + full SW)<br />

SW Application<br />

RSoC (HW + SW drivers)<br />

RSoC (HW only)<br />

SW Device Drivers<br />

Scenario: <br />

<br />

<br />

Check: If a bad credit card is swiped,<br />

then it should not be accepted<br />

CPU DMA<br />

Bridge<br />

XCore<br />

XCore XCore USB<br />

Memory<br />

Ethernet<br />

Enet<br />

Scenario: <br />

<br />

Check: If a corrupt packet is received,<br />

then a retransmit request should be sent<br />

From<br />

keyboard<br />

To<br />

screen<br />

From<br />

barcode /<br />

credit<br />

card<br />

reader<br />

To /<br />

From<br />

credit<br />

center<br />

Scenario: <br />

<br />

Check: If a corrupt packet is received, then<br />

the CPU should be interrupted<br />

ClubV US 2004 8


The QSoC – What does it do?<br />

(5) SW calculates the<br />

price<br />

QSoC_D<br />

Device Drivers<br />

QSoC_HW<br />

(4) Device driver reads code (6) Device driver writes item<br />

and price information<br />

XCore<br />

XCore<br />

XCore<br />

(3) Xcore-0 receives item code<br />

(7) Xcore-1 sends info to screen<br />

(2) An items code is<br />

typed on keyboard<br />

From keyboard<br />

To screen<br />

(8) Item information<br />

appears on the screen<br />

(1) A person is purchasing items<br />

ClubV US 2004 9


2: <strong>sVM</strong> Architecture<br />

ClubV US 2004 10


<strong>sVM</strong> Architecture - Agenda<br />

• DUT & SVE<br />

• Module eVCs<br />

• Module to system<br />

• SW eVCs<br />

ClubV US 2004 11


2: <strong>sVM</strong> Architecture<br />

2.a. DUT & SVE<br />

ClubV US 2004 12


System Level Verification: Definitions<br />

• A system level DUT contains several unit level blocks<br />

connected via interfaces, internally and externally.<br />

• A module eVC is a verification component for a<br />

specific DUT module (either hardware or software).<br />

• Most module eVCs have one or more interfaces<br />

• Most module eVC are developed in-house<br />

• An interface eVC is a verification component for a<br />

specific protocol.<br />

• Most eVCs we dealt with in the past were interface eVCs<br />

• An SVE is a Simulation and Verification Environment<br />

for a system level DUT<br />

• Most SVEs contains module eVCs for each unit and Interface<br />

eVCs for each internal/external connection.<br />

ClubV US 2004 13


Design for Reuse<br />

What should be reused?<br />

• All eVCs<br />

• Sequences (libraries)<br />

• Coverage definitions<br />

• Checks and Scoreboards<br />

• Reference models<br />

• vPlan<br />

Reuse aspects<br />

Early version<br />

of the P.O.S.<br />

project<br />

• From module to system<br />

• TLM to RTL to post silicon<br />

• Between projects<br />

What is not intended for reuse?<br />

• The SVE<br />

• Not intended to be reused as<br />

part of larger SVEs<br />

• Portions of it may be copied<br />

to larger SVEs<br />

ClubV US 2004 14


2: <strong>sVM</strong> Architecture<br />

2.b. Module eVCs<br />

ClubV US 2004 15


The SVE<br />

• The SVE is the top level verification environment<br />

• Instantiates all the eVCs<br />

• Has a virtual sequence driver<br />

• Has address map and register sequence driver<br />

• The SVE is not an eVC<br />

• Each module eVC package contains one or more “sve”<br />

sub-directory with:<br />

• A configuration file<br />

• Test files<br />

• vManager related files (vPlan, vsif, vsof)<br />

ClubV US 2004 16


SVE Architecture Diagram<br />

SVE<br />

Address map<br />

RSD<br />

DUT<br />

VSD<br />

eVC<br />

eVC<br />

eVC<br />

Module<br />

Module<br />

Module<br />

ClubV US 2004 17


Lets Look at a Bridge DUT<br />

Looking at this example:<br />

AHB<br />

eVC<br />

• What eVCs would be<br />

involved?<br />

• What would the<br />

module eVC contain?<br />

• What would be the<br />

eVC interactions?<br />

XBridge<br />

Module<br />

eVC<br />

DUT<br />

XBridge<br />

AHB<br />

XBus<br />

XBus<br />

eVC<br />

ClubV US 2004 18


Module eVC Architecture<br />

Module eVCs include<br />

• Monitor (module specific)<br />

• Events, checks and coverage<br />

• May include scoreboard and ref model<br />

• Memory and registers<br />

• Active vs. passive behavior<br />

• Active gives “stand-in” mode<br />

• Sequence driver for stand-in mode<br />

• Virtual sequence driver<br />

• Defined in the eVC<br />

• Instantiated typically in the SVE<br />

• Reusable on the system level<br />

• Pointers to other eVCs<br />

• To the related interface eVCs<br />

• Potentially also to their monitor and<br />

BFM<br />

VSD<br />

XBridge module eVC<br />

Reg_file<br />

Monitor<br />

Notice: there is no Agent in the module eVC<br />

Scoreboard<br />

Ref_model<br />

Mem_block<br />

ACTIVE<br />

stand-in<br />

model<br />

VSD<br />

ClubV US 2004 19


AHB-XBus Bridge<br />

Normal Mode<br />

Legend<br />

Data flow, eVC DUT<br />

Sequence calls<br />

between seq-drivers<br />

Pointers<br />

Whitebox access<br />

Pink: relates to virtual seq.<br />

Green: relates to registers<br />

Address map<br />

1 Connector<br />

XBridge SVE<br />

Traffic<br />

generator<br />

Address map<br />

AHB eVC<br />

ACTIVE master<br />

SD<br />

MON BFM<br />

PASSIVE slave<br />

MON<br />

Bus monitor<br />

1<br />

RSD<br />

1<br />

XBridge module eVC<br />

Passive<br />

DUT<br />

AHB<br />

Reg_file<br />

MON<br />

ACTIVE<br />

stand-in<br />

model<br />

XBridge<br />

VSD<br />

Scoreboard<br />

Ref_model<br />

Traffic<br />

generator<br />

XBus<br />

Address map<br />

XBus eVC<br />

ACTIVE master<br />

SD<br />

PASSIVE master<br />

PASSIVE slave<br />

Bus monitor<br />

2<br />

RSD<br />

MON<br />

BFM<br />

MON<br />

MON<br />

2<br />

ClubV US 2004 20


Stand-in mode<br />

• In stand-in mode the module eVC drives the<br />

simulation<br />

• The module eVC uses the interface eVC sequence<br />

drivers<br />

• The module eVC sequence driver is layered on top of<br />

the interface eVC sequence driver<br />

• When the module eVC becomes active, its<br />

corresponding agents become active as well<br />

ClubV US 2004 21


AHB-XBus Bridge<br />

Stand-in Mode<br />

XBridge SVE<br />

AHB eVC<br />

Legend<br />

Active<br />

Data flow, eVC DUT<br />

Sequence calls<br />

between seq-drivers<br />

Pointers<br />

Whitebox access<br />

Pink: relates to virtual seq.<br />

Green: relates to registers<br />

Address map<br />

1 Connector<br />

Address map<br />

ACTIVE master<br />

ACTIVE slave<br />

SD<br />

SD<br />

Bus monitor<br />

RSD<br />

MON<br />

BFM<br />

MON<br />

BFM<br />

1<br />

1<br />

XBridge module eVC<br />

Active<br />

DUT<br />

AHB<br />

VSD<br />

Reg_file<br />

MON<br />

ACTIVE<br />

stand-in<br />

model<br />

XBridge<br />

Stand-in<br />

Scoreboard<br />

VSD<br />

Ref_model<br />

Address map<br />

Active<br />

XBus<br />

RSD<br />

XBus eVC<br />

ACTIVE master<br />

ACTIVE master<br />

2<br />

SD<br />

SD<br />

PASSIVE slave<br />

Bus monitor<br />

MON<br />

BFM<br />

MON<br />

BFM<br />

MON<br />

2<br />

ClubV US 2004 22


2: <strong>sVM</strong> Architecture<br />

2.c. Module to System<br />

ClubV US 2004 23


The Golden Examples<br />

• svm_lib contains golden examples<br />

• Our example DUT will be<br />

• Module: XCore (HW)<br />

• Sub-system: QSoC (HW)<br />

• System: QSoC_D (HW+SW)<br />

SW_driver<br />

QSoC<br />

XBus<br />

XCore0<br />

XCore1<br />

ClubV US 2004 24


The Module:<br />

XCore SVE<br />

Legend<br />

Data flow, eVC DUT<br />

Sequence calls<br />

between seq-drivers<br />

Pointers<br />

Whitebox access<br />

Pink: relates to virtual seq.<br />

Green: relates to registers<br />

Address map<br />

1 Connector<br />

XCore SVE<br />

Address map<br />

ACTIVE master<br />

XBus eVC<br />

RSD<br />

MON<br />

SD<br />

BFM<br />

PASSIVE slave<br />

MON<br />

Bus monitor<br />

DUT<br />

1<br />

VSD<br />

Program<br />

registers<br />

Program xserial<br />

1<br />

XCore module eVC<br />

regfile<br />

MON<br />

SCBD<br />

ACTIVE<br />

stand-in<br />

model<br />

SD<br />

XCore<br />

XBus<br />

XSerial eVC<br />

Agent<br />

MON<br />

SD<br />

BFM<br />

2<br />

2<br />

ClubV US 2004 25


Sub-System:<br />

QSoC SVE<br />

Legend<br />

Data flow, eVC DUT<br />

Sequence calls<br />

between seq-drivers<br />

Pointers<br />

Whitebox access<br />

Pink: relates to virtual seq.<br />

Green: relates to registers<br />

Address map<br />

1 Connector<br />

QSoC SVE<br />

Address map<br />

RSD<br />

ACTIVE master<br />

MON<br />

SD<br />

BFM<br />

PASSIVE slave<br />

MON<br />

XBus eVC<br />

PASSIVE slave<br />

MON<br />

Bus monitor<br />

DUT<br />

1<br />

QSoC eVC<br />

XBus<br />

VSD<br />

Program<br />

registers<br />

1<br />

XCore0 module eVC<br />

regfile<br />

MON<br />

ACTIVE<br />

stand-in<br />

model<br />

XCore1 module eVC<br />

regfile<br />

MON<br />

ACTIVE<br />

stand-in<br />

model<br />

XCore0<br />

XCore1<br />

Program xserial<br />

SCBD<br />

SD<br />

SCBD<br />

SD<br />

XSerial0 eVC<br />

XSerial1 eVC<br />

Agent<br />

SD<br />

Agent<br />

SD<br />

2<br />

3<br />

MON<br />

BFM<br />

MON<br />

BFM<br />

2 3<br />

ClubV US 2004 26


Instantiating vs. Pointing to eVCs<br />

• Module eVCs are always instantiated in<br />

larger system eVCs<br />

• E.g. the QSoC eVC has two instances of XCore<br />

• Interface eVCs need to be either instantiated<br />

or pointed to:<br />

• Pointed to: if the interface is NOT fully<br />

encapsulated by current system<br />

• Instantiated: if the interface IS fully encapsulated<br />

by current system<br />

• E.g. in the QSoC, XSerial and XBus eVCs may<br />

be connected on a higher level, so they cannot be<br />

instantiated in the eVC<br />

Sub-system with local bus:<br />

instantiate the bus eVC in the<br />

module eVC<br />

Sub-system on system bus:<br />

instantiate the bus eVC in the<br />

SVE<br />

ClubV US 2004 27


Full system: QSoC_D SVE<br />

QSoC_D SVE<br />

Address map<br />

SW Driver eVC<br />

SD<br />

MON BFM<br />

1<br />

RSD<br />

ACTIVE master<br />

SD<br />

GSA<br />

XBus eVC<br />

PASSIVE slave PASSIVE slave<br />

Bus monitor<br />

DUT<br />

1<br />

SW_driver<br />

MON<br />

BFM<br />

MON<br />

MON<br />

Activate SW driver<br />

QSoC eVC<br />

XCore0 module eVC<br />

XCore1 module eVC<br />

XBus<br />

VSD<br />

regfile<br />

MON<br />

ACTIVE<br />

stand-in<br />

model<br />

regfile<br />

MON<br />

ACTIVE<br />

stand-in<br />

model<br />

XCore0<br />

XCore1<br />

Program XSerial<br />

SCBD<br />

SD<br />

SCBD<br />

SD<br />

XSerial0 eVC<br />

XSerial1 eVC<br />

Agent<br />

SD<br />

Agent<br />

SD<br />

2<br />

23<br />

MON<br />

BFM<br />

MON<br />

BFM<br />

2<br />

3<br />

ClubV US 2004 28


SW eVC<br />

• Just like other eVCs<br />

• env unit for connecting to the environment<br />

• Monitor to perform checks and collect coverage<br />

• Sequence driver to drive software sequences<br />

• Generic software adaptor<br />

• Clean interface to software<br />

• Activating SW modules<br />

• Collecting SW coverage<br />

• Personalized to specific target<br />

ClubV US 2004 29


3: The Register and<br />

Memory Package<br />

ClubV US 2004 30


Outline<br />

• Introduction to registers<br />

• Usage and examples<br />

• Advanced features of the package<br />

ClubV US 2004 31


3: The Register and<br />

Memory Package<br />

3.a. Introduction<br />

ClubV US 2004 32


Motivation<br />

• Registers and memory are the interface to a device<br />

• Control the device by writing to its registers<br />

• Pass data to/from the device using the device memory<br />

• In verifying the device, one often needs to<br />

• Configure the device by setting its registers<br />

• Activate the device by writing/reading registers and memory<br />

blocks<br />

• Check the device by comparing registers and memory values to a<br />

reference model<br />

• The register and memory package provides a standard<br />

solution to modeling and verifying registers and memory<br />

ClubV US 2004 33


SW/HW Interface<br />

• The registers and the address map are the<br />

interface between the software and the hardware<br />

SW view of the DUT:<br />

• Wait until the DUT is ready<br />

• Set the value of the memory<br />

• Set the control registers to<br />

go<br />

• Poll the status registers (wait<br />

for interrupt)<br />

• Read the memory value<br />

DUT<br />

Memory<br />

Register file<br />

HW view of DUT:<br />

• Reset the DUT (initialize)<br />

• When control registers<br />

are set perform the<br />

associated logic on<br />

memory<br />

• Update the status<br />

registers<br />

ClubV US 2004 34


Modeling Registers and Memory<br />

eVC<br />

Agent<br />

Mon<br />

BFM<br />

Multiple cores<br />

Multiple register files<br />

Multiple memory blocks<br />

Multiple agents<br />

Multiple address spaces<br />

DUT<br />

Address map<br />

XCORE<br />

Memory<br />

tx_mode<br />

tx_data<br />

rx_mode<br />

rx_data<br />

Operations on regs:<br />

• Write to register<br />

• Read from register<br />

• Monitor<br />

• Check<br />

• Collect coverage<br />

Register Features:<br />

•Name<br />

• Address<br />

•Fields<br />

• Attributes<br />

• Behavior<br />

ClubV US 2004 35


Basic Concepts<br />

• Register<br />

• Register file<br />

• Address map<br />

• Memory bank<br />

Memory<br />

Register File<br />

Memory<br />

block<br />

Address Map<br />

Register<br />

Register<br />

ClubV US 2004 36


Register Model in eRM<br />

Architecture<br />

XSoc env<br />

XBus env (interface eVC)<br />

Reg.<br />

Seq.<br />

Driver<br />

Address map<br />

XCore1 env<br />

(module eVC)<br />

XSerial env<br />

(interface eVC)<br />

Master agent<br />

Seq.<br />

Driver<br />

PASSIVE<br />

Slave<br />

Slave<br />

reg_file<br />

Seq.<br />

Driver<br />

Mon<br />

BFM<br />

Monitor<br />

Mon<br />

BFM<br />

DUT<br />

XCore1<br />

XCore2<br />

ClubV US 2004 37


3: The Register and<br />

Memory Package<br />

3.b. How it works<br />

ClubV US 2004 38


How it Works<br />

XSoC env<br />

vr_ad_execute_op()<br />

called by RSD<br />

XBus env<br />

RSD<br />

Address map<br />

update()<br />

5<br />

XCore1 env<br />

(module eVC)<br />

6<br />

reg_file<br />

Update method<br />

updates register<br />

model<br />

vr_ad_execute_op()<br />

Master SD drives<br />

the register<br />

operation<br />

BFM writes<br />

into DUT<br />

register<br />

DUT<br />

Master Agent<br />

SD<br />

Mon<br />

BFM<br />

3<br />

2<br />

1<br />

XCore1<br />

PASSIVE<br />

Slave<br />

Monitor<br />

4<br />

Address map<br />

notified<br />

Monitor picks<br />

up activity on<br />

bus<br />

ClubV US 2004 39


Main Features of the Package<br />

• Standard way to describe registers<br />

• Standard way to read and write DUT registers<br />

• Simulating register behavior<br />

• Checking DUT register behavior<br />

• Emulating registers when DUT is not available<br />

• Built in feature set<br />

• Sequences for driving registers<br />

• Protocol independent implementation<br />

• Randomization<br />

• Coverage<br />

• Indirect access<br />

• Backdoor access<br />

• Standardized eRM compliant modeling<br />

• Fine tuned for performance and scalability<br />

ClubV US 2004 40


Using the Register Model<br />

• Defining the Register File<br />

• Defining the Address Map<br />

• Allocating Address Space for the Register File<br />

• Register Sequence Layering<br />

• Updating the Register Model<br />

• Accessing Registers<br />

ClubV US 2004 41


Defining the Register File<br />

• Define a register file (e.g. for the 4 registers in the XCORE as<br />

defined in the golden eVC example)<br />

extend vr_ad_reg_file_kind : [XCORE];<br />

extend XCORE vr_ad_reg_file {<br />

keep size == 16;<br />

};<br />

• Define the registers in the register file as follows:<br />

// NAME FILE OFFSET WMASK RESET_VAL<br />

def_reg EX_REGS_TX_MODE XCORE 8'h01 8'hff 8'h00 {<br />

+%dest : uint(bits:2);<br />

+%frame_kind : [DATA,MESSAGE,EX1,EX2](bits:2);<br />

%reserved : uint(bits:4);<br />

};<br />

ClubV US 2004 42


Integrating the Register File<br />

XSoC env<br />

XBus env<br />

RSD<br />

Address map<br />

update()<br />

XCore1 env<br />

(module eVC)<br />

reg_file<br />

Master Agent<br />

SD<br />

vr_ad_execute_op()<br />

PASSIVE<br />

Slave<br />

Mon<br />

BFM<br />

Monitor<br />

DUT<br />

XCore1<br />

ClubV US 2004 43


Instantiating the Register File<br />

• Instantiate the new register file, with all its<br />

registers under some unit in your<br />

environment.<br />

• In this case we put the register file in the<br />

env.<br />

extend xcore_env {<br />

};<br />

reg_file : XCORE vr_ad_reg_file;<br />

ClubV US 2004 44


Integrating the Address Map<br />

XSoC env<br />

XBus env<br />

RSD<br />

Address map<br />

update()<br />

XCore1 env<br />

(module eVC)<br />

reg_file<br />

Master Agent<br />

SD<br />

vr_ad_execute_op()<br />

PASSIVE<br />

Slave<br />

Mon<br />

BFM<br />

Monitor<br />

DUT<br />

XCore1<br />

ClubV US 2004 45


Defining the Address Map and the<br />

Register Sequence Driver<br />

• Create an address map and a register sequence driver.<br />

• The register sequence driver must be linked to the address<br />

map and it must have a default BFM sequence driver.<br />

extend xbus_env {<br />

};<br />

addr_map : vr_ad_map;<br />

rsd: vr_ad_sequence_driver is instance;<br />

keep rsd.addr_map == value(addr_map);<br />

keep rsd.default_bfm_sd == masters[0].driver;<br />

• In this example we instantiate both the address map and the<br />

register sequence driver in the env.<br />

ClubV US 2004 46


Allocating Address Space for the<br />

Register File<br />

• Specify the actual address space occupied by the<br />

register file.<br />

extend xbus_env {<br />

post_generate() is also {<br />

addr_map.add_with_offset(0,reg_file);<br />

};<br />

};<br />

• In this example allocate between 0 and 15<br />

• Size extracted from allocated object (reg_file)<br />

ClubV US 2004 47


Register Sequence Layering<br />

• For the eVC master to be able to handle the register sequence items properly, you<br />

must implement the vr_ad_execute_op() method.<br />

XSoC env<br />

XBus env<br />

RSD<br />

Address map<br />

update()<br />

XCore1 env<br />

(module eVC)<br />

reg_file<br />

Master Agent<br />

SD<br />

vr_ad_execute_op()<br />

PASSIVE<br />

Slave<br />

Mon<br />

BFM<br />

Monitor<br />

DUT<br />

XCore1<br />

ClubV US 2004 48


Executing a Register Operation<br />

• The vr_ad_execute_op() method takes the contents of the register operation and<br />

executes it.<br />

extend xbus_driver {<br />

vr_ad_execute_op(op_item: vr_ad_operation):<br />

list of byte @clock is {<br />

if op_item is a REG vr_ad_operation (reg_op) {<br />

if op_item.direction == WRITE {<br />

sequence.write(op_item.address,<br />

reg_op.reg.read_reg_val());<br />

} else {<br />

result = pack(packing.low,<br />

sequence.read(op_item.address));<br />

};<br />

};<br />

};<br />

};<br />

• Using predefined read() and write() methods of the sequence<br />

ClubV US 2004 49


Keeping the Register Model<br />

Updated<br />

• A monitor is tied to the address map to update the register model. In the<br />

example we use the transfer_end event detected by the monitor.<br />

XSoC env<br />

XBus env<br />

RSD<br />

Address map<br />

update()<br />

XCore1 env<br />

(module eVC)<br />

reg_file<br />

Master Agent<br />

SD<br />

vr_ad_execute_op()<br />

PASSIVE<br />

Slave<br />

Mon<br />

BFM<br />

Monitor<br />

DUT<br />

XCore1<br />

ClubV US 2004 50


Updating the Register Model<br />

• The update() method is called for write operations and<br />

fetch_and_compare() for read operations.<br />

extend xbus_monitor {<br />

on transfer_end {<br />

if transfer.read_write == WRITE {<br />

env.addr_map.update(<br />

transfer.addr,%{transfer.data},{});<br />

} else {<br />

env.addr_map.fetch_and_compare(<br />

transfer.addr,%{transfer.data});<br />

};<br />

};<br />

};<br />

ClubV US 2004 51


Accessing Registers<br />

• To access the registers use the read_reg and<br />

write_reg macros.<br />

extend MAIN vr_ad_sequence {<br />

};<br />

!tx_mode : EX_REG_TX_MODE vr_ad_reg;<br />

body() @driver.clock is only {<br />

};<br />

write_reg tx_mode {.frame_kind == DATA};<br />

read_reg tx_mode;<br />

ClubV US 2004 52


3: The Register and<br />

Memory Package<br />

3.c. Advanced Features<br />

ClubV US 2004 53


Advanced Features<br />

• Side effects<br />

• Backdoor<br />

• Visualization<br />

• Coverage collection<br />

• Reset<br />

ClubV US 2004 54


Side effects<br />

• Perform some operation as a result of<br />

accessing a register.<br />

• Clear on read example:<br />

extend EX_REGS_TX_MODE vr_ad_reg {<br />

};<br />

post_access (direction: vr_ad_rw_t) is only {<br />

};<br />

if direction == READ {<br />

};<br />

write_reg_val(0x0);<br />

ClubV US 2004 55


Backdoor access<br />

• Implemented using hdl_path defined in<br />

static_info<br />

extend RW vr_ad_sequence {<br />

};<br />

!r1 : R1 vr_ad_reg;<br />

body() @driver.clock is {<br />

};<br />

read_reg {.backdoor == TRUE} r1;<br />

write_reg {.backdoor == TRUE} r1 {.dest == 3};<br />

ClubV US 2004 56


Address Map Detailed Info<br />

• Detailed contents<br />

of address map:<br />

list of register<br />

files and registers<br />

ClubV US 2004 57


Register Read/Write Stripe Chart<br />

ClubV US 2004 58


4: Summary<br />

ClubV US 2004 59


System Verification Methodology<br />

• <strong>sVM</strong> provides guidelines to<br />

• Integrating modules to system<br />

• Modeling and verifying registers and memory<br />

• SW/HW co-verification<br />

• Transaction level modeling and verification<br />

• eCeleration of verification components<br />

• And more…<br />

ClubV US 2004 60

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!