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

发布于 2024-12-21 22:58:14 字数 219 浏览 0 评论 0原文

我的代码:

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

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

My Code:

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

I get an error saying VCS has encountered unnamed generate blocks. And it points to the lines where i have the assign statements. Is there a multiple drive issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乖不如嘢 2024-12-28 22:58:14

试试这个

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## 来修复此问题,尽管您仍然应该命名它们。

Try this

generate

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

endgenerate

In several revisions, Verilog has changed the way generates are handled. In older versions a generate item or keyword by itself did not introduce a new scope so the designer had to add a named block to do this. I don't think this is 'real' error in 1364-2001 since you are not declaring an identifier inside the generate but it is good practice to name generate blocks.

1364-2005 and SystemVerilog fixes this by stating any unnamed generate block are called genblk##, although you should still name them anyway.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文