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