微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 求助:sequence如何给transfer中的动态数组赋值?

求助:sequence如何给transfer中的动态数组赋值?

时间:10-02 整理:3721RD 点击:
各位:
正在使用UVM搭建验证环境,sequence采用随机值跑的话没有问题,但是如果使用特定值的话,会出现std::bad_alloc的问题。

  1. `uvm_do_with(req,{req.r.size==arr_size;
  2. req.g.size==arr_size;
  3. req.g.size==arr_size;
  4. foreach(req.r[i]) req.r[i]==r[i];
  5. foreach(req.g[i]) req.g[i]==g[i];
  6. foreach(req.b[i]) req.b[i]==b[i];
  7. })

复制代码


提示的错误是: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中做死,就算采用特定的图像数据,还分不同的图像源呢。

.............................

.............................

?

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

网站地图

Top