#Verilog HDL# 谈谈代码中如何跨层次引用
目录
一 先谈作用问题
二 再谈跨层次问题
2.1 向下引用
2.2 向上引用
一 先谈作用问题
大多数编程语言都有一个称为作用域(scope)的特征,它定义了代码的某些部分对于变量和方法的可见性。作用域定义了一个命名空间,以避免同一命名空间内不同对象名称之间的冲突。
Verilog为模块、函数、任务、命名块和生成块定义了新的作用域。
module tb;reg signal;// Another variable cannot be declared with// an already existing name in the same scopereg signal;// However, the name 'signal' can be reused inside// a task because it belongs to a different scope.task display();reg signal = 1;$display("signal = %0b", signal);endtaskendmodule
在给定的作用域中,标识符(如信号名)只能用于声明一种类型的项目。这意味着在同一个作用域中,不能有两个不同或相同数据类型的变量具有相同的名称,也不能有同名任务和变量,甚至不能有同名的网和门实例。
在Verilog中,每个标识符都有一个唯一的层次路径名,其中每个模块实例、任务、函数或命名的begin-end或fork-join块都定义了一个新的层次或作用域。