我的代码:
generate
if(some_condition) begin
assign A=~AB;
end else begin
assign A=AB;
end
endgenerate
我收到一条错误消息,说VCS遇到了未命名的生成块。它指向我有assign语句的行。是否存在多个驱动器问题?
答案 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 ##来解决这个问题,尽管你仍然应该为它们命名。