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中都不是关键作用。