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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: barbossa

[求助] 在sequence如何直接利用路径访问DUT的信号

[复制链接]
发表于 2022-4-8 15:09:02 来自手机 | 显示全部楼层


barbossa 发表于 2022-4-8 14:55
如果是公用,或者大环境下,或者需要向上集成的环境 当然最好不要这么做。如果只是自己的小UT环境,sched ...


时间紧,不考虑transfer的话基本可以理解,请问你force这个信号用Verdi trace 能找到你force的这个driver吗?之前我们在大环境的时候就找不到force的语句在哪里,只好通过搜索找,这种找环境大了很痛苦,后来我们就要求统一的force规则,当时没记住是在seq里force真的trace不出来还是Verdi当时不支持
发表于 2022-4-8 15:45:43 | 显示全部楼层


ppeezz 发表于 2022-4-7 17:52
这是因为环境中文件利用packages包起来影响的?--------> 是的
解决方法:可以通过将所有的testcase和seque ...


嗯,当sequence使用package包裹起来后,因为package可以在不同的testbench和testcase下import导入后使用,所以这时sequence的在整个环境中的hierarchy结构是根据testbench/testcase甚至dut实例化时的名字的不同而不同的,package内并看不见package外的信号名,这也是导致无法直接使用路径访问DUT信号的原因。

还有种解决办法,将需要访问的DUT路径通过仿真参数或者define语句将包含了testbench和DUT的hierarchy路径的string传递进去到package里面。

发表于 2022-4-8 16:11:20 | 显示全部楼层


barbossa 发表于 2022-4-8 13:42
感谢,确实是package影响,去掉package之后就解决了。

另外:


话说使用package能更好地在隔离后进行复用。
在不去掉package的前提下还有不少办法的——除了使用参数传递含有testbench的路径string的方式外。

像在sequence里面需要使用@(posedge `DUT.clk)的信息,我不确定楼主的项目需要怎样的信号信息以及做和用处,当常遇到的需求是进行信号的同步/触发时机的检测,等待到特定信号的触发后再进行sequence的发送。这种其实可以在testbench/monitor里面对需要同步的信号插入uvm_event来进行同步。
假如monitor里面没有对所需信号的采样,那就在testbench里面加个initial块使用uvm_event,里面加入uvm_event_pool::get_global("你的uvm_event")就可以让该事件全局可见了,然后testbench在initial块里面检测到对应信号的触发后就打个trigger();回到package里面的sequence加入同名的uvm_event自然就可以用wait_ptrigger()进行事件同步了;假如monitor里面有该信号的采样就更简单了,testbench里面获取virtual interface,monitor里面操作你需要的信号时序检测后,同样通过uvm_event的方式同步就好。


发表于 2022-4-9 21:35:35 | 显示全部楼层
cast下top的env,然后直接应用就可以。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-18 20:28 , Processed in 0.019139 second(s), 7 queries , Gzip On, Redis On.

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