求助:sequence如何给transfer中的动态数组赋值?
时间:10-02
整理:3721RD
点击:
各位:
正在使用UVM搭建验证环境,sequence采用随机值跑的话没有问题,但是如果使用特定值的话,会出现std::bad_alloc的问题。
提示的错误是:terminate called after throwing an instance of 'std::bad_alloc'
what():std::bad_alloc
遇上这个问题,我该怎么改变我的代码呢?
之前使用`uvm_create(req)产生req,然后给req中的动态数组赋值,然后使用`uvm_send发送出去,但是因为在transfer中增加了一个随机化的变量,要求的是transfer中的动态数组给特定的值,但是新增的随机变量需要让它自己随机产生。所以使用原来的`uvm_send就不能满足要求了,而`uvm_rand_send则将动态数组的值也给随机化了,不知道有什么办法能解决这个问题呀?
正在使用UVM搭建验证环境,sequence采用随机值跑的话没有问题,但是如果使用特定值的话,会出现std::bad_alloc的问题。
- `uvm_do_with(req,{req.r.size==arr_size;
- req.g.size==arr_size;
- req.g.size==arr_size;
- foreach(req.r[i]) req.r[i]==r[i];
- foreach(req.g[i]) req.g[i]==g[i];
- foreach(req.b[i]) req.b[i]==b[i];
- })
提示的错误是:terminate called after throwing an instance of 'std::bad_alloc'
what():std::bad_alloc
遇上这个问题,我该怎么改变我的代码呢?
之前使用`uvm_create(req)产生req,然后给req中的动态数组赋值,然后使用`uvm_send发送出去,但是因为在transfer中增加了一个随机化的变量,要求的是transfer中的动态数组给特定的值,但是新增的随机变量需要让它自己随机产生。所以使用原来的`uvm_send就不能满足要求了,而`uvm_rand_send则将动态数组的值也给随机化了,不知道有什么办法能解决这个问题呀?
If you want to load a specific image, you should do it in the definition of transaction. You can define a flag to distinguish it with random value. And the flag can be changed in body depending on you.
不是很明白,你是不是说在transfer中定义一个is_rand的变量,如果is_rand=1,那么动态数组就采用随机的值,如果是0的话就采用特定的图像数据?那还是涉及到怎么把数据往数组里面填的问题呀,也不能在transfer中做死,就算采用特定的图像数据,还分不同的图像源呢。
.............................
.............................
?