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基础:标识符的层次名引用,如前文所示,所有的完整层次名都是由Top模块开始的由“.”分隔的一系列标识符组成的。但有时候,模块或模块实例的名称足以标识模块及其在层次结构中的位置。较低级别的模块可以在层次结构中引用它上级模块中的项目。如果上级模块的名字,或模块实例的名字已知,则变量可以被引用。对于任务、函数、命名块和生成块,Verilog将在上级模块中查找名称,直到找到它或直到到达层次结构的根,而且只在更高的封闭模块中搜索模块的名称,而不是模块实例名。

        下图是向上层次引用的语法。

         向上的层次名引用也可以使用以下形式。

        其中scope_name是模块实例名或生成块名。这种形式的名称应按下列方式解析:

a)在当前作用域中查找名为scope_name的作用域。如果未找到且当前作用域不是模块作用域,则在上层作用域中查找该名称,必要时重复查找,直到找到该名称或到达模块作用域。如果仍未找到,则继续执行步骤b)。否则,将此名称引用视为从找到该名称的作用域向下引用。

b)在父模块最外层的作用域中查找名为scope_name的作用域。如果发现,则从该范围解析项目名称。

c)重复步骤b),往上走直到顶层模块。

        在实际操作中,笔者发现虽然从形式上看,这两种形式的层次名引用只能由“.”分隔的两部分构成,但它们依然可以像标识符的层次名引用一样,由“.”分隔的多个部分组成。

        下面将会举例说明以上的内容。

例1

module Top;
  reg x;
  Middle middle_0();
  initial fork:a
    reg x;
  join
endmodule

module Middle;
  reg x;
  Below below_0();
  initial fork:b
    reg x;
  join
endmodule

module Below;
  initial Middle.b.x = 0;       //使用模块名引用上层模块的信号 
 //initial middle_0.b.x = 0;    使用实例名引用上层模块的信号
 //initial Top.middle_0.b.x = 0; 完整层次名引用上层模块的信号
    
endmodule

第一种方法是使用模块名引用上层模块的信号,具体过程为,首先搜索本层次(Below模块)有无名字为Middle的层次,然后向上推进到Middle模块的最外层,此时仍然没有Middle层次(本模块名在本模块内不可见),最后搜索Top模块,发现例化了Middle模块,则可以确定x的位置。

第二种方法是使用实例名,与第一种方法类似,不同的是,此时的指向更为清晰,明确指定了是middle_0实例,而第一种方法使用模块名,指的是层次包括了信号使用处层次的实例。

第三种方法则是使用了之前的文章中提到的完整层次名引用,这其实也可以看做是和第一种方法,只不过这时会向上搜索直到Top模块,然后再逐步解析后面的middle_0、b和x。

例2

module Top;
  reg x;
  Middle middle_0();
  initial fork:a
    reg x;
  join
endmodule

module Middle;
  reg x;
  Below below_0();
  initial below_0.x = 0; //向下层引用
  //initial Middle.below_0.x = 0; 首先向上搜索Middle直到在Top中找到Middle,然后向下解析
  //initial Top.middle_0.below_0.x = 0; 完整层次引用,可以理解为向上搜索Top,直到顶层模块
endmodule

module Below;
reg x;
endmodule

第一种方法先在本层次(Middle模块最外层)搜索below_0,结果显示可以找到,below_0中也可找到x,所以这被解释为向下引用below_0中的信号。

后面两种方法和之前一致,其中第二种方法似乎有点奇怪,是一种不完整的层次引用,先向上查找,然后再向下解析below_0和x。

例3

module Top;
  reg x;
  Middle middle_0();
  initial fork:a
    reg x;
  join
endmodule

module Middle;
  reg x;
  Below below_0();
  fork: Middle
      reg x;
      //fork: Middle
          //reg x;              无法被Middle.x搜索到
      //join  
  join
  
endmodule

module Below;
//fork: Middle
    //reg x;    如果有注释内容,则x在此处就会被解析到,而不会继续向上搜索了
    //fork: b     
        initial Middle.x = 0;
    //join
//join
endmodule

上例可以说明,本模块名在本模块中是不可见的,其中initial语句改变的是Middle命名块中x的值,而不是Middle模块中x的值。注意,在向上搜索引用的第一个结点名字的过程中,只会在上层模块的最外层搜索,注释中的x是无法被Middle.x搜索到的,需要使用Middle.Middle.x才能搜索到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/31120.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在Microsoft Excel中使用TRUNC函数

Excel 中有多种删除小数点和缩短数值的方法。在本文中,我们将解释如何使用 TRUNC 函数,以及它与其他技术的不同之处。 TRUNC函数 什么是 TRUNC 功能如何使用 TRUNC 函数从日期时间戳中删除时间什么是 TRUNC 功能 TRUNC 函数将数字截断为指定的小数位数。使 TRUNC 不同于其他…

概率论与数理统计教程第五章节笔记

参考书籍:概率论与数理统计教程第三版 茆诗松 程依明 濮晓龙 编著 文章声明:如有错误还望批评指正 文章目录 ξ 5.1 \xi5.1 ξ5.1总体与样本 ξ 5.2 \xi5.2 ξ5.2样本数据的整理与显示Python绘制直方图Python绘制茎叶图 ξ 5.3 \xi5.3 ξ5.3统计量及其分…

基於Hadoop HA 在kerberos中配置datax

概要 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 概要 前言一、基於HADOOP HA 搭建datax二、基於HADOOP HA 配置好的datax去配置kerberos1.在datax的配置文件中進行配置2.在shell腳本中加入認證語句 总结 前言…

