modeling usable & reusable transactors in …vlsi2005/keynotes/janick...example: ahb master,...

Post on 11-Mar-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Modeling Usable &Reusable Transactorsin SystemVerilog

Janick Bergeron, ScientistVerification Group, Synopsys Incjanick@synopsys.com

© 2004 Synopsys, Inc. (2) CONFIDENTIAL

TransactorsDefinition

• Building blocks of verification environmentsBus-functional modelsMonitorsCheckersGenerators

• Few instancesCreated at the start of simulationRemain in existence for duration

• Data and transactions flow through themGenerationObservationSchedulingTransformationProcessing

© 2004 Synopsys, Inc. (3) CONFIDENTIAL

Verification EnvironmentTransactors

BFM

Driver

MonitorAssertionsAssertions

Generator

CheckerSelf CheckSelf Check

DUTDUT

TestTest

Transactors

© 2004 Synopsys, Inc. (4) CONFIDENTIAL

TransactorCategories

• Active transactorsInitiate transactionsSupply data to other sideExample: AHB master, Ethernet Tx

• Reactive transactorsTransaction initiated by other sideReact by supplying requested dataExample: AHB slave

• Passive transactorsTransaction initiated by other sideCollect transaction data from other sideNo interaction with monitored interfaceExample: AHB bus monitor

© 2004 Synopsys, Inc. (5) CONFIDENTIAL

Verification ProcessWhy Should You Care About Transactors?

• Verification >60% of design effort• Transactors enable abstraction & automation

Debug test& design

RegressionResults

SimulateSimulate

Write newtest

Write newtest

Codemodifications

MINIMIZE!MINIMIZE!

Identifynext testIdentifynext test

© 2004 Synopsys, Inc. (6) CONFIDENTIAL

TransactorsImplementation

• Simple to write transactors thatAlways do the right thingOperate as fast as possible

• How can an environmentIntegrate a scoreboard?Add functional coverage?

• How can a testIntroduce delays?Respond with "retry", "abort" or not respond?Inject errors?

Without rewriting/modifyingoriginal transactor

© 2004 Synopsys, Inc. (7) CONFIDENTIAL

Traditional TransactorsProcedural Interface

• Complex control interfaceConfiguration commandsTransaction commandsException commands

• Creates new programming language

Different concernsSame mechanism

Different concernsSame mechanism

TestRich set ofcommands

Rich set ofcommands

Grow incomplexityGrow in

complexity

Desired function mustexist in a command

Desired function mustexist in a command

Becometest-specificBecome

test-specificAlways modifyingtransactor

Always modifyingtransactor

© 2004 Synopsys, Inc. (8) CONFIDENTIAL

Usable & Reusable Transactors

• SeparateConfigurationTransactionsExceptions

• Minimize code required for additional tests• Support

Random configurationRandom stimulusSelf-checking operationsFunctional coverageUser-defined exceptionsBlock-level verificationSystem-level verification

Requires HVLfeatures

Requires HVLfeatures

© 2004 Synopsys, Inc. (9) CONFIDENTIAL

Object-Oriented TransactorsConfiguration Interface

• Implement using class• Configure using configuration class

Can be randomizedPass via constructor and optional reconfigure() method

class mii_cfg;rand bit is_100Mb;

endclass

class mii;protected mii_cfg cfg;...function new(mii_cfg cfg, ...);

this.cfg = cfg;endfunction;function void reconfigure(mii_cfg cfg);

...endfunction;

endclass

May have toreset transactorMay have to

reset transactor

© 2004 Synopsys, Inc. (10) CONFIDENTIAL

Object-Oriented TransactorsTransaction Interface

• Data-flow based transaction interfaceTransaction descriptorsSee "Modeling Data and Transactions", DesignCon '05

class mii;eth_frame_channel in_chan;eth_frame_channel out_chan;...function new(..., eth_frame_chan in_chan = null,

eth_frame_chan out_chan = null, ...);if (in_chan == null) in_chan = new;this.in_chan = in_chan;

if (out_chan == null) out_chan = new;this.out_chan = out_chan;...

endfunction;endclass

© 2004 Synopsys, Inc. (11) CONFIDENTIAL

Object-Oriented Transactors Transaction Interface

• Flow of data between producer and consumer automatically regulated

As fast asslowest

component

As fast asslowest

component

© 2004 Synopsys, Inc. (12) CONFIDENTIAL

Object-Oriented Transactors Transaction Interface

• Can implement various transaction completion models

BlockingNonblockingOut-of-orderRequest / Response

© 2004 Synopsys, Inc. (13) CONFIDENTIAL

Object-Oriented Transactors Transaction Interface

• Key to transactor reuse across environments

Test

MII BLKMII

MACMAC BLK

Test

MII BLKMII

MII BLKMII

MAC

Test

IP

MAC BLK

IP BLK

Test

MAC BLKCustom

MAC

© 2004 Synopsys, Inc. (14) CONFIDENTIAL

