Verilog事件控制语句括号可选吗?@a写法是否符合官方语法规范?
关于Verilog模块
@a写法合法性的疑问 先看这段测试代码:
module test; logic a; initial @a; endmodule
实际仿真中不少仿真器会认可这种写法,但严格来说,它是否属于官方Verilog/SystemVerilog语法的扩展?
查SystemVerilog-2017标准,事件控制语句的语法定义如下:
event_control ::= @ hierarchical_event_identifier | @ ( event_expression ) | @* | @ (*) | @ ps_or_hierarchical_sequence_identifier
对照标准可以发现,@a完全找不到匹配项:
hierarchical_event_identifier只针对命名事件,这里的a是变量,不符合event_expression明确要求带括号,@a没有括号,不满足该分支ps_or_hierarchical_sequence_identifier对应序列标识符,和普通变量无关
所以结论很明确:@a这种写法不属于SystemVerilog-2017的官方标准语法,属于部分仿真器额外支持的语法扩展。
内容的提问来源于stack exchange,提问作者andreas
相关产品推荐
相关产品推荐

