http://www.cnblogs.com/tshell/p/3236476.html

2001年3月IEEE正式批准了Verilog‐2001标准(IEEE1364‐2001),与Verilog‐1995相比主要有以下提高。

1、模块声明的扩展

(1)       Verilog‐2001允许将端口声明和数据类型声明放在同一条语句中,例子如下:

(2)Verilog‐2001中增加了ANSIC风格的输入输出端口声明,可以用于module,task和function。例子如下:

(3)对于含有parameter的module,例子如下:

2、带有初始化的寄存器类型变量声明

Verilog‐2001中允许在声明变量的同时对其进行初始化赋值,他是在initial语句中的0时刻开始执行。例子如下:

3、敏感表的改进

(1)逗号分开敏感列表

在敏感表中的变量可以用逗号“,”分开,当然,当然or也是可以的。例子如下:

always@(posedge clk,negedge rst)也是可以的。

(2)组合逻辑的电平敏感@*           //@(*) is also ok

“*”代表了逻辑块中每个被赋值的变量,例子如下:

4、有符号算数运算的扩展

(1)net型和reg型可以声明为带符号的变量

(2)函数的返回值可以是有符号数

(3)Literal integer numbers可以定义为有符号的

(4)增加算数右移左移(>>>,<<<)

操作符“>>>”和“<<<”。对于有符号数,执行算术移位操作时,将符号位填补移出的位。例子如下:

(5)增加系统函数$signed,$unsigned

用于在无符号和有符号数之间的转换

5、可变向量域的选择

[<starting_bit>+”:width]从起始位开始递增,位宽为width

[<starting_bit>‐”:width]从起始位开始递减,位宽为width

其中,起始位可以是变量,但位宽必须是整数。因此可以用可变域选择,用循环语句选取一个很长的向量所有位。

6、多维数组的建立

Verilog‐1995中只允许对reg,integer和time建立一维的数组,常用于RAM,ROM的建模。Verilog‐2001中可以对net和variable建立多维数组。

7、多维数组的赋值

Verilog‐1995不允许直接访问矩阵字的某一位或某几位,必须将整个矩阵字复制到另一个暂存变量中,从暂存中访问。

Verilog‐2001可以直接访问矩阵的某一维或某几位。

8、乘方运算符

增加乘方运算(power operate),运算符是**,如果其中有一个操作数是real类型的,返回值将是real类型。两个操作数都是integer类型,返回才是integer类型。

9、自动(可重入)任务和自动(递归)函数

(1)可重入任务

任务本质上是静态的,同时并发执行的多个任务共享存储区。当某个任务在模块中的多个地方被同时调用,则这两个任务对同一块地址空间进行操作,结果可能是错误的。Verilog‐2001中增加了关键字automatic,内存空间是动态分配的,使任务成为可重入的。

(2)递归函数

10、自动宽度扩展

Verilog‐1995中对于不指定位数的位宽超过32为的总线赋高阻时,只会对低32位赋值为高阻,高位将为0。

Verilog‐2001将高阻或不定态赋值给未指定位宽的信号时,可以自动扩展到整个位宽范围。

11、常数函数

Verilog语法规定必须使用数值或常数表达式来定义向量的位宽和阵列的规模。

Verilog‐1995中要求上述表达式必须为算数操作。

Verilog‐2001中可以使用函数,成为常数函数。他的数值在编译或详细描述中被确定。

12、增加了文件输入输出操作

Verilog‐1995中在文件的输入/输出操作方面功能非常有限,文件操作经常借助于Verilog PLI(编程语言接口),通过与C语言的文件输入/输出库的访问来处理。并且规定同时打开的I/O文件数不能多于31个。

Verilog‐2001增加了新的系统任务和函数,并且规定同时打开的文件数目为230个。

13、显式的参数重载

Verilog‐1995中参数重载有两种方法。一种是defparam语句显式的重新定义。第二种是在模块实体调用时使用#符号隐式的重新定义参数。

Verilog‐2001中增加了一种新的方法,成为显式参数重载。

14、generate语句

Verilog‐2001新增了语句“generate”,通过generate循环,可以产生一个对象(比如一个元件或一个模块等)的多个例化,为可变尺度的设计提供了方便。

generate语句一般在循环和条件语句中使用。Verilog‐2001增加了四个关键字generate、endgenerate、genvar和localparam,其中genvar是一个新的数据类型,用在generate循环中的标尺变量必须定义为genvar型数据。

15、register变为variable

自1998年的Verilog一来,register一直用来描述一种变量的类型,这常常给初学者带来困扰,误认为register和硬件中的寄存器一致。在Verilog‐2001参考手册中将register变为variable。

16、对条件编译的改进

Verilog‐1995中支持`ifdef、`else、`endif、`undef进行条件编译,Verilog‐2001中增加了`ifndef和`elseif

17、文件和行编译显示

Verilog需要不断的跟踪源代码的行号和文件名,可编程语言接口(PLII)可以取得并利用行号和源文件的信息,以标记运行是的错误。但如果Verilog代码经过其他工具的处理,源码的行号和文件名可能丢失。故在Verilog‐2001中增加了`line,用来标定源码的行号和文件名。

18、属性

随着仿真器之外的其他工具把Verilog作为设计输入,这些工具需要Verilog语言能够加入跟指定工具有关的信息和命令。

Verilog没有定义标准的属性,属性的名字和数值由工具厂商或其他标准来定义。目前尚无指定的标准。

19、设计管理——Verilog配置

Verilog‐1995标准将设计管理工作交给软件来承担,但各仿真工具的设计管理方法各不相同,不利于设计的共享。为了更好地在设计人员之间共享Verilog设计,并且提高某个特定仿真的可重用性,Verilog‐‐2001标准增加了对设计内容的配置这部分内容。

增加关键字config、endconfig、design、instance、cell、use和liblist。

配置块位于模块定义之外,可以指定每一个Verilog模块的版本及其源代码的位置。Verilog程序设计从顶层模块开始执行,找到在顶层模块中实例化的模块,进而确定其源代码的位置,照此顺序,直到确定整个设计的源程序。

configcfg4                                                ///给配置块命名

designrtlLib.top                                  ///指定从哪里找到顶层模块

defaultliblistrtlLibgateLib;                   ///设置查找实例模块的默认顺序

instancetest.dut.a2liblistggateLib;         //明确指定模块实例使用哪一个库

endconfig

20、系统任务和系统函数的扩展

Verilog‐2001增加了17个文件输入/输出任务:$fgetc、$ungetc、$fflush、$ferror、$fgets、$rewind、$swrite、$swriteb、$swriteo、$swriteh、$sformat、$sdf_annotate、$ffscanf、$sscanf、$fread、$ftell、$fseek。

增加了两个转换函数:$signed和$unsigned。

增加了命令行输入任务:$test$plusargs和$value$plusargs。

21、VCD文件的扩展

VCD文件用于存储选定的变量数值变化的信息,信息的记录由VCD系统任务来完成。

在Verilog‐1995标准中只有一种类型的VCD文件,即四状态类型,这种类型的VCD文件只记录变量在0、1、x和z状态之间的变化,而且不记录信号强度信息。而在Verilog‐2001标准中增加了一种扩展类型的VCD文件,能够记录变量在所有状态之间的转换,同时记录信号强度信息。

扩展型VCD系统任务$dumpports、$dumpportsoff、$dumpportson、$dumpportsall、$dumpportslimit、$dumpportsflush、$vcdclose

22、其他

(1)提高了ASIC/FPGA应用的正确性

①检测脉冲的传播错误

②负脉冲检测

③新的时序约束检查

④负时序约束

⑤提高了对SDF(标准延时文件)的支持

(2)编程语言接口PLI方面有所改进

Verilog-1995 VS Verilog-2001的更多相关文章

  1. verilog 1995 VS 2001 part1模块声明的扩展

    1.模块声明的扩展 (1)端口声明(input/output/inout)同数据类型声明(reg /wire)放在同一语句中. (2)ANSI C风格的端口声明可以用于module/task/func ...

  2. Verilog 2001 `default_nettype none

    在Verilog 1995規定,對於沒宣告的信號會自動視為wire,這樣常常造成debug的困難,Verilog 2001另外定義了`default_nettype none,將不再自動產生wire. ...

  3. 从头学起Verilog(三):Verilog逻辑设计

    引言 经过了组合逻辑和时序逻辑的复习,终于到了Verilog部分.这里主要介绍Verilog一些基础内容,包括结构化模型.TestBench编写和仿真.真值表模型. 这部分内容不多,也都十分基础,大家 ...

  4. Verilog Tips and Interview Questions

    Verilog Interiew Quetions Collection :  What is the difference between $display and $monitor and $wr ...

  5. No.1 Verilog HDL简介

       硬件描述语言HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和系统的语言.设计者利用HDL可以从抽象到具体逐层描述自己的设计思想,用一系列的分 ...

  6. 对比 Verilog 和 SystemVerilog 中的基本数据类型

    作为引子,首先来看一段描述,该段介绍了SystemVerilog对比Verilog在RTL设计和建模时的新特性之一(logic数据类型),然后下文我再展开对比介绍Verilog和SystemVeril ...

  7. 对Verilog 初学者比较有用的整理(转自它处)

    *作者: Ian11122840    时间: 2010-9-27 09:04                                                              ...

  8. FPGA编程—组合逻辑编码器等verilog实现

    本篇博客主要实现对组合逻辑电路的一些常用模块的实现.组合逻辑中,包括译码器,编码器,输入输出选择器,数值比较器,算法单元等.  先来实现编码器,最常用的8-3编码器,这里先讲一下要用到的case ,c ...

  9. verilog语法实例学习(1)

    本文档中通过verilog实例来学习verilog语法.Verilog是一种硬件描述语言,它具有并发性和时序性.并发性是指不同硬件模块的同时操作,时序性是指信号的赋值或操作在时钟的边沿进行.由于作者本 ...

  10. verilog语法学习目录

    verilog语法实例学习(1) Verilog中的注释 Verilog中的信号 标识符 信号的值 Verilog中的数字 Verilog中的参数 verilog语法实例学习(2) 线网类型 变量类型 ...

随机推荐

  1. JAVA - Blowfish加密出现java.security.InvalidKeyException: Illegal key size 解决方案

    最近用java进行一个blowfish的加密算法,但是在我们的eclipse上报出Illegal key size的错误.google后发现原因是:ymmetricDS加密symmetric.prop ...

  2. ☀【css】透明

    让IE浏览器支持RGBA颜色http://www.hujuntao.com/web/css/ie-browser-support-for-rgba-color.html 透明纯色背景 backgrou ...

  3. 微软公有云事件中心(Azure Event Hubs)在开放物联网大会(OIOT)啼声初试

     发布于 2014-12-29 作者 刘 天栋 2014年12月18日,InfoQ在京召开开放物联网大会(Open IOT Conference),微软开放技术(中国)资深项目经理陈岭在大会中针对 ...

  4. 结合Zen Coding快速编写HTML代码(sublime text2篇)

    首先说下,如何在sublime text2加上zen coding插件 按 Ctrl+`(就是~这个键) 复制下面的代码 确认 重新启动sublime text2 import urllib2,os; ...

  5. stuts2的上传(转载)

    Struts2本身并没提供上传的组件,我们可以通过调用上传框架来实现文件的上传. 一.配置上传解析器 首先要配置项目的框架,也就是倒导入"struts2- core-2.2.1.jar&qu ...

  6. Node.js 创建第一个应用

    如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi. 从这个角度看,整个"接收 HTTP 请求并提供 ...

  7. [CODEVS3299]有序数组合并求第K大问题

    题目描述 Description 给出两个有序数组A和B(从小到大有序),合并两个有序数组后新数组c也有序,询问c数组中第k大的数 假设不计入输入输出复杂度,你能否给出一个O(logN)的方法? 输入 ...

  8. Html笔记(五)表格

    表格标签: <table> 组成: 标题标签: <caption>给表格提供标题. 表头标签: <th> ,一般对表格的第一行或者第一列进行格式化,就是粗体显示,并 ...

  9. vim recording

    大家是否有这种经验,“不知道为什么按出recording状态,按ESC貌似无法直接退掉”的情况,个人已经有过好几次了.与其出来烦人还不如了解它,昨天我就花了点时间学习recording.怎么说,还是有 ...

  10. MapReduce自定义类输出的内容为内存地址

    13480253104 mapreduce.KpiWritable@486a58c4 13502468823 mapreduce.KpiWritable@3de9d100 13560439658 ma ...