未命名语句块中的声明

未命名语句块中的声明

命名块中的局部变量
Verilog允许在命名的begin…end或fork…join块中声明局部变量。局部变量声明的通常用法是声明一个临时变量进行循环控制。局部变量避免了对同名但用途不同的模块模块级变量的无意访问。下面的代码段声明了两个都叫i的变量,在命名的begin块中的for循环将使用命名块中声明的局部变量i,而不会影响模块级声明的变量i。

module chip (input clock);integer i;  //模块级声明always@(posedge clock)
begin : loop  //命名块integer i;//局部变量for(i = 0; i <= 127; i = i + 1)begin...end
end
endmodule

对局部变量的层次化引用
在命名块中声明的变量可以用包含块名的层次路径引用。一般情况下,只要测试和验证程序会使用层次路径方式引用变量。层次化引用是不可综合的,因为这并不代表硬件行为。VCD(Value Change Dump,一种标准的仿真波形记录格式)文件、所有波形显示或其他调试工具也可以使用层次路径方式引用命名块内的变量。

module test;reg clock;chip chip(.clock(clock));always #5 clock = ~clock;
initial
beginclock = 0;repeat(5)@(negedge clock)$display("chip.i  = %0d",chip.i);$display("chip.loop.i  = %0d",chip.loop.i);$finish;
end
endmodule

未命名块中的局部变量

module chip (input clock);integer i;  //模块级声明always@(posedge clock)
begin     //未命名块integer i;//局部变量for(i = 0; i <= 127; i = i + 1)begin...end
end
endmodule

未命名块中的局部变量没有层次路径
由于块没有名字,未命名块中的局部变量不能被层次化引用。测试程序或VCD文件也不能引用局部变量,因为变量没有层次路径。
在未命名块中声明变量可以作为一种方法,保护局部变量不被外部交叉模块引用。由于没哟层次路径,局部变量不能在局部范围以外的任何地方引用。
从调试过程推导层次路径
允许未命名域中声明变量的扩展不是SystemVerilog特有的。Verilog语言也有类似情况。用户自定义原语(UDP)可以在内部声明域中创建一个变量。在这种情况下,软件工具会推断出一个实例名,以便于UDP中的变量能在调试工具中引用。软件工具也可以给未命名块一个推断名,以便于波形显示或调试工具引用未命名中的局部变量。Verilog标准中既不要求也不禁止给未命名原语实例推断一个实例名。SystemVerilog标准中也既不要求也不禁止给未命名原语实例推断一个实例名。

仿真时间单位和精度
包含时间单位的时间值
将时间单位指定为时间值的一部分
SystemVerilog扩展了Verilog语言,可以给时间值指定时间单位。

forever #5ns clock = ~clock;

直接给时间值指定时间单位消除了延迟时间不明确的缺点。
s(秒)、ms(毫秒)、us(微秒)、ns(纳[诺]秒)、ps(皮[可]秒)、fs(飞[母托]秒)、step(软件工具使用的最小花四溅单位,(用于SystemVerilog测试时钟快))

注意:时间值和时间单位之间不允许有空格
#3.2ps //正确
#4.1  ps//不正确,不允许有空格

范围即(scope-level)时间单位和精度
时间单位和精度作为模块定义的一部分
SystemVerilog允许指定局部性的时间单位和精度,作为模块、接口或程序块的一部分,而不是作为软件工具的指令。
在SystemVerilog中通过使用关键字timeunit和timeprecision进一步增强了时间单位的说明。这些关键字作为模块定义的一部分,用来指定模块内的时间单位和精度信息。

moudle chip(...);timeunit 1ns;timeprecision 10ps;...
endmodule
关键字timeunit和timeprecision使模块、接口或程序块与时间单位和精度信息直接绑定,而不使用软件
工具的指令,
这解决了Verilog的`timescale指令中存才的不明确性和对文件顺序的依赖性。
除了特殊单位step外,关键字timeunit和precision可以使用单位和Verilog的 `timescale指令相同

注意:timeunit和timeprecision语句必须在其他任何声明或语句之前、紧随模块、接口或程序的声明之后指定。

