gpt4 book ai didi

system-verilog - "ref "在 systemverilog 中是什么意思?

转载 作者:行者123 更新时间:2023-12-03 22:43:17 27 4
gpt4 key购买 nike

我在 systemverilog 中找到了这个:

task automatic xxx(ref xxxpackage bus,input interface ift);

我想知道 ref的用法.优势是什么?

最佳答案

通常,任务和函数参数声明为 input在进入例程时按值复制,参数声明为 output从例程返回时按值复制。 inout参数在进入和从例程返回时都被复制。用 ref 声明的参数不是复制,而是对调用例程时使用的实际参数的引用。使用 ref 参数时有更严格的数据类型兼容性规则。

在消耗时间的任务中,可以使用 ref 而不是 inout 来捕获在任务处于事件状态时发生的值更改。请记住,inout 参数在被调用时被复制到任务中,并在任务返回时被复制出来。这是您应该尝试的示例。

module top;
logic A,B;
task automatic mytask(inout logic arg1, ref logic arg2);
#0 $display("%m %t arg1 %b arg2 %b",$time,arg1,arg2);
// actual arguments have been set to 0
#5 $display("%m %t arg1 %b arg2 %b",$time,arg1,arg2);
#0 arg1 = 1; arg2 = 1;
#5 $display("%m %t arg1 %b arg2 %b",$time,arg1,arg2);
endtask
initial #1 mytask(A,B);
initial begin
A = 'z; B ='z;
#2 A = 0; B = 0; // after call
// arguments have been set to 1
#5 $display("%m %t A %b B %b",$time,A ,B);
#5 $display("%m %t A %b B %b",$time,A ,B);
end
endmodule

查看 inout的区别路过 ref论据。

请注意,类变量已经是对类句柄的引用,因此通过引用传递类变量很少有任何好处。此外,在函数中, ref 的唯一好处是参数可能是传递像数组这样的大型数据结构而不是使用 input 的性能。 , output , 或 inout .

关于system-verilog - "ref "在 systemverilog 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31017629/

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