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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3768|回复: 7

[求助] 如何在system verilog的task中的队列完成的操作想用function完成?

[复制链接]
发表于 2013-1-23 09:32:25 | 显示全部楼层 |阅读模式

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

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

x
function不能调用task中的队列吗,老是报错,求高手解答??????????????
 楼主| 发表于 2013-1-23 09:42:41 | 显示全部楼层
补充一下问题,我task中需要完成根据控制信息号sot【3:0】的提示位,来把4个DW的data【127:0】中的4个DW数据有选择的存入队列,
例如sot【1110】就把data【127:32】的数据存入到q中。
q.push_back(data[63:32]);
q.push_back(data[95:64]);
q.push_back(data[127:96]);
我的task中用到的这种存入数据的地方比较多,想用function来调用一下,
可是function调用老是报错,队列在function不能调用吗?
发表于 2013-1-23 11:38:57 | 显示全部楼层
按照我的理解,function无法调用task,更无法使用task内部的数据。task可以调用function,但也无法使用内部的数据。唯一可以交互的就是task function的输入输出。
如有错误,请指正。
 楼主| 发表于 2013-1-23 12:17:36 | 显示全部楼层
回复 3# djistra


  function可以调用task里面的数据的,  我想问的就是fuction如何调用task里面的队列数据。
发表于 2013-1-23 13:32:56 | 显示全部楼层
回复 4# im1217

理解不了,function是一个瞬间完成的任务,task是一个需要若干cycle完成的任务。调用一次function或者task,她执行完就结束了。怎么就能这么调用呢?理解不了。

你为什么不把那个queue作为task的输出呢?上面一个task算出这个输出,下面的function作为输入。
 楼主| 发表于 2013-1-23 16:40:31 | 显示全部楼层
回复 5# djistra

其实我想问
    SV里面的function能返回 队列类型的值吗?
发表于 2013-1-23 17:25:59 | 显示全部楼层
回复 6# im1217


   用output,不要用返回。另外,队列类型?有这样的数据类型?是数组吗? 多维数组是可以的。
发表于 2013-1-25 09:55:06 | 显示全部楼层
task xx();
    ...
    yy(sot, data, q);
    ...
endtask

function void yy(bit [127:0] data, bit [3:0] sot, ref bit [31:0] q[$]);
    for(int i=0; i<4; i++) begin
        if(sot[i]) q.push_back(data[32*i+:32]);
    end
endfunction
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 23:25 , Processed in 0.019087 second(s), 7 queries , Gzip On, Redis On.

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