①task语句和function语句都是可以综合的,但是只能实现组合逻辑,具备组合逻辑的优点和缺点。
②task和function都必须在模块内部定义,除参数个数不同外,还可以定义内部变量,包括寄存器、时间变量、整型等,但是不能定义线网变量。二者只能出现在行为描述中。
③区别: 比较点 | 任务 | 函数 | 输入、输出 | 可以有任意多个种类类型的参数 | 至少有一个输入,不能有输入和双向端口 | 调用 | 只能在过程语句中调用 | 可以在过程语句中调用,也可以在作为赋值操作的表达式用在assign赋值语句中 | 触发事件控制 | 任务可以包含延迟控制语句等,但是只能面向仿真,不可综合。 | 不能有时间控制语句 | 调用其他函数和任务 | 可以调用其他函数和任务 | 只能调用函数 | 返回值 | 任务没有返回值 | 函数向调用它的表达式返回一个值 | 其他 | 任务调用语句可以作为一条完整的语句出现 | 函数语句只能作为赋值操作的表达式,不能作为一条独立的语句出现 |
|