Verilog始终阻止使用(*)符号

all*_*ace 5 verilog

关于如何always在Verilog模块中编写块,我有一个简单的问题.
如果我的Verilog模块中有以下输入:

input        [31:0] PCplus4 ;       // Value of PC + 4
input        [31:0] A;          // Value A, i.e. RSbus (Use Forwarded Value)
input        [31:0] B;          // Value B, i.e. RTbus (Use Forwarded Value)
input        [31:0] IMM;            // Extended Immediate Value
input        [25:0] TARGET;         // Target Address for Jumps
input         [3:0] BR;         // Branch Selector Input
Run Code Online (Sandbox Code Playgroud)

如果我使用,有什么不同

always @ (*)  
Run Code Online (Sandbox Code Playgroud)

代替

always @ (PCplus4  or A or B or IMM or TARGET or BR)  
Run Code Online (Sandbox Code Playgroud)

这种always @ (*) 语法对所有版本的Verilog都有效吗?

too*_*lic 11

always @(*)语法被添加到IEEE的Verilog标准在2001年的所有现代的Verilog工具(仿真器,合成等)都支持此语法.

以下是LRM(1800-2009)的引用:

事件控件的不完整event_expression列表是寄存器传输级(RTL)模拟中的常见错误源.隐式event_expression,@*是一种方便的简写,它通过将procedure_timing_control_statement的语句(可以是语句组)读取的所有网络和变量添加到event_expression来消除这些问题.

因此,您的两行代码可能是等效的(它取决于always块体内的代码).但是,@*语法更容易维护.