ryanhunter的个人空间 http://blog.eetop.cn/1765812 [收藏] [复制] [RSS]

日志

UVM REG Model (updating)

热度 10已有 1132 次阅读2020-11-4 23:26 |个人分类:验证|系统分类:芯片设计| UVM

1.          UVM REG Model

UVM REG Model部分包含了REG模型与MEM模型,REG模型主要包含uvm_reg_blockuvm_reg_reguvm_reg_field以及包含一些path和地址信息的uvm_reg_map

思路:简介各个reg相关的class,然后具体描述一下每个class,然后再举一些examples

 

1.1.               概述

1.1.1.     uvm_reg_field

            uvm_reg_field就像是一个功能模块中寄存器定义里面的域,例如一个32位的中断寄存器,其中可能包含有多种中断类型,一位就是一种中断。当然某些寄存器也会存在多个bit代表某种功能,这种某个寄存器内的某一个或者几个功能在UVM中就用uvm_reg_field类来表示。

所以一个典型的uvm_reg可能包含如下:

(代码)

 

1.1.2.     uvm_reg

            顾名思义uvm_reg类就相当于一个功能模块中的寄存器 TBD

 

1.1.3.     uvm_reg_block

            这个类相当于一个特定模块中所有寄存器的容器,用来包含和划分某个特定范围的uvm_reg。同时一个reg block除了可以包含多个reg之外,还能够包含其他的reg block

 

1.1.4.     uvm_reg_map

            reg map类用于保存其所关联的寄存器地址,以及adapter sequencer等信息。

 

1.1.5.     典型应用

            这一节介绍一下一个经典的寄存器读写,以及predict,执行了哪些步骤,让读者有一个大概的流程概念,但不深入细节。

1.1.5.1.           reg.write

            首先对于寄存器的写,必须要提供一个value,以及准备一个uvm_status_e用来接收返回的状态,即操作成功与否, 当然write本身还提供了很多带默认值的参数,通常情况不强制用户给这些参数。

            在我们调用寄存器的write之后,会将write中的参数信息都打包成类中的成员变量,然后调用do_write,并将该类传递给do_write。然后do_write会先做一些预操作,例如调用各个fieldpre_write,以及callback函数中的pre_write(如果存在的话),然后再调用当前reg中的pre_write,和reg中的callbackpre_write。这些在一般操作中都不太需要,这里先不展开。

            接下来,write将根据pathbackdoor还是frontdoor执行不同的操作。典型应用中将只介绍frontdoor的操作,后续的章节会对各部分展开介绍。

            frontdoor操作分为两种,第一种如果对reg和相应的map做了映射操作,并且在调用write时制定sequence,那么可以直接启动frontdoor sequence,然后执行sequence_item->driver->interface的操作,不过据我所知,更常用的方法是通过配置reg_adapter形式来实现,即frontdoor的另一种实现方式:调用相关联的reg_mapdo_write操作。

            reg_map中的do_write本身包含了支持field writereg write等一系列的写,这里只介绍reg引起的write流程,在do_write中会调用根据会调用adapterreg2bus函数,就是我们在adapter中定义的将reg item信息转化为我们需要的sequence item信息(严格来讲是do_write调用的一系列函数中会去调用reg2bus,具体较为复杂,在后续章节会陆续描述)。在经过reg2bussequence item进行转换后,就会像执行不同的sequence 一样将该sequence item分配给我们指定好的sequencer中,由相关driver驱动并且送到interface,最后作为一个寄存器写请求发送给DUT

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

关闭

站长推荐上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询 |  EETOP 创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2020-11-30 21:44 , Processed in 0.025757 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部