Object-Oriented Transactors Transaction Interface

• Allows port of block level tests to chip level

Z

BUS IF

PHY IF

Z-1

TestTest ... in the

system... in thesystem

X

AX

B

CBlock-level

test ...Block-level

test ...

© 2004 Synopsys, Inc. (15) CONFIDENTIAL

Object-Oriented Transactors Transaction Interface

• Components unaware of other endpoint

Test Test

TL DUT

Syst

emC

Syst

emVe

rilog

RTL DUT

© 2004 Synopsys, Inc. (16) CONFIDENTIAL

Object-Oriented Transactors Transaction Interface

• Interface between testbench and emulator

EmulatedDUT

Test

EmulatedBFM

Emulator Box

Emulator-specificcommunication

Emulator-specificcommunication

© 2004 Synopsys, Inc. (17) CONFIDENTIAL

Object-Oriented TransactorsException Interface

• Reusable transactors need mechanism to provide services to verification environment

Introducing delaysSynchronizing different transactorsFeedbackRecording input into scoreboardComparing output with expected valuesSampling data for functional coverageModifying transactions to inject errorsDeviate from default behavior

• Flexible enough to satisfy unpredictable needs of verification environments and testcases

Without modifying transactor

© 2004 Synopsys, Inc. (18) CONFIDENTIAL

Object-Oriented TransactorsException Interface

Test

delay(10);

resp = NAK;

GenerictransactorsGeneric

transactors

Test completelyspecified in one fileTest completely

specified in one file

Able to executetest-specified

code

Able to executetest-specified

code

• Callbacks used to implement exceptionsSame languageUser-defined functionality

© 2004 Synopsys, Inc. (19) CONFIDENTIAL

Reusable TransactorsCallback Methods

• Callback methods are virtual methods in façade class invoked by the transactor itself

Empty by defaultCan be extended with user-defined code

class mii_cback; virtual task callback(...);endtask

endclasstask main();

...while (1) begin

...cb.callback(...);...

endendtask

DefaultDefault

class my_mii_cback extends mii_cback;virtual task callback(...);

...endtask

endclass User-definedextension

User-definedextension

Façade classFaçade class

© 2004 Synopsys, Inc. (20) CONFIDENTIAL

Reusable TransactorsCallback Methods

• Provide rich set of callback methodsAfter a new transaction is about to be started

• Allow delay insertion• Allow modifying or dropping the transaction

Before a major decision is about to be acted upon• Allow the default decision to be changed

Before sub-transactions or data is transmitted• Allow delay insertion• Allow modifying or dropping

After sub-transactions or data has been received• Allow modifying or dropping

After a transaction has been completed• Allow modifying or prevent forwarding to higher layers

In the body of every loop• Supply loop index via argument• Allow modifying the subject of the iteration

If protocolallows it

If protocolallows it

© 2004 Synopsys, Inc. (21) CONFIDENTIAL

Reusable TransactorsCallbacks Methods

• Transactors have list of registered callback extensions

Individual extensions for different purposesNo modifications of existing callback functionality

class error_inject extends apb_master_cback;...

endclassclass scoreboarding extends apb_master_cback;...

endclassclass fctcvr_model extends apb_master_cback;...

endclass

© 2004 Synopsys, Inc. (22) CONFIDENTIAL

Extensible TransactorsUser-Defined Transactions

• Use callback to interpret transaction descriptor

Can be overloaded to modify transaction executionCan be overloaded to define new transactions

class my_mii_cback extends mii_cback;virtual function bit exec(transaction tr);

exec = 0;if (tr.kind = MY_TRANSACTION) begin

...exec = 1;

endendfunction

endclass

User-definedextension

User-definedextension

class mii_cback; virtual function bit exec(transaction tr);

exec = 0;endfunction

endclass

task main();...while (1) begin

transaction tr;in_chan.get(tr);...if (cb.exec(tr)) next;...

endendtask

DefaultDefault

© 2004 Synopsys, Inc. (23) CONFIDENTIAL

Transactor ImplementationClass Hierarchy

DUT/Test-specificDUT/Test-specific

Protocol-genericProtocol-generic test_usb_host_cbackusb_host_cbackvmm_xactor_callbacks sb_usb_host_cback

vmm_xactor usb_host

GenericGenericusb_host_cfg dut_usb_cfg

test_usb_cfg

usb_transactionvmm_data dut_usb_transaction

test_usb_transaction

© 2004 Synopsys, Inc. (24) CONFIDENTIAL

Useable & Reusable TransactorsFor more information

• SystemVerilog Verification Methodology Manual

Kluwer Academic Publishers, 2005

• "Modeling Data and Transactions"DesignCon '05, Santa Clara, CA

• Reference Verification MethodologyVera User's Guide, 6.2 and later

Modeling Usable &Reusable Transactorsin SystemVerilog

Janick Bergeron, ScientistVerification Group, Synopsys Incjanick@synopsys.com

top related