VCS遇到未命名的生成块是什么意思?

时间:2011-12-19 16:22:48

标签: verilog

我的代码:

generate
 if(some_condition) begin
    assign A=~AB;
 end else begin 
    assign A=AB;
 end
endgenerate

我收到一条错误消息,说VCS遇到了未命名的生成块。它指向我有assign语句的行。是否存在多个驱动器问题?

1 个答案:

答案 0 :(得分:3)

试试这个

generate

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

endgenerate

在几个版本中,Verilog改变了处理生成的方式。在旧版本中,生成项或关键字本身并未引入新范围,因此设计人员必须添加命名块才能执行此操作。我不认为这是1364-2001中的“真正的”错误,因为您没有在生成中声明标识符,但最好将生成块命名为。

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