資料來源:
(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指定的形參類型需要和實參類型完全匹配;