编译单元的时间单位和精度
外部声明时间单位和精度
timeunit和timeprecision的声明库在编译单元域指定,但必须先于其他任何声明。在编译单元域内和接口–如果他们没有局部timeunit或timeprecision声明,并且编译时没有有效的Verilog`timescale指令

时间单位和精度搜索次序
使用SystemVerilog时,时间单位和精度值可以在很多地方指定。SystemVerilog定义了一个搜索法则来确定时间值的单位和精度
(1)如果时间值带时间单位,则使用指定的单位。
(2)否则,使用在模块、接口和程序内部指定的时间单位和精度
(3)否则,如果模块或接口声明嵌入到其他的模块和接口内,使用父模块或接口指定的时间单位和精度
(4)否则,使用模块编译时,有效的`timescale时间单位和精度
(5)否则,使用在编译单元域中定义的时间的单位和精度
(6)否则,使用仿真器默认的时间单位和精度

//时间单位和精度的混合声明(不可综合)
timeunit 1ns  //外部声明的时间单位和精度
timeprecision 1ns;module my_chip(...)timeprecision 1ps;//局域精度(优于外部精度)always@(posedge data_request)begin#2.5 send_packet;  //使用外部单位和局部精度#3.75 check_crc;  //使用指定的单位endtask send_packet();
.....
endtasktask check_crc();
.....
endtask
endmodule`timescale 1ps/ps  //`timescale指令指定的单位和精度,优于外部声明module FSM(...)timeunit 1ns;  //局部声明优于`timescale的指定always@(State)begin#1.2 case(State)   //使用局部声明的单位和`timescale指定的精度waite :#20ps ...; //使用此处指定的单位...end
endmoudle

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

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

相关文章

故乡的路:十位少数民族摄影师联展

故乡的路&#xff1a;10位少数民族摄影师联展。映艺术中心。参展的有蒙古族、维吾尔族、回族、纳西族、傣族、白族、彝族、拉祜族、藏族等。民族是一个视点&#xff0c;故乡也是一个视点&#xff0c;两者的交叉&#xff0c;透过现代化的相机和镜头&#xff0c;获得了一种独特的…

kitl协议包简述

英文版参照网址http://blogs.msdn.com/ce_base/archive/2006/06/27/648747.aspx 下面是翻译过来的&#xff0c;可能有错哦&#xff0c;呵呵 KITL概述 KITL——Kernel Independent Transport Layer&#xff0c;CE驱动调试的基本调试协议。KITL提供 1、 传输初始化 2、 数…

敏捷转型中的看板

Scrumban最初是一种从Scrum向精益看板转换的机制&#xff0c;现在它已经支持双方向的转换&#xff0c;并可以应用到项目和精简BAU(常规商业运营)工作流。能够实施Scrum和精益方法的相互转换自然是很好的。但当你的客户不具备实践这些方法的条件时&#xff0c;你如何去帮助他们实…

GDIPlus灰度化图像

将RGB彩色图像转为8位的索引颜色 先定义一个宏 // Greyscale conversion #define GREY(r, g, b) (BYTE)(((WORD)r * 77 (WORD)g * 150 (WORD)b * 29) >> 8 //#define GREY(r, g, b) (BYTE)(((WORD)r * 169 (WORD)g * 256 (WORD)b * 87) >> 9)// Grayscale, 将…

SystemVerilog文本值和数据类型

SystemVerilog文本值和数据类型 1、增强的文本值赋值 给一个向量赋予文本值 在Veirlog语言中&#xff0c;一个向量可以很容易地赋值为全00、全x&#xff08;不确定&#xff09;或全z&#xff08;高阻态&#xff09;。 parameter SIZE 64; reg [SIZE-1 :0] data; data 0;//…

从IC设计来看Trace32的用途

通常的芯片设计&#xff0c;在开发阶段都会先在一个包含硬IP核的FPGA上进行&#xff0c;通过使用硬件描述语言HDL来对FPGA进行编程&#xff0c;这样既能加快设计速度又能够节省成本&#xff0c;最重要的是可以在芯片开发阶段发现可能存在的HW问题。一般的设计思路是首先将各个外…

使用GDI+保存图像为8bpp的灰度图像

使用GDI保存图像为8bpp的灰度图像&#xff0c;GDI真的有些特殊。。。。。 // Greyscale conversion #define GREY(r, g, b) (BYTE)(((WORD)r * 77 (WORD)g * 150 (WORD)b * 29) >> 8) // .299R .587G .114B //#define GREY(r, g, b) (BYTE)(((WORD)r * 169 (WORD)…

对象类型和数据类型

对象类型和数据类型 Verilog数据类型 Verilog语言具有针对硬件的变量类型和线网类型。这些类型具有特定的仿真和综合语义&#xff0c;表示芯片或系统中的实际连接行为。 &#xff08;1&#xff09;Verilog的reg、integer和time变量的每一位都有四种逻辑&#xff1a;0、1、Z、X…

