微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > UVM sequence产生的数据包总会出现重复的,为什么?

UVM sequence产生的数据包总会出现重复的,为什么?

时间:10-02 整理:3721RD 点击:
各位大牛:
我的tranction是这样定义的:
randcbit[7:0]addr;
constrainva_addr{
addrinside{[0:7]};
}
sequence的length是800次。
driver 中先向sequencer请求数据包,然后进行驱动,最后调用item_done函数。
env的run_phase每跑完800次就跳掉uvm_reset_phase 中,重新运行。
问题是:在复位后,每次产生的前八个数据中都有重复的。randc不是在一个循环内产生的数据都是唯一的吗?
搞了一下午也不知道问题在那里。我把sequence产生的数据包进行了打印,也是一样的结果 。
求高手解答。

没人回答,自己先顶一下 。

8bit addr 就最多256 怎么随机800次?

我对addr进行了约束,让其在0到7内随机。每八次是一个循环,800次是100个randc的循环。从第一个开始,每八个中的数据应该都是0到7中的,且各不相同。 但是我仿真出来的八个数据中就有相同的。不知道我说清楚了没有?

为什么不是rand bit [7:0] addr呢?

randcbit[7:0]addr;
我是想对每个寄存器分别配置一次。所以用randc

改成randc [2:0] addr 试试?
这就不用加约束了啊。
而且上来8个数肯定是不重复的吧 我理解。

这个我试过了,不行的。如果将for循环放在itemfinish之前,是可以的,但这不是我想要的结果。放在start之前,产生的数据有重复的。

randc 只对同一个变量起作用。如果每次重新产生一个新的变量,然后再randomize,就观察不到randc变量周期性循环的现象了。
`uvm_do似乎就是这样工作的。
你可以检查一下这是否是可能的原因。

`uvm_do只是在create,start,finish之间加了 randomize呀, 你的意思是不是说用randc的时候,应该只create一次,然后多次randomize,貌似你说的是对的 ,,,,我去验证一下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top