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

ध्यान दें कि typedef में [$] जबकि कतार तत्व प्रकार प्रकार का नाम पहले है, प्रकार का नाम बाद आता है।

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