layui框架学习(27:弹出层模块_其它用法)

除了前几篇文章介绍的弹出框类型外,layui的layer弹出层模块还支持相册框和tab框,所谓相册框即点击图片或按钮后会出现一个类似相册的页面单独浏览、切换图片,而tab框是指弹出框的显示形式类似于Winform中的TabControl控件,能以选项…

【Spring Security】的RememberMe功能流程与源码详解

文章目录 前言原理 基础版搭建初始化sql依赖引入配置类验证 源码分析 进阶版集成源码分析疑问1疑问2 鉴权 升级版集成初始化sql配置类验证 源码分析鉴权流程 扩展版 前言 之前我已经写过好几篇权限认证相关的文章了,有想复习的同学可以查看【身份权限认证合集】。今…

MIT 6.S081 Lab Four

MIT 6.S081 Lab Four 引言trapsRISC-V assembly (easy)代码解析 Backtrace(moderate)代码解析 Alarm(Hard)test0: invoke handler(调用处理程序)test1/test2(): resume interrupted code(恢复被中断的代码)代码解析issue解答 可选的挑战练习 引言 本文为 MIT 6.S081 2020 操作…

JDBC BasicDAO详解(通俗易懂)

目录 一、前言 二、BasicDAO的引入 1.为什么需要BasicDAO? 2.BasicDAO示意图 : 三、BasicDAO的分析 1.基本说明 : 2.简单设计 : 四、BasicDAO的实现 0.准备工作 : 1.工具类 : 2.JavaBean类 : 3.BasicDAO类 / StusDAO类 : 4.测试类 : 一、前言 第七节内容…

Jenkins+Docker 实现一键自动化部署项目!步骤齐全,少走坑路

大家好,我是互联网架构师! 本文章实现最简单全面的Jenkinsdockerspringboot 一键自动部署项目,步骤齐全,少走坑路。 环境:centos7git(gitee) 简述实现步骤:在docker安装jenkins,配置jenkins基…

数据结构:二叉树经典例题(单选题)-->你真的掌握二叉树了吗?(第一弹)

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关二叉树的经典例题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

Sentinel的限流和Gateway的限流差别?

Sentinel的限流与Gateway的限流有什么差别? 问题说明:考察对限流算法的掌握情况 限流算法常见的有三种实现:滑动时间窗口,令牌桶算法,漏桶算法。gateway则采用基于Redis实现的令牌桶算法。但是我们不会去用&#xff…

ubuntu常用命令

设置root密码 安装好ubuntu后谁也不知道root密码是多少,可以借助于passwd命令来设置root密码。 sudo passwd root 同理修改其他用户只需替换上方用户名即可 换源 备份原始文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 修改源文件 sudo vim /et…

数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析

目录 OSI七层模型数据包逐层封装头部抓包分析数据包概况数据链路层抓包网络层抓包(IP协议抓包)UDP抓包数据负载抓包 Linux cooked-mode capture OSI七层模型 OSI模型(OSI model),开放式系统互联通信参考模型&#xff…

台电x80HD 安装linux系统,可调电压电源供电,外网访问、3D打印klipper固件

一、系统安装 参照https://blog.csdn.net/gangtieren/article/details/102975027安装 安装过程遇到的问题: 1、试了 linux mint 21 、ubuntu20.04 、ubuntu22.04 都没有直接安装成功,u盘选择安装进入系统后一直黑屏,只有ubuntu18.04 选择后稍…

ChatGPT读PDF、生成思维导图的几种方案

大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 日常办公,我们离不开pdf文档读取,思维导图制作,那么ChatGPT能够给我们什么帮助呢? 通常的方法是:我们…

【大数据】大数据相关概念

文章目录 大数据:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型以及价值密度四大特征。Hadoop:是一个能够对大量数据进行分布式处理的软件框…

华硕天选2ubuntu18.04升级内核后黑屏

https://piaoyun.cc/post/26957.html 1.开机,进入grub画面 2.按’‘‘e’’’ 进入编辑开机指令的模式,同样找到’‘‘quite splash’’,并在后面加上对应的字。 1.Intel 82852/82855 或8系列显示晶片:i915.modeset1或i915.modeset0 2.Nvidia&#xff…

Pytest教程__钩子方法setup、teardown、setup_class、teardown_class(8)

pytest跳过用例执行的用法与unittest跳过用例大致相同。 pytest跳过用例的方法如下: pytest.mark.skip(reason):无条件用例。reason是跳过原因,下同。pytest.mark.skipIf(condition, reason):condition为True时跳过用例。 pyte…

设计模式之单例模式

一.单例模式 1.1 定义 我们来解释一下什么是单例模式.在软件系统中有很多对象,他们在同一时刻只能被一个用户或者多个线程访问,如果被共享的word文档在同一时间内,只能由一个用户对其进行写操作. 换一种说法就是 在单例模式中,类自身负责创建自己的唯一实例&#…

从零开始 Spring Boot 47:缓存

从零开始 Spring Boot 47:缓存 图源:简书 (jianshu.com) Spring 提供一个简单但使用的缓存(Cache)机制,我们可以利用它来优化代码执行效率。 简单示例 老规矩,我们从一个简单示例开始: Serv…

夜不收见证:夫妻从内江到成都,从真诚到真相

他们从四川内江的一条小巷,走进了成都的大街小巷。那里的房屋挨挨挤挤,像是在讲述他们曾经的梦想和勇气。他们是那些在内江的土地上种下了友情种子的少年,他们在成都的大地上,硕果累累。 他们从初中的课桌前走到了成人的世界里&am…
最新文章