为什么是verilog;始终“U梳块仅包含一个事件控件”;始终程序块上标记有多个“错误”@&引用;

为什么是verilog;始终“U梳块仅包含一个事件控件”;始终程序块上标记有多个“错误”@&引用;,verilog,system-verilog,hdl,Verilog,System Verilog,Hdl,以下代码生成此错误消息: “verilog always_comb施加了一个限制,即它只包含一个事件控件,不包含阻塞定时控件” 为什么组合逻辑程序块会产生此错误 带有@事件等待的always块是否可以合成 始终\u comb仅用于组合逻辑。您使用的@语句与组合无关 来自lrm 9.2.2.2.2 always_comb中的语句不应包括阻塞、具有阻塞定时或事件控件或fork-join语句的语句 在您的情况下,您需要始终使用通用always@*可能就可以了。always\u comb仅用于组合逻辑。

以下代码生成此错误消息:

“verilog always_comb施加了一个限制,即它只包含一个事件控件,不包含阻塞定时控件”

为什么组合逻辑程序块会产生此错误


带有
@
事件等待的always块是否可以合成

始终\u comb
仅用于组合逻辑。您使用的
@
语句与组合无关

来自lrm 9.2.2.2.2

always_comb中的语句不应包括阻塞、具有阻塞定时或事件控件或fork-join语句的语句


在您的情况下,您需要始终使用通用
always@*
可能就可以了。

always\u comb仅用于组合逻辑。您使用的
@
语句与组合无关

来自lrm 9.2.2.2.2

always_comb中的语句不应包括阻塞、具有阻塞定时或事件控件或fork-join语句的语句


在您的情况下,您需要始终使用通用
always@*
可能会这样做。

该错误报告的消息具有误导性。不允许在
始终\u comb
块中使用任何事件控件。它会自动为您创建事件敏感度列表。可能是将隐式事件控件与添加到其中的控件相结合,然后生成错误


除非使用高级合成工具,否则在基本
始终
块的开头只能有一个事件控件。

该错误报告的消息具有误导性。不允许在
始终\u comb
块中使用任何事件控件。它会自动为您创建事件敏感度列表。可能是将隐式事件控件与添加到其中的控件相结合,然后生成错误


除非您使用的是高级合成工具,否则您只能在基本的
始终
块的开头使用一个事件控件。

我使用的是VCS,它可能允许多个
@
事件触发器在一个始终块中起等待作用(不太确定,如何检查此情况?)。不管怎样,如果我在代码中用
始终
替换
始终
,那么后面的语法会被允许吗?正如在模拟器中所示的一个always块中的多个事件控件
@(posedge sig_b)
@(negedge sig_b)
中,允许比可合成的语法更多的语法。我使用的是VCS,它可能允许多个
@
事件触发器在一个always块中充当等待(不太确定,如何检查这一点?)。不管怎样,如果我在代码中用
始终
替换
始终
,那么后面的语法会被允许吗?正如在模拟器中所示的一个始终块中的多个事件控件
@(posedge sig_b)
@(negedge sig_b)
允许比可合成的语法更多的语法。
always_comb begin
if (sig_a)begin
 @(posedge sig_b); // wait for a sig_b posedge event
 @(negedge sig_b); // then wait for a sig_b negedge event
 event_true=1;  
end

if (event_true)begin
  @((sig_c==1)&&(sig_a==0)); //wait for sig_a to deassert and sig_c assert event to be true
  yes =1;
 end
 else yes =0;

end