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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7190|回复: 13

[求助] 求助:uvm的cpu_transaction与C程序的交互

[复制链接]
发表于 2012-6-15 17:22:44 | 显示全部楼层 |阅读模式

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

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

x
各位:
     我想用UVM搭一个验证环境,但是同事要求能通过C函数来实现DUT的配置。比如说,初始化DDR或者UART的时候可用C函数直接写write(addr,data)这样的命令来执行,配置好设备之后,用C函数run_test1(),让UVM跑test_case1,run_test2()跑test_case2。我一点头绪都没有,有没有能指点一下的?
     主要有几点:1. AHB总线上是有read也有write,写的时候好办,跟其他driver一样的写法,但是read的时候,driver可以取代monitor的功能,除了驱动总线之外,还监听总线上read的数据么?
                     2. 好像在哪儿看到过这种CPU配置寄存器的,需要register_sequence,还需要adapter,这部分我完全没概念呀,能否不采用这种方法?
                     3. 单纯的systemverilog中实现与C的DPI我知道怎么弄,但是换成UVM……,以前单纯用systemverilog搭验证环境的时候,是纯粹用C函数来控制仿真的进程的,但是UVM中有phase,怎么才能让C来插一脚呀?
     可能这些问题在你们看来不是问题,但是我才刚接触UVM,在有些地方还不是很了解,如果涉及基础性的问题,能否指点一下要加强哪方面的知识?先谢谢诸位啦!
发表于 2012-6-17 01:16:05 | 显示全部楼层
帮楼主顶一个。。。。。。。
发表于 2012-6-20 15:06:17 | 显示全部楼层
我刚接触UVM不久,说一点自己的想法,仅供参考

针对第1点,感觉还是把driver和monitor分开写比较方便,特别是AHB这种有流水结构的。如果写在一起,你可以在driver中例化一个analysis_port,数据读取出来后直接write()。

针对第2点,UVM里面有register_model的主要功能之一就是抽象激励的层次,把bus_seq_item转换成更简单的register_seq_item,从而激励就只有对寄存器的读写操作,而不是相对复杂的AHB操作。你同事的目的也就是这个吧。可以去verificationacademy找相应的资料

第3点就不知道了,没有尝试过。
 楼主| 发表于 2012-6-21 09:26:31 | 显示全部楼层
非常感谢!
发表于 2012-6-21 16:13:17 | 显示全部楼层
回复 3# llh1119


   您好,我刚接触这个,想向您请教一下,像AHB这样的流水线操作总线模型的话,我该怎么写driver呢?比方说 我现在用sv写了一个generator和driver,driver从generator那里得到了一个transaction,然后发送给dut,然后再接收一个transaction,这样就体现不出 流水线操作了,能不能请教一下,这该怎么处理呢???
发表于 2012-9-11 23:11:18 | 显示全部楼层
这个uvm的cookbook里有提到过怎么写pipelined driver,你可以去查下,我前段时间写了一个带pipeline的,非常麻烦。我后来发现,其实没必要用pipeline的,因为CPU一般是不会连着发single pipeline的。如果是IP level的话,其实用single的就够了。如果非要用的话...我的做法在driver里面把transaction存成一个队列来操作,这样也比较麻烦...
发表于 2012-9-12 11:35:47 | 显示全部楼层
我来顶一个
顺便学习下
发表于 2012-10-31 21:12:30 | 显示全部楼层
现在问题解决了没啊???
 楼主| 发表于 2012-11-1 11:02:44 | 显示全部楼层
回复 8# liuyongchong


    没有啊。等着呢。
发表于 2012-11-5 23:55:53 | 显示全部楼层
我正准备学习UVM,以后多交流。。。。。
                     1. AHB总线上是有read也有write,写的时候好办,跟其他driver一样的写法,但是read的时候,driver可以取代monitor的功能,除了驱动总线之外,还监听总线上read的数据么?

         这个不是可不可以的问题,而是应该不应该的问题吧?可以,连好肯定能通,但是driver的resp port,但是和mon功能完全不一样,这样连接完全不合常理,感觉不好,必须分开写。

                     2. 好像在哪儿看到过这种CPU配置寄存器的,需要register_sequence,还需要adapter,这部分我完全没概念呀,能否不采用这种方法?

        就算是RAL也必须完成读写过程,front door read/write,back door peek/poke,
所以如果比较简单,像只是ddr初始化或者uart配置,而且用c配置,就没有必要用这种方法了

                     3. 单纯的systemverilog中实现与C的DPI我知道怎么弄,但是换成UVM……,以前单纯用systemverilog搭验证环境的时候,是纯粹用C函数来控制仿真的进程的,但是UVM中有phase,怎么才能让C来插一脚呀?

        不太理解,DPI与方法一点关系都没有,所谓phase,其实就是一串virtual task/function而已,而c也是,直接调用不就可以了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-15 01:10 , Processed in 0.036150 second(s), 8 queries , Gzip On, Redis On.

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