2012-12-11 230 views
4

是否可以在SystemVerilog中將函數作爲參數傳遞?SystemVerilog傳遞函數作爲參數

這段代碼雖然不起作用,但很有希望。任何幫助?謝謝。

module funcparam; 
      int result; 

      function int xxx(int x, ref fun); 
        return fun(x); 
      endfunction 

      function int yyy(int y); 
        return y * (y + y); 
      endfunction 

      initial begin 
        result = xxx(5, yyy); 
        $display("result: %d", result); 
      end 
    endmodule 
+0

似乎確實沒有支持該語言。 – e19293001

回答

4

你是有限的,以什麼可以通過引用傳遞:

  • 一個變量,
  • 類屬性,
  • 非壓縮結構中的一員,或
  • 的解壓數組的元素。

你也許可以在基類的句柄傳遞,但我懷疑這會工作。

class base; 
    function yyy(int x); 
    endfunction 
endclass 

class class1 extends base; 
    function yyy(int x); 
    endfunction 
endclass 

class class2 extends base; 
    function yyy(int x); 
    endfunction 
endclass 


module funcparam; 
    result; 

    function int xxx(int x,input base fun); 
    return fun.yyy(x); 
    endfunction 

    class1 cls = new; 
    //class2 cls = new; 


    initial begin 
     result = xxx(5, cls); 
     $display("result: %d", result); 
    end 
endmodule 
3

任務和功能,只能接受數據類型作爲參數,函數不是數據類型。也沒有辦法將函數變成數據類型。