1、function的使用场景function的作用返回一个数值此数值由一串组合逻辑代码计算得到。那为什么要用function呢?主要有两大原因a)当组合逻辑实现的功能比较复杂无法用少量代码完成编写使用function替代不用在always块里面写一大堆的组合逻辑 会使得代码逻辑更加清晰 可读性强。b)当组合逻辑实现的功能在同一个模块内被多次调用所有使用此功能的代码只需要调用function就可以了有效减少编码量而且只需检查function实现功能是否正确也能够降低错误率。2、Function 规则a) function结构内不可以使用任何时间例如不可使用#, , wait等b) functions 不可以调用taskc) function 至少有一个input申明.d) function 不能有任何output或者inout申明e) function 不能使用任何非阻塞赋值()或程序连续赋值(assign and force).f) function不能使用任何事件触发语句(always语句)3、Function使用说明协议中的2种格式function [ automatic ] [ signed ] [ range_or_type ] function_identifier ;function_item_declaration { function_item_declaration }function_statementendfunctionfunction [ automatic ] [ signed ] [ range_or_type ] function_identifier ( function_port_list );{ block_item_declaration }function_statementendfunction可选择的关键字automatic和signed设计人员一般不使用此处不再描述range_or_type指定function返回的数值是real、integer、time、realtime 或者位宽为 [n:m]的数值。如果range_or_type缺失则默认function_identifier是1bit的。function_identifier就是function_name(代表你期望function计算出的结果)function中会隐形地定义一个变量变量名称就是function_name最终会把function_statement计算得出的结果赋值给function_name在调用function_name时会返回计算结果。item_declaration是内部变量等的申明设计中常见为reg [xx:xx] reg_name1; localparameter PARA_NEME ; integer i;function_statement 是function实现的逻辑功能在可综合设计中就是一串组合逻辑。
verilog语法-使用function提高效率
1、function的使用场景function的作用返回一个数值此数值由一串组合逻辑代码计算得到。那为什么要用function呢?主要有两大原因a)当组合逻辑实现的功能比较复杂无法用少量代码完成编写使用function替代不用在always块里面写一大堆的组合逻辑 会使得代码逻辑更加清晰 可读性强。b)当组合逻辑实现的功能在同一个模块内被多次调用所有使用此功能的代码只需要调用function就可以了有效减少编码量而且只需检查function实现功能是否正确也能够降低错误率。2、Function 规则a) function结构内不可以使用任何时间例如不可使用#, , wait等b) functions 不可以调用taskc) function 至少有一个input申明.d) function 不能有任何output或者inout申明e) function 不能使用任何非阻塞赋值()或程序连续赋值(assign and force).f) function不能使用任何事件触发语句(always语句)3、Function使用说明协议中的2种格式function [ automatic ] [ signed ] [ range_or_type ] function_identifier ;function_item_declaration { function_item_declaration }function_statementendfunctionfunction [ automatic ] [ signed ] [ range_or_type ] function_identifier ( function_port_list );{ block_item_declaration }function_statementendfunction可选择的关键字automatic和signed设计人员一般不使用此处不再描述range_or_type指定function返回的数值是real、integer、time、realtime 或者位宽为 [n:m]的数值。如果range_or_type缺失则默认function_identifier是1bit的。function_identifier就是function_name(代表你期望function计算出的结果)function中会隐形地定义一个变量变量名称就是function_name最终会把function_statement计算得出的结果赋值给function_name在调用function_name时会返回计算结果。item_declaration是内部变量等的申明设计中常见为reg [xx:xx] reg_name1; localparameter PARA_NEME ; integer i;function_statement 是function实现的逻辑功能在可综合设计中就是一串组合逻辑。