返回介绍

8.8 命名块与语句标签

发布于 2020-09-09 22:55:47 字数 1338 浏览 1256 评论 0 收藏 0

seq_block ::=           // 引用自附录A.6.3
    begin [:block_identifier] {block_item_declaration} {statement_or_null}
    end [:block_identifier]

par_block ::=
    fork [:block_identifier] {block_item_declaration} {statement_or_null}
    join_keyword [:block_identifier]

join_keyword ::= join | join_any | join_none

语法8-8 — 块和标签语法(摘录自附录A)

Verilog允许命名一个begin...end、fork...join、fork...join_any或fork...join_none语句。一个命名的块可以用来标识整个语句块。一个命名的块产生了一个新的层次范围。块的名字在begin或fork关键字之后,并在前面加上一个冒号来说明。例如:

begin : blockA // Verilog-2001命名的块
    ...
end

SystemVerilog允许在块的end、join、join_any或join_none关键字之后说明一个匹配的块名字,并在名字的前面加上一个冒号。当块是一个嵌套的块的时候,这种方式可以帮助理解哪一个end、join、join_any或join_none与哪一个begin或fork相关联。块尾部的名字不是必须的,但如果它与块起始处的名字不一致的话,会引起一个错误。

begin: blockB // begin或fork后的块名字
    ...
end: blockB

与C语言一样,SystemVerilog允许在任何语句之前指定一个标签。一个语句标签被用来识别单条语句。标签名字在语句之前说明并跟着一个冒号。

labelA: statement

一个begin...end、fork...join、fork...join_any或fork...join_none块被当作一条语句,并且可以在块的前面具有一个语句标签。

labelB: fork  // begin或fork之前的标签
    ...
join : labelB

在begin或fork之前具有标签而在这两个关键字的后面具有块名字是非法的。标签不能出现在end、join、join_any或join_none之前,因为这些关键字不会组成一条语句。

带有标签的语句可以使用disable语句关闭。关闭一条语句与关闭一个命名块具有相同的行为。

参看9.6节中有关fork...join、fork...join_any或fork...join_none的其它讨论。

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文