参数方向(input/output/inout/ref)

资料来源:

(1) sv绿皮书;

(2) 硅芯思见:【115】SystemVerilog中ref不是想用就能用 (qq.com);

1.参数方向简介

(1) Verilog对参数的处理方式比较简单,在子程序的开头把input和inout的值复制给本地变量,在子程序退出时,则复制output和inout的值;

(2) System verilog中,参数的传递方式可以指定为引用而不是复制;

(3) input/output/inout属于值传递,ref属于引用传递;值传递的效率相对ref较低,所有的数据需要在每次方法调用时被复制;引用传递只是将参数的引用传递给方法,方法对引用的修改会同时反映在方法体外;

2.ref

2.1ref的优点

(1)可以使用ref将数组传递给子程序以获取最佳性能;system verilog允许不带ref进行数组参数的传递,这时数组会被复制到堆栈区内,这种操作的代价较高;

注:const+ref的使用方法,虽然使用了引用,但是const限制不能改变引用对应的变量的数值,否则编译器会报错;

(2)ref参数的第二个好处是在任务里可以修改变量而且修改结果对调用它的函数随时可见;

 

2.2ref的注意事项

(1)ref参数只能用于带自动存储的子程序中;

(2)ref引用的参数,方法对引用的修改会同时反映在方法之外;反之,在方法调用期间,方法体外对被引用参数的修改,也会同时反映在方法之内;

(3)如果期望方法对于引用只能进行"只读"访问,可以在ref的基础上增加const特性;

(4)ref指定的形参类型需要和实参类型完全匹配;

 

posted on 2022-01-18 19:36  知北游。。  阅读(1152)  评论(0编辑  收藏  举报

导航