verilog之function
1、基本作用
function,就是聲明一個函數。與task的區別就是有參數。function的返回值就是函數名(可以設置位寬),輸入值任意,均作為輸入參數。代碼塊需符合verilog的語法規則。如放在assign塊中的函數需要使用wire變量,always語句中的函數需要使用reg型的變量。不可在function內部加入賦值類型的標志。
2、實際例子
module fun_user ( input a, input b, input c, output [3:0] d, output [3:0] d2 ); function [3:0] dataout; input a; input b; input c; dataout={a,b,c}; endfunction assign d=dataout(a,b,c); endmodule
3、反思小結
function函數在verilog中的作用顯然不如高級語言。一方面可綜合語句確實不適合做成函數,另外一方面verilog並不擅長高級邏輯。verilog在verilog中主要的應用是精簡代碼,減少相似度高的代碼塊。task則是減少相同的代碼塊。兩者在verilog中都不是關鍵作用。