一个非常简单的问题,但想知道是出于解析目的:
这两个结构在verilog中是否相同?
第一个代码:
if_0
else begin
if_1
else begin
if_2
end
end
end
第二个代码:
if
else if
else if
end
end
end
或者是否有任何实例可以让您想到如果在其他地方开始的地方和如果在其他地方的在任何代码结构中可能都不相同?
答案 0 :(得分:0)
if
语句的语法是
if (condition) begin
end
考虑到上述情况,以下结构是等效的
if (condition1) begin
...
end
else begin
if (condition2) begin
...
end
else begin
...
end
end
和
if (condition1) begin
...
end
else if (condition2) begin
...
end
else begin
...
end
答案 1 :(得分:0)
if
语句的语法为
if (condition) true_statement; else false_statement;
else false_statement;
是可选的。
begin/end
的使用是一个不同的主题。在允许任何一个过程语句的任何地方,都可以用begin/end
块内的一组复合语句来替换它,其中包括用begin/end
包装一个语句。 if/else
被视为单个语句。因此,您可以让以下所有内容具有相同的含义
initial if (cond2) A=1; else if (cond2) B = 2; else C = 3;
initial begin if (cond1) A=1; else if (cond2) B = 2; else C = 3; end
initial if (cond1) A=1; else begin if (cond2) B = 2; else C = 3; end
initial if (cond1) A=1; else if (cond2) B = 2; else begin C = 3; end
initial begin if (cond1) begin A=1; end else begin if (cond2) begin B = 2 end ; else begin C = 3; end end end
请注意,SystemVerilog在标签的开头和结尾添加了标签,以帮助匹配它们。