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