在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6360|回复: 15

[求助] 用uvm验证半双工的通信模块,怎样划分driver和monitor的职能比较好

[复制链接]
发表于 2013-11-27 14:36:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本人初学uvm,想用uvm搭个iic的master。
我的理解是,一般来说,驱动dut的东西放在driver里,监测dut的东西放在monitor里。
但一次iic通信,比如master收信,要先发送再接收,而且数据都在sda这根线上。
如果严格按driver和monitor区分的话,势必driver和monitor都要数scl,判断目前的收发状态,很麻烦,感觉好好的一次通信硬生生地拆成了两部分来做。
相反,如果把收发的过程全放在driver里,写代码会方便很多,但这似乎违反了driver和monitor的划分准则。
想问下这种情况下大家一般会怎样划分driver和monitor?
发表于 2013-11-27 17:13:19 | 显示全部楼层
以发数据就是driver为原则。
 楼主| 发表于 2013-11-27 19:51:06 | 显示全部楼层
回复 2# A1985


    那可以把monitor的工作合并到driver里,也就是driver既发数据也收数据吗?
发表于 2014-1-25 06:55:52 | 显示全部楼层
检测放到monitor比较好
发表于 2014-1-25 21:21:24 | 显示全部楼层
3#的做法比较正确。
我补充一下,driver和monitor是功能层面的划分,代码上完全可以统一,只是在使用中定义一下,比如config或者工厂模式,如果编程能力不太强,分开也未尝不可,但对概念的理解不可死板。
发表于 2014-1-27 16:43:03 | 显示全部楼层
回复 5# rhythm1988


   

    3楼的方法,降低了uvc的重用性。在passive mode下,bfm/driver被disable,monitor就无法得到数据,使得uvc无法被使用。
    我的想法是,尽量不要将二者合一。如果你非常确定利用monitor可以将数据传给bfm//driver的话,可以试着用monitor来接收。
发表于 2014-1-27 20:32:11 | 显示全部楼层
本帖最后由 rhythm1988 于 2014-1-27 20:54 编辑

回复 6# bearhero2114

UVM的手册中似乎没有说到passive模式下,agent中driver被disable,monitor就不能用了的说法啊,这理论没见过啊!
代码合一,并不代表例化的是一个部件啊,完全是两个部件,不存在上面的说法吧!
发表于 2014-1-28 10:19:30 | 显示全部楼层
回复 7# rhythm1988

    这是uvm的一个基本原则。
    passive模式下,bfm/driver应该是不存在的,不仅仅是被disable。
    passive的意思是该uvc对总线的transaction没有响应,这个和slave不是一个意思: slave是可以响应请求的。

    假设你的uvc用在top level,只是监测总线上数据和协议的正确性,你为什么要用到driver?
    此时的监测任务就是monitor的,和driver以及DUT没有关系。
    从testbench的角度,一个简单的monitor也使得结构更加清楚。

    所以,不要让monitor依赖于driver的信息。
 楼主| 发表于 2014-1-28 11:12:28 | 显示全部楼层
回复 6# bearhero2114


    呃,不好意思打断一下,我感觉6#有点跑题了。

如果单单是监测的话,那肯定要放在monitor里,我也知道。
我这里的问题是,比方说UVM搭的iic master,发8个bit数据,要收1个bit的ack,并且我想要的效果是收到ack为低的情况下,再发下8个bit数据。
如果发8个bit数据用driver发,收1个bit ack用monitor监测,那势必driver和monitor之间必须有数据交互,否则driver不知道ack的值。
我想问的是,像这样收1个bit的ack和发8个bit数据属于一个不可拆分的原子过程,那收1个bit的ack能否放到driver里去收呢?因为我觉得,如果可以的话,似乎违反了driver只发不收的原则。

我并不是说,想无缘无故地把monitor的工作全放到driver里,或者把driver的工作全放到monitor里……
发表于 2014-1-28 21:47:34 | 显示全部楼层



sequencer里面的sequence只负责TLM级任务的处理,主要是transaction的产生。而driver是pin wiggle的主要component。所以属于一个transaction里面的pin wiggle都应该包括在driver里面,不论是input or output.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-14 17:56 , Processed in 0.022943 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表