2012-12-20 74 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