Verilog if else结构

时间:2019-01-22 16:50:31

标签: parsing verilog hdl

一个非常简单的问题,但想知道是出于解析目的:

这两个结构在verilog中是否相同?

第一个代码

if_0                                        
else begin
          if_1
          else begin
                    if_2
                    end
          end
end

第二个代码

if 
    else if
        else if 
        end
    end
end

或者是否有任何实例可以让您想到如果在其他地方开始的地方如果在其他地方的在任何代码结构中可能都不相同?

2 个答案:

答案 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在标签的开头和结尾添加了标签,以帮助匹配它们。