Verilog基础:标识符的层次名引用

  相关文章

Verilog基础:表达式位宽的确定(位宽拓展)        

Verilog基础:表达式符号的确定

Verilog基础:数据类型

Verilog基础:位宽拓展和有符号数运算的联系

Verilog基础:case、casex、casez语句

Verilog基础:casex和full_case、parallel_case的使用

Verilog基础:表达式中的整数常量(integer)

Verilog基础:task和function的使用(一)

Verilog基础:task和function的使用(二)

Verilog基础:标识符的向上向下层次名引用


1.层次化名字 

        Verilog HDL描述中的每个标识符应具有唯一的层次化路径名字。模块的层次结构和模块内的任务和命名块等定义了这些名字。名字的层次化结构可以被视为树结构,其中每个模块实例、生成块实例、任务、函数或命名块在树的特定分支中定义了新的层次级别或作用域。

        一个设计的描述包含了一个或更多顶层模块,每个顶层模块形成名字层次结构的顶部。这个顶层模块或这些平行的顶层模块构成了一个或多个层次结构。模块中的每个模块实例(包括数组实例)、生成块实例、任务定义、函数定义以及命名块都定义了层次结构的新分支。任务、函数和命名块中的命名块也定义了层次结构的新分支。未命名的生成块是例外,它们创建的分支仅在块内和块内实例化的任何层次中可见。

        层次名称树中的每个节点对于标识符应该是一个单独的作用域。一个特定的标识符在任何作用域中最多只能声明一次。

        任何命名的Verilog对象或者说层次化名字引用都可以通过连接包含它的模块名称、模块实例名称、生成块、任务、函数或命名块的名称以其完整的形式唯一地引用。句点用于分隔层次结构中的每个名称,除了有时会出现转义符和空白组成的名称。任何对象的完整路径名都应从顶层(根)模块开始。这个路径名可以从层次结构中的任何地方或在平行层次结构中的任何地方使用。路径名中的第一个节点名也可以是从使用路径所在的模块(这允许引用下层对象)。比如说对于以下Verilog代码,三种形式的层次引用都是正确的的。

module Top;
Middle middle_0();
endmodule

module Middle;
Bottom bottom_0();
initial bottom_0.A=1;
//initial Middle.bottom_0.A=1;
//initial middle_0.bottom_0.A=1;
endmodule

module Bottom
reg A;
endmodule

        层次路径名中引用实例数组或循环生成块的名称可以立即跟方括号中以及其中的常量表达式。该表达式选择数组的一个特定实例,因此称为实例选择。表达式应计算为数组的合法索引值之一。如果数组名称不是层次结构名称中的最后一个路径元素,则需要实例选择表达式。

        层次路径名的语法如下图所示。

        如下所示的例子展示了所有可以引用的完整层次名。

猜你喜欢

转载自blog.csdn.net/weixin_45791458/article/details/131135920