尺度空间(Scale space)理论

尺度空间方法的基本思想是&#xff1a;在视觉信息处理模型中引入一个被视为尺度的参数&#xff0c;通过连续变化尺度参数获得不同尺度下的视觉处理信息&#xff0c;然后综合这些信息以深入地挖掘图像的本质特征。尺度空间方法将传统的单尺度视觉信息处理技术纳入尺度不断变化的…

[转] Windows CE 6.0 启动过程分析

看到这么好的文章&#xff0c;小郭觉得不转载就是天理不容&#xff0c;转了&#xff01;&#xff01;&#xff01;&#xff01; *************************************************************************************** 在Windows CE 6.0中&#xff0c;内核&#xff08;Ke…

数据类型规则的放宽

数据类型规则的放宽 SystemVreilog放宽了使用变量的限制 SystemVreilog放宽了变量的使用规则&#xff0c;大大简化了模型中数据类型的使用。在SystemVreilog中共&#xff0c;任何数据类型的变量都可以通过下列方式赋值&#xff0c;但只能采用其中的一种方式。 &#xff08;1&a…

真实,让文学回到原点:关于非虚构写作的思考

任何一种文学主张&#xff0c;其实都是先有实践&#xff0c;而后再有理论和命名。“非虚构写作”也是如此。如果大胆猜想&#xff0c;“非虚构写作”可能要追溯到远古的口传心记和结绳记事。当时的人类记录下身边发生的事情&#xff0c;应该就是非虚构&#xff0c;而口头讲述的…

4位16色灰度图像处理

定义几个辅助的宏&#xff0c;如下。 // 拆分合并BYTE #define HIBITS(w) ((BYTE)((((BYTE)(w)) >> 4) & 0xf)) #define LOBITS(w) ((BYTE)(((BYTE)(w)) & 0xf)) #define MAKEBITS(a, b) ((BYTE)(((BYTE)(((BYTE)(a)) & 0xf)) | ((…

[转] 常见WinCE启动失败原因分析

*********************************************** 一般情况下&#xff0c;为设计中的IC开发SW方案&#xff0c;难免会碰到Bootloader/EBoot/OS启动失败的情况&#xff0c;对于Bootloader和EBoot&#xff0c;由于源代码很少&#xff0c;直接使用Trace32调试是最佳方法&#xff…

树莓派安装mariadb redis

安装软件 sudo apt install mariadb-server mariadb-client sudo apt install redis 二. 配置 1, mariadb 配置 配置远程访问 maridb configuration: sudo mysql_secure_installation # 设置root密码 vim.tiny mariadb.conf.d/50-server.cnf # 设置去除本地绑定 #bind-addre…

Google云服务降价,整合持续集成工具,支持Windows和托管虚拟机

本周二&#xff0c;Google举行了云平台的现场活动&#xff08;点击查看视频记录&#xff09;&#xff0c;展示了一系列新特性、改进和全新定价模型。\u0026#xD;\n定价\u0026#xD;\nGoogle认为&#xff0c;云计算价格应该跟随硬件领域的摩尔定律&#xff0c;而且在过去数年间硬件…

静态和自动变量

静态和自动变量 自动变量–也可以称为动态变量&#xff0c;主要是用来描述在测试程序、抽象系统级、交易级或总线功能模型中的验证程序。自动变量的另一个用途就是编写可重入的任务&#xff0c;当一个任务的前一次调用仍然在执行时&#xff0c;可以再次对其调用。 自动变量也允…

图像拉普拉斯金字塔融合(Laplacian Pyramid Blending)

转摘的&#xff0c;修改了下程序&#xff0c;图像融合看不太懂 。。。。http://blog.csdn.net/abcjennifer/article/details/7628655#comments // 转摘的别人的程序 // #include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h>…

[转]GIS简介

************************************************** 最近论坛上经常有人讨论GIS&#xff0c;特意从别人的blog中转了一篇GIS简介的帖子************************************************** 地理信息系统(GIS,Geographic Information System)是一门用计算机来研究地理的学科…

debug设计

debug设计 会用到debug设计的阶段 (1)RTL级设计仿真 (2)实施后的设计模拟 (3)在系统调试 使用网表插入调试探测流动 (1)最高级别是一个简单的向导,用于创建和配置集成逻辑分析仪 (ILA)内核会根据选定的一组网络自动进行调试。 (2)下一级是主调试窗口,允许控制单个…