一、过程块
1. always
可综合,用于描述硬件时序电路和组合电路,可以在module或者interface中使用。
2. initial
不可综合,仿真一开始就会执行且只执行一次,可以在module、interface和program中使用。
二、function与task
1. function
- 可以在参数列表指定输入(input)、输出(output)、输入输出(inout)或者引用参数(ref)。默认数据类型为logic,数组也可以作为形式参数进行传递。
- 软件行为,在仿真的0时刻开始执行,可以返回数值也可以不返回数值(void)。
- 内部不能有事件、延时、时序控制语句。
- 可以调用其它function,但不能调用task。
2. task
- 硬件行为,不可通过return返回结果,但可通过output或inout端口或者ref来返回
- 仿真0时刻和非0时刻均可执行,可以内置耗时语句。
- 既可以调用function,也可以调用其它task。
三、局部变量和全局变量
1. 局部变量
- 生命周期与其所在域共存亡,如task/function调用结束后局部变量也就不复存在,∴局部变量的生命周期是动态的。
2. 全局变量
- 生命周期贯穿程序开始执行到结束,∴全局变量的生命周期是静态的。