Verilog VCS遇到未指定的生成块意味着什么?

Verilog VCS遇到未指定的生成块意味着什么?,verilog,Verilog,我的代码: generate if(some_condition) begin assign A=~AB; end else begin assign A=AB; end endgenerate 我收到一个错误,说VCS遇到了未命名的生成块。它指向我有assign语句的行。是否存在多驱动器问题?试试这个 generate if(some_condition) begin : generate_block_1 assign A=~AB; end else b

我的代码:

generate
 if(some_condition) begin
    assign A=~AB;
 end else begin 
    assign A=AB;
 end
endgenerate
我收到一个错误,说VCS遇到了未命名的生成块。它指向我有assign语句的行。是否存在多驱动器问题?

试试这个

generate

 if(some_condition) begin : generate_block_1
    assign A=~AB;
 end else begin  : generate_block_1
    assign A=AB;
 end

endgenerate
在几次修订中,Verilog改变了处理生成内容的方式。在旧版本中,generate项或关键字本身没有引入新的作用域,因此设计者必须添加一个命名块来实现这一点。我不认为这是1364-2001中的“真实”错误,因为您没有在generate中声明标识符,但命名generate块是一种良好的做法

1364-2005和SystemVerilog通过声明任何未命名的生成块都被称为genblk###来解决这个问题,尽管您仍然应该命名它们

试试这个

generate

 if(some_condition) begin : generate_block_1
    assign A=~AB;
 end else begin  : generate_block_1
    assign A=AB;
 end

endgenerate
在几次修订中,Verilog改变了处理生成内容的方式。在旧版本中,generate项或关键字本身没有引入新的作用域,因此设计者必须添加一个命名块来实现这一点。我不认为这是1364-2001中的“真实”错误,因为您没有在generate中声明标识符,但命名generate块是一种良好的做法

1364-2005和SystemVerilog通过声明任何未命名的生成块都被称为genblk###来解决这个问题,尽管您仍然应该命名它们