uvm transaction modeling

1.what is transaction?

network transactions

tcp/ip

wifi

3g/4g

bus transactions

amba-ahb/apb/axi

pci/pci-e

sata

usb

sd

instructions

x86

arm

2.uvm transaction flow

3.uvm modeling transaction

3.1 derived from uvm_sequence_item base class

built-in support for stimulus creation,printing,comparing,etc.

3.2 properties should be public by default

must be visible to contraints in other classes

3.3 properties should be rand by default

can be turned off with rand_mode

class transaction extends uvm_sequence_item;

rand bit [31:0] sa,sb;

rand bit [15:0] len;

rand bit [7:0] payload[$];

rand bit [31:0] fcs;

function new(string name="transaction");

super.new(name);

this.fcs.rand_mode(0);

endfunction

endclass:transaction

4.must obey contraints / should obey contraints

5.constraints considerations

total solution space

illegal solution space

valid solution space

test constraints

derived test constraints

6.uvm_sequence_item class tree

uvm_object:                                              uvm_sequence_item

get_name()                                                  set_item_context()

get_full_name()                                            set_transaction_id()

get_type()                                                    get_transaction_id()

clone()                                                          set_sequence_id()

copy()                                                          get_sequence_id()

print()                                                          set_id_info()

sprint()                                                         set_sequencer()

copy()                                                           get_sequencer()

compare()                                                     set_parent_sequence()

pack()                                                           get_parent_sequence()

unpack()

record()

时间: 2024-11-03 01:33:19

uvm transaction modeling的相关文章

UVM:8.3.1 重载transaction

1.假设正常的sequence 被作为测试用例的default_sequence: 2.派生一个异常crc: 1)使用之前方法要新建一个sequence,然后default. 3.现在可以重载 版权声明:本文为博主原创文章,未经博主允许不得转载.

(转)UVM内容梗概

1. 类: 面向对象基础传统的面向对象编程与systemverilog类的特点,类的定义,成员与方法,构造函数,对象的复制和深/浅拷贝,父类/子类关系,类的继承,作用域的规则,对象的句柄以及赋值,方法的扩展和重写,local/protected关键字,虚基类,虚方法,虚接口. 2. UVM基础 :UVM的发展历史,可配置的测试组件,类库结构,UVM核心基类的介绍,include/macro,UVM交易(data),基本测试组件 (testbench components),组件的phase结构,

基于UVM的verilog验证

Abstract 本文介绍UVM框架,并以crc7为例进行UVM的验证,最后指出常见的UVM验证开发有哪些坑,以及怎么避免. Introduction 本例使用环境:ModelSim 10.2c,UVM-1.1d,Quartus II 13.1(64 bit),器件库MAX V 1. UVM介绍 对UVM结构熟悉的读者可跳过本节. 叫UVM“框架”可能并不确切(只是便于理解,可类比软件界的“框架”).UVM全称为通用验证方法论.在硬件开发过程中,验证是十分重要的环节.可以说,左手开发,右手验证.

Data Modeling for MVC Applications

原文: Data Modeling for MVC Applications 模型-视图-控制器(MVC)是程序开发的主流范式.我们来看看Dojo为开发MVC的应用提供了些什么.我们将学习如何利用Dojo的stores对象与为模型提供的状态对象,以及如何在模型级别之上建立模型化的视图与控制器. MVC应用的数据模型 MVC是应用开发的主流范式.MVC为使代码有组织性,易管理性对关注点做了分层.Dojo是重度基于MVC法则的,并为构建MVC架构的应用提供了强大的帮助.一个设计良好的MVC应用的基石

UVM基础之------uvm_transaction

uvm_transaction继承自uvm_object,添加了timing和recording接口,该类是uvm_sequence_item的基类.下边将做剖析 1. 这个类提供了时间戳属性(timestamp properties),通知事件(notification events),和交易记录(transaction recording)支持. 2. 使用这个类作为用户定义的基础交易是弃用.其子类uvm_sequence_item应当作为基类为所有用户定义的事务类型. 3. 这个API的使

UVM中的class

UVM中的类包括:基类(base)------------uvm_void/uvm_object/uvm_transaction/uvm_root/uvm_phase/uvm_port_base 报告(reporting)--------uvm_report_object/uvm_report_handler/uvm_report_server/uvm_report_catcher Factory---------uvm_*_register/uvm_factory 配置(config)----

( 转)UVM验证方法学之一验证平台

在现代IC设计流程中,当设计人员根据设计规格说明书完成RTL代码之后,验证人员开始验证这些代码(通常称其为DUT,Design Under Test).验证工作主要保证从设计规格说明书到RTL转变的正确性,它包括但不限于以下几点: DUT的行为表现是否与设计规格说明书中的要求一致 DUT是否实现了设计规格说明书中的所有功能 DUT对于异常状况的反应是否与设计规格说明书中的一致 DUT是否足够稳健,能够从异常状态恢复到正常的工作模式 图1 验证发现DUT中的bug 随着芯片规模的增大,验证占整个芯

UVM中的regmodel建模(一)

UVM中的regmodel继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过Synopsys 家的工具ralgen来直接生成regmodel,提供后门访问,十分方便. 寄存器模型建模: 1)定义一个寄存器,如下;也可以在该class中定义covergroup,sample的function等.在以后的component中在采样. class  reg_invert  extends uvm_reg; rand  uvm_reg_f

UVM中factory机制的使用

UVM中的factory机制一般用在sequence的重载,尤其是virtual sequence.当Test_case变化时,通过virtual sequence的重载,可以很容易构建新的测试. 因为virtual可以控制选择sequence,sequence的启动,执行顺序等. 在build_phase阶段,不需要改变default_sequence,不需要改变别处代码. Transaction的重载,可以在不改变sequence,default_sequence的情况下,改变Transac