这对指令 `begin_keywords和`end_keywords可用于根据IEEE std 1364的特定版本,指定在源代码块中保留哪些标识符作为关键字,这一对指令只指定作为关键字保留的verilog标识符集,并不影响 Verilog 语言的语义、标记和其他方面。其语法描述如下图所示:
下表1为IEEE 1364-1995标准的保留关键字:
表1:verilog-1995标准的关键字
下表2为IEEE 1364-2001标准的保留关键字:
表2:verilog-2001标准的关键字
版本说明符 “1364-2001-noconfig ”的行为与版本说明符 “1364-2001 ”相似,但以下标识符将从表2中移出:
由于这几个标识符在使用“1364-2001-noconfig” 时未被保留,因此可在相应的 `begin_keywords和`end_keywords区域内作为普通 Verilog 标识符使用。
下表3为IEEE 1364-2005标准的保留关键字:
表3:verilog-2005标准的关键字
在下面的示例中,假定模块m1的定义在模块定义之前没有指定 `begin_keywords 指令。如果没有该指令,该模块的保留关键字集将是编译器默认的保留关键字集。
下面的示例指定了一个`begin_keywords “1364-2001 ”指令。模块中的源代码使用标识符 uwire 作为网名。在本示例中,如果将 IEEE 标准 1364-2005 作为默认关键字集,则必须使用`begin_keywords指令,因为uwire 是1364-2005标准中的保留关键字,指定使用 “1364-1995 ”Verilog 关键字列表也适用于本示例。
下一个示例与上一个示例的代码相同,只是明确指定应使用 IEEE Std 1364-2005 Verilog 关键字。该示例将导致错误,因为 uwire 在该标准中被保留为关键字。
点赞加关注博主(ID:FPGA小飞)的博文,咱们一起系统学习verilog最终标准IEEE Std 1364-2005吧!