2014-04-30 16 views

cevap

15

Varsayılan olarak, SystemVerilog tüm dizi kopyalama değeri dizileri geçer.

Performans nedenleriyle mümkün olduğunda dizileri referans olarak geçirmeniz önerilir.

  • İşlevinizin diziyi değiştirmesini istiyorsanız, ref'u kullanın.
  • İşlevinizin diziyi okumasını istiyorsanız, const ref kullanın.

Örnek:

function void pass_by_value(int array[5], int queue[$], int assoc[int]); 
    // Default. 
    // A copy of the arrays is made in this function 
    endfunction 

    function void pass_by_ref(ref int array[5], ref int queue[$], 
          ref int assoc[int]); 
    // Original arrays are being referenced 
    endfunction 

    function void pass_by_const_ref(const ref int array[5], 
            const ref int queue[$], 
            const ref int assoc[int]); 
    // Original arrays are being referenced 
    // And they can be read but cannot be modified in this function 
    endfunction 

Örnek EDA Bahçesi: http://www.edaplayground.com/x/2m9