gpt4 book ai didi

arrays - SystemVerilog 数组是按值传递还是按引用传递?

转载 作者:行者123 更新时间:2023-12-03 03:10:16 25 4
gpt4 key购买 nike

默认情况下,SystemVerilog 是按值还是按引用传递数组?

例如:

int array[5] = '{0,1,2,3,4};
some_function(array); // <-- value or reference?

最佳答案

默认情况下,SystemVerilog 按值传递数组,复制整个数组。

出于性能原因,建议尽可能通过引用传递数组。

  • 如果您希望函数修改数组,请使用 ref
  • 如果您希望函数读取数组,请使用 const ref

示例:

  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

EDA Playground 示例:http://www.edaplayground.com/x/2m9

关于arrays - SystemVerilog 数组是按值传递还是按引用传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com