2012-12-20 35 views
6

返回队列,我不能编译此代码:从功能的SystemVerilog

 function integer[$] get_register_name; 
       integer ret[$]; 
       ret.push_back(1); 
       ret.push_back(2); 
       return ret; 
     endfunction 

是否有可能从一个函数返回一个队列?

回答

14

是的,你可以从函数返回一个队列。但要这样做,您必须使用typedef来定义新类型并返回该类型。

typedef integer queue_of_int[$]; 

function queue_of_int get_register_name(); 
    queue_of_int ret; 
    ret.push_back(1); 
    ret.push_back(2); 
    return ret; 
endfunction 

注意的是,在该类型定义来[$]的类型名称后,而队列元素类型为类型名称之前。

1

那边是的为我工作代码的示例....

typedef bit[31:0] bitQueue[$]; 

//用于合并第一和第二队列, //与第二队列被添加到的第一

结束
function bitQueue mergeEnd(bit[31:0] queue_1[$], bit[31:0] queue_2[$]); 
    foreach (queue_2[i]) queue_1.push_back(queue_2[i]); 
    return queue_1; 
endfunction