UVM和System verilog笔记总结(二)


接下里是TLM通信,以下几个地方的都需要用到TLM:
在这里插入图片描述
然而在driver、monitor和DUT的通信是用的interface(这个另说)

TLM1.0 interface object(在其他的验证方法学里面继承发展,如systemC和OVM)
export(中间部分)、port、imp、fifo/put() 、get() write()

TLM通信里面FIFO和analysis的write()用的较多;

在上面的问题中,为什么不建议TLM实现config_db?
答:麻烦

interface只能在driver和monitor与DUT通信用得到,其他的无。

这里有很多的TLM的传输方法;
方法一:Push/put mode传输通信用法.
在这里插入图片描述

先写输出端:
1:extends uvm_component;
2:uvm_bloking_put_port #(transaction) #后面是要传递的信号或参数,a_port;这出现了blocking,non_blocking阻塞会出现数据丢失
3:put_port=new(“put_port”,this);用new()
4:virtual task里面写put_port.put(tr);把信号put出去。
在这里插入图片描述
再写接收端:
1:extends uvm_component;
2:uvm_bloking_put_imp #(transaction,consumer) put_export;使用到重写task的部分写imp
3:put_export=new(“put_export”,this);也要new()
4:virtual task put(transaction tr); 接收端在put task编写接下来要做的,与上面输出端.put对应,且在process(tr)里面对tr进行数据处理。
在这里插入图片描述

最后连接起来:
1:environment extends uvm_env;
producer p;
consumer c;
2:virtual function void connect_phase(uvm_phase phase);
p.put_port.connect(c.put_export);从左向右写connect_phase连接
在这里插入图片描述


put相反;
在这里插入图片描述

FIFO写一个连接和connect。
在这里插入图片描述
FIFO上面这里的connect前面有put和get,先put到fifo里面,再从fifo里get出信号。
FIFO的深度在new()里面设置:
在这里插入图片描述


接下来要用到scoreboard class,功能是检验来自monitor的信号的计分板。

其实put、get用的很少,FIFO用的较多。

uvm_analysic_port使用较多,多个connect实现1对N的连接
在这里插入图片描述
调用write function 里的自定义功能,在env里面将producer和subscriber connect起来

下面是结合了analysis的agent的写法:
在这里插入图片描述

FIFO的深度的意思是producer put的数据深度,已知consumer get数据,在深度一定情况下,若put的数据比get快,那么会数据溢出,相反则每一次数据put进去,都能及时get到。

scoreboard:
在这里插入图片描述
利用before和after链接后进行比较。

下面对mailbox进行解释,mailbox是SV语法里面相当重要的数据传输方式

激励器先put出去
在这里插入图片描述
接下里driver接收到激励的put:
在这里插入图片描述
然后将driver和generator连起来
在这里插入图片描述
mailbox可以设置深度:
在这里插入图片描述
上面将深度设置成1,只能存一次、取一次。

这样正好可以使得同步,同时,还有一种方法可以实现同步,那就是event触发机制:
在这里插入图片描述
每当接收一个数据,就—>触发一个event,然后再每当触发一个event,发送一个数据。

下面是coverage的一些关键字:

在这里插入图片描述
covergroup是SV里面的采样集合,coverpoint是采样点,.sample()是内建系统函数,作用是去采样。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值