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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12511|回复: 12

[求助] 求助:uvm_do_with如何给一个动态数组赋值

[复制链接]
发表于 2012-6-28 13:36:01 | 显示全部楼层 |阅读模式

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

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

x
各位:
     我最近在学着折腾UVM,遇到一个问题,transaction中有一个动态数组,然后在写sequence的时候,需要为这个动态数组赋上确切的值(不想采用随机化的值),那么使用`uvm_do_with的时候是不是`uvm_do_with(req.array==arr_in)  ?,我不是很确定,有没有人知道是怎么弄的呀?先谢谢了!
发表于 2012-6-28 23:47:19 | 显示全部楼层
可以考虑pre_randomize,randomize和post_randomize操作,不一定非要用这个宏。
 楼主| 发表于 2012-6-29 14:30:19 | 显示全部楼层
谢谢。
另外想问问,上面那样用`uvm_do_with是否正确呢?
发表于 2012-6-30 23:53:06 | 显示全部楼层
这种用法可能不行,动态数组不能用这种方式直接全部赋值,因为你没有给它分配地址空间呢,就是new[多少]
 楼主| 发表于 2012-7-2 08:44:40 | 显示全部楼层
哦。那么,用pre_randomize,randomize和post_randomize怎么用呢,需要先提取arr_in的size,然后在给req.array进行new操作?
另外,对pre_randomize,randomize和post_randomize不是很熟悉,不知道哪里可以找到相关的资料呢?谢谢了。
 楼主| 发表于 2012-7-2 09:33:15 | 显示全部楼层
刚才到处查了一下,原来pre_randomize,randomize和post_randomize是systemverilog中的,难怪怎么在UVM的书里面查都查不到,基础没学好。不过这几个东西我确实是没用过,是否应该这样写:
function void pre_randomize();
    req.array=new[arr_in.size()];
endfunction : pre_randomize
. . .
virtual task body();
    ...
    `uvm_do_with(req,{req.arrar==arr_in});
endtask : body

我想问一下,写好pre_randomize函数之后,还需要在`uvm_do_with()之前加上一句"pre_randomize();"么?还是不需要,仿真工具在随机化的时候会自动执行pre_randomize()中的东西呢?
发表于 2012-7-2 21:50:31 | 显示全部楼层
应该不需要。
试试下面看行不行:
`uvm_do_with(req,{req.array.size==arr_in.size;foreach(req.array[i]) req.array[i] inside {arr_in[i]};}
 楼主| 发表于 2012-7-4 12:44:42 | 显示全部楼层
本帖最后由 oscillator_cn1 于 2012-7-4 13:25 编辑

回复 7# whxqq


    刚才试过了,不行。ius报的warning是:
             req.arr.size==arr_in.size();foreach(req.arr) req.arr==arr_in;})
                                                                               |
ncsim:*W,SVRNDF (./sv/master_seq_lib.sv, 64|55): The randomize method call failed.
发表于 2012-7-5 20:53:58 | 显示全部楼层
你写的是这个?
req.arr.size==arr_in.size();foreach(req.arr) req.arr==arr_in;})
发表于 2012-7-5 20:54:53 | 显示全部楼层
req.arr.size==arr_in.size();foreach(req.arr[i]) req.arr[i]==arr_in[i];})
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-9-22 03:45 , Processed in 0.027624 second(s), 9 queries , Gzip On, Redis On.

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