命名的结束语句

命名的结束语句

1、命名的模块结尾
SystemVerilog允许关键字endmoule后指定模块的名字

endmoule:<module_name>
endmodule后指定的名称必须与匹配的模块名称一致

2、命名的代码块结尾
SystemVerilog还允许对其他命名的代码块指定结尾名称。这包括以下关键字:interface…endinterface、task…endtask、function…endfunciton和begin…end以及其他主要用于测试平台的命名代码。
3、嵌套(局部)模块的声明
模块的名称时全局性的
对模块名称的访问不受限制
全局名称有可能导致冲突发生
在模块捏声明模块
SystemVerilog提供了一种简便和精准的方法,可以限制在哪里实例化模块,而且这种方法能避免与其他具有相同名称的模块发生潜在的冲突。这个方法既是允许一个模块的定义嵌套在另一个模块的定义之中。嵌套的模块在声明的层次域之外是不可见的。

module chip(input wire clock);//顶层设计dreg i1(clock);ip_core i2(clock);
endmoudle:chipmodule dreg(input wire clock);//全局模块定义
...
endmodule:dregmodule ip_core(input wire clock);//全局模块定义sub1 u1(...);sub2 u2(...);module sub1(...);//嵌套模块定义...endmodule:sub1module sub2(...);//嵌套模块定义...endmodule:sub2
endmodule:ip_core

嵌套模块定义可以位于几个独立文件中
通常的风格是把每个模块放到一个单独的文件中

使用`include避免因多个模块放在同一源文件中而引起混淆

使用嵌套模块定义会使用顶层模块的源代码文件包含多个模块定义。另外,如果嵌套模块的源代码被掩藏在顶层模块下,那么它会难于维护,并且很难在其他设计中重用。
3.1嵌套模块名称的可见性
嵌套模块的名称不是全局的
嵌套模块的名称并不像其他模块名称一样放在全局模块定义命名域内。嵌套模块的名称只在其父模块的命名域内。也就是说嵌套模块可以使用和在设计的任何地方定义过的模块一样的名称,而不会引起全局模块定义命名域内的任何冲突。
嵌套模块的层次化路径
与模块实例一样,嵌套模块也有层次化域名。嵌套模块中的变量、线网和嵌套模块中的其他声明都可以在验证层次haul引用,就好像在设计中的其他模块里声明一样。
嵌套模块可以例化其他模块
嵌套模块可以实例化其他模块
嵌套模块可以实例化其他模块。这些模块的定义可以位于三个命名域中:全局模块定义命名域、嵌套模块的父模块或嵌套模块内的模块(作为另一个嵌套模块定义)。
3.2实例化嵌套模块
嵌套模块和普通模块的实例化方法一样
实例化嵌套模块的方法和普通模块一样。嵌套模块可以被其父模块任意次数地显式实例化,也可以在父模块下面层次数的任何地方实例化。嵌套模块实例和普通模块实例化,而普通模块可以在设计层次中的任何地方实例化。

module ip_core(input clpck);sub1 u1(...);//嵌套模块sub1实例化module sub1(...);//嵌套模块定义sub2 u2();...endmodule:sub1module sub2;//嵌套模块定义//sub2没有端口,但可以看到其父模块源码中的标识符...sub3 u3(...);endmodule:sub2module sub3(...);//嵌套模块定义...endmodule:sub3
endmodule:ip_core

3.3嵌套模块的名称搜索规则
嵌套模块有局部作用域
和普通模块一样,嵌套模块也有自己的命名域。嵌套模块的定义中可以包含也可以不包含端口。嵌套模块的端口名称是该模块内的局部名称。嵌套模块内的所有网线、变量、任务。函数和其他声明都是fail模块的局部量。
嵌套模块可以引用父模块中的名称
嵌套模块的名称搜索规则与普通的模块不同。从语义上讲,嵌套模块类似于Verilog的任务,嵌套模块可以看到父模块中的信号。和任务一样,如果引用的名称既不在嵌套模块的局部作用域内,就会到其父模块内,就会在编译单元域内查找。这样,嵌套模块就可以引用那些外部定义的,编译单元内的变量、常量、任务、函数和用户自定义类型。
非嵌套模块沿实例化树向上搜索
需要着重注意的是,嵌套模块的向上搜索与非嵌套模块的向上搜索规则不同。非嵌套模块位于全局模块定义域内,没有父源代码。当非嵌套模块引用一份没有在模块内声明的标识符时(如变量名或函数名),名称的搜索路径使用实例化层次树,包括编译单元域。
嵌套模块在源代码中向上搜索
而嵌套模块的定义是有父源代码。当嵌套模块引用没有在嵌套模块内定义的标识符时,搜索路径是在定义这个嵌套模块的父模块中查找,而不是在实例化该模块中查找。
4、简化的模块实例网表
网表将模块实例连接起来
网表是用网将端口连接在一起的模块实例的列表。在设计的许多层次–从高抽象级设计中主要功能块的连接,到具体实现层次中进行ASIC或门级等分立部件的连接都要用到网表。网表通常由综合编译器等软件工具自动生成;但是在连接主要设计模块时,通常需要人工定义网表。在顶层模块中,即使是在功能块层次上,网表的规模也经常非常大,有可能存在很多潜在的难于调试的连接错误。
4.1、隐式的.name端口连接
.name是端口名称连接的简化方式
SystemVerilog提供了能大大简化网表的三种方法:.name端口连接,.*端口连接和接口。
.name简化了连接模块实例的过程
.name端口连接语法结合了自成文档代码中使用的按端口次序连接方式的简洁性和端口名称连接方式的次序独立性这两方面优点,同时消除了这两种Verilog风格的缺点。
.name推断出同名线网和端口连接
.name可以和端口名称连接方式结合

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive注册表那点事(5.0 VS 6.0)

Hive 注册表那点事&#xff08; 5.0 VS 6.0 &#xff09; 现象 5.0 移置到 6.0 上的时候&#xff0c;发现 Hive-Registry 无效&#xff0c;具体的现象是在控制面板中屏幕校准后 Cold Boot 机器校准数据丢失。 环境变量 PRJ_ENABLE_REGFLUSH_THREAD 和 PRJ_ENABLE_FSREGHIVE …

云计算与 OpenStack - 每天5分钟玩转 OpenStack(14)

“云计算” 算是近年来最热的词了。现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼。 对于云计算&#xff0c;学术界有各种定义&#xff0c;大家有兴趣可以百度一下。 CloudMan 这里主要想从技术的角度谈谈对云计算的理解。 基本概念 所有的新事物都不是突然冒出来的&a…

OpenStack 架构 - 每天5分钟玩转 OpenStack(15)

终于正式进入 OpenStack 部分了。 今天开始&#xff0c;CloudMan 将带着大家一步一步揭开 OpenStack 的神秘面纱。 OpenStack 已经走过了 6 个年头。 每半年会发布一个版本&#xff0c;版本以字母顺序命名。现在已经到第 12 个版本 Liberty&#xff08;字母 L&#xff09;。 Op…

pcb中layer stack manager 中,右上角的layer pairs 、internal layer pairs和build-up,三者的区别?

不同的层叠模式&#xff1a; Layer Pairs&#xff08;层成对&#xff09;、Internal Layer Pairs&#xff08;内电层成对&#xff09;和Build-up&#xff08;叠压&#xff09;。 多层板实际上是由多个双层板或单层板压制而成的&#xff0c;选择不同的模式&#xff0c;则表示在实…

智能手机的开放与封闭刍议

作为一个从05年就浸淫其中的玩智能手机玩家&#xff0c;我已经先后拥有了两台WMXscale的HTC手机&#xff0c;一部iPhone&#xff0c;最近刚刚又搞了部 Google/HTC N1&#xff0c;准备继续做新技术的小白鼠&#xff0c;同时也体验一下新技术是如何惠及人类生活的。N1入手不久&am…

FPGA笔记

type [upper:lower] vector_name;例如wire [0:7] b; // 8-bit wire where b[0] is the most-significant bit.ATM是Asynchronous Transfer Mode&#xff08;ATM&#xff09;异步传输模式突发传输&#xff08;Burst transmission&#xff09;&#xff0c;一般也称为数据突发&…

部署 DevStack - 每天5分钟玩转 OpenStack(17)

本节按照以下步骤部署 DevStack 实验环境&#xff0c;包括控制节点和计算节点 创建虚拟机 按照物理资源需求创建 devstack-controller 和 devstak-compute 虚拟机 安装操作系统 安装 Ubuntu 14.04&#xff0c;并配置 eth0 的 IP devstack-controller 192.168.104.10 devstak-c…

理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)

作为 OpenStack 的基础支持服务&#xff0c;Keystone 做下面这几件事情&#xff1a; 管理用户及其权限维护 OpenStack Services 的 EndpointAuthentication&#xff08;认证&#xff09;和 Authorization&#xff08;鉴权&#xff09;学习 Keystone&#xff0c;得理解下面这些概…

C++11 Lambda函数(匿名函数)

C11引入了lambda表达式&#xff0c;使得程序员可以定义匿名函数&#xff0c;该函数是一次性执行的&#xff0c;既方便了编程&#xff0c;又能防止别人的访问。 Lambda表达式的语法通过下图来介绍&#xff1a; Lambda表达式的引入标志&#xff0c;在‘[]’里面可以填入‘’或‘&…

时序约束与分析

时序约束与分析 设计约束所处的环节:约束输入、分析实现结果、设计优化。 设计约束分类 物理约束I/O接口约束(例如引脚分配、电平标准设定等物理属性的约束)、布局约束、布线约束以及配置约束。 时序约束:设计FPGA内部的各种逻辑或走线的延时,反应系统的频率和速度的约束…

通过例子学习 Keystone - 每天5分钟玩转 OpenStack(19)

上一节介绍了 Keystone 的核心概念。本节我们通过“查询可用 image”这个实际操作让大家对这些概念建立更加感性的认识。 User admin 要查看 Project 中的 image 第 1 步 登录 当点击时&#xff0c;OpenStack 内部发生了哪些事情&#xff1f;请看下面 Token 中包含了 User 的 R…

从Linux到Meego

网上看到一个Intel的强写的一篇关于meego的文章&#xff0c;很是受用&#xff0c;一篇好的文章就好比一顿每餐&#xff0c;在这里与大家分享。 从2月份Meego发布后一直在学习&#xff0c;现在把一些学到的内容跟大家共享一下。 首先想说说Meego是什么&#xff0c;Meego首先是…

理解 Glance - 每天5分钟玩转 OpenStack(20)

OpenStack 由 Glance 提供 Image 服务。 理解 Image 要理解 Image Service 先得搞清楚什么是 Image 以及为什么要用 Image&#xff1f; 在传统 IT 环境下&#xff0c;安装一个系统是要么从安装 CD 从头安装&#xff0c;要么用 Ghost 等克隆工具恢复。这两种方式有如下几个问题&…

C++ Applications

C的应用 C Applications (English version): http://www.stroustrup.com/applications.html 这里有一个有关系统、应用程序和库的列表&#xff0c;列表中的全部或者大部分代码用C编写&#xff0c;当然&#xff0c;该列表并不全面。即使我如何努力&#xff0c;我也不能列举一个…

四选一多路器

四选一多路器 状态转换 d0 11 d1 10 d2 01 d3 00 信号示意图 timescale 1ns/1ns module mux4_1( input [1:0]d1,d2,d3,d0, input [1:0]sel, output[1:0]mux_out ); //*************code***********//reg [1:0] mux_out_reg;always(*)begincase(sel)2b00:mux_out_reg d3;2b0…

简化从Win32到Windows 10的迁移之路

面对庞大的传统Win32应用程序生态所取得的巨大成功&#xff0c;Microsoft目前在Windows 10方面遭遇了一个重大挑战。这使得该公司面临两难困境&#xff1a;因为潜在买家的市场可能不太大&#xff0c;因此开发者不愿意为Windows 10开发应用&#xff1b;而由于用户无法使用他们惯…

了解OPhone平台---OPhone平台架构和主要开发组件

OPhone平台基于Linux和开放手机联盟&#xff08;OHA&#xff09;的Android系统&#xff0c;经过中国移动的创新研发&#xff0c;设计出拥有新颖独特的用户操作界面&#xff0c;增强 了浏览器能力和WAP兼容性&#xff0c;优化了多媒体领域的OpenCORE、浏览器领域的WebKit等业内众…

如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)

本节首先讨论 image 删除操作&#xff0c;然后介绍 OpenStack CLI 的使用方法&#xff0c;最后讨如何 Troubleshoot。 Web UI 删除 image admin 登录后&#xff0c;Project -> Compute -> Images在列表中选择格式为 ARI 和 AKI 的 image&#xff0c;点击点击确认删除 …

异步复位的串联T触发器

异步复位的串联T触发器 T触发器的特征方程 Qn1 T Qn ’ T ’ Qn T⊕Qn T触发器的特征表 信号示意图 timescale 1ns/1ns module Tff_2 ( input wire data, clk, rst, output reg q ); //*************code***********//reg m;always(posedge clk or negedge rst)beginif…

硬件工程师笔试题

转载 http://djydiy.com/index.php/archives/256 模拟电路 1、基尔霍夫定理的内容是什么&#xff1f;&#xff08;仕兰微电子&#xff09; 基尔霍夫定理包括电流定律和电压定律。 电流定律&#xff08;KCL&#xff09;&#xff1a;在集总电路中&#xff0c;任何时刻&#xff0…