UVM学习笔记(6)

学习目标

UVM入门和进阶部分6

学习内容

1.TLM2.0是SystemC模型之间的核心传输方式:双向的阻塞或者非阻塞接口、时间标记、统一的数据包

2.TLM2.0支持blocking和nonblocking两种transport方式:
blocking的传输方式要求在一次传输过程中,完成request和response的传输
nonblocking的传输方式则将request和reponse的传输分为了两个独立的单向传输,而两次传输整体视为完成一次握手传输

3.两种传输方式对应的UVM方法如下:

task b_transport(T t,uvm_tlm_time delay);
function uvm_tlm_sync_e nb_transport_fw(T t,ref P p,input uvm_tlm_timedelay);	//uvm_tlm_sync_e 非阻塞传输协议的预定义阶段状态值
function uvm_tlm_sync_e nb_transport_bw(T t,ref P p,input uvm_tlm_timedelay);
//T代表统一的传输数据类uvm_tlm_generic_payload,而P代表nonblocking传输方式中用来做状态同步的类型

4.UVM将TLM2.0端口类型称之为socket,它们由port、export和imp组合而成
socket类型都继承于uvm_port_base

5.TLM2.0对于传输数据类型提出了一致化的要求,统一的数据类型由uvm_tlm_generic_payload表示

6.TLM2.0传输其他数据内容有两种办法:
将其合并为数据成员data数组中的一部分;
创建新的uvm_tlm_extension类,将额外的数据成员装入到该数据延伸对象中,通过uvm_tlm_generic_payload::set_extension(uvm_tlm_extension_base ext)来添加这一部分的数据(uvm_tlm_extension类还提供拷贝、比较和打印等功能)

7.TLM2.0可以标定延迟时间,用户可以随时设置它的时间单位,不同的时间标记间隔是SystemC可以构建不同时间精度模型的重要手段

8.在UVM中,需要同步线程不在局限于同一对象中,还需要解决不同组件之间的线程同步问题,考虑到UVM组件的封闭性原则,定义了如下的类来满足组件之间的同步要求:两个组件之间的同步:uvm_event、uvm_event_pool、uvm_event_callback;多个组件之间的同步:uvm_barrier、uvm_barrier_pool

9.不同组件可以共享同一个uvm_event,该共享方式是通过uvm_event_pool这一全局资源池来实现的,这个资源池是uvm_object_string_pool#(T)的子类,它可以生成和获取通过字符串来索引的uvm_event对象

10.uvm_event的几个重要特性:
uvm_event通过trigger()来触发,会触发使用wait_trigger()等待该事件的对象;
如果要再次等待事件触发,uvm_event需要先通过reset()方法重置初始状态,再使用trigger()来触发;
uvm_event可以通过trigger(T data=null)的可选参数,将伴随触发的数据对象都写入到该触发事件中,而等待事件的对象可以通过方法wait_trigger_data(output T data)来获取事件触发时写入的数据对象;
uvm_event可以通过add_callback(uvm_event_callback cb,bit append=1)函数来添加回调函数,用户也可以扩展uvm_event_callback类,pre_trigger()需要有返回值,返回1,则uvm_event不会被trigger,返回0则继续;
uvm_event可以通过get_num_waiters()来获取等待它的进程数目;

11.uvm_barrier可以设置一定的等待阈值,当有不少于该阈值的进程在等待该对象时,才会触发该事件,同时激活所有正在等待的进程,使其可以继续进行

学习问题

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值