systemverilog语言简介

systemverilog语言简介

ID:3140600

大小:74.50 KB

页数:18页

时间:2017-11-19

systemverilog语言简介_第1页
systemverilog语言简介_第2页
systemverilog语言简介_第3页
systemverilog语言简介_第4页
systemverilog语言简介_第5页
systemverilog语言简介_第6页
systemverilog语言简介_第7页
systemverilog语言简介_第8页
systemverilog语言简介_第9页
systemverilog语言简介_第10页
资源描述:

《systemverilog语言简介》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE1364-2001Verilog硬件描述语言(HDL),并对其进行了扩展,包括扩充了C语言数据类型、结构、压缩和非压缩数组、接口、断言等等,这些都使得SystemVerilog在一个更高的抽象层次上提高了设计建模的能力。SystemVerilog由Accellera开发,它主要定位在芯片的实现和验证流程上,并为系统级的设计流程提供了强大的连接能力。下面我们从几个方面对SystemVerilog所作的增强进行简要的介绍,期望能够通过这个介绍使大家对SystemVerilog有一个概括性的了解。1.

2、接口(Interface)Verilog模块之间的连接是通过模块端口进行的。为了给组成设计的各个模块定义端口,我们必须对期望的硬件设计有一个详细的认识。不幸的是,在设计的早期,我们很难把握设计的细节。而且,一旦模块的端口定义完成后,我们也很难改变端口的配置。另外,一个设计中的许多模块往往具有相同的端口定义,在Verilog中,我们必须在每个模块中进行相同的定义,这为我们增加了无谓的工作量。SystemVerilog提供了一个新的、高层抽象的模块连接,这个连接被称为接口(Interface)。接口在关键字interface和endinterface之间定义,它独立于模块。接

3、口在模块中就像一个单一的端口一样使用。在最简单的形式下,一个接口可以认为是一组线网。例如,可以将PCI总线的所有信号绑定在一起组成一个接口。通过使用接口,我们在进行一个设计的时候可以不需要首先建立各个模块间的互连。随着设计的深入,各个设计细节也会变得越来越清晰,而接口内的信号也会很容易地表示出来。当接口发生变化时,这些变化也会在使用该接口的所有模块中反映出来,而无需更改每一个模块。下面是一个接口的使用实例:interfacechip_bus;//定义接口wireread_request,read_grant;wire[7:0]address,data;endinterfa

4、ce:chip_busmoduleRAM(chip_busio,//使用接口inputclk);//可以使用io.read_request引用接口中的一个信号endmodulemoduleCPU(chip_busio,inputclk);...endmodulemoduletop;regclk=0;chip_busa;//实例接口//将接口连接到模块实例RAMmem(a,clk);CPUcpu(a,clk);endmodule实际上,SystemVerilog的接口不仅仅可以表示信号的绑定和互连。由于SystemVerilog的接口中可以包含参数、常量、变量、结构、函数、

5、任务、initial块、always块以及连续赋值语句,所以SystemVerilog的接口还可以包含内建的协议检查以及被使用该接口的模块所共用的功能。2.全局声明和语句在Verilog中,除了一个模块可以作为模块实例引用其他模块外,并不存在一个全局空间。另外,Verilog允许任意数目的顶层模块,因此会产生毫无关联的层次树。SystemVeriog增加了一个被称为$root的隐含的顶级层次。任何在模块边界之外的声明和语句都存在于$root空间中。所有的模块,无论它处于哪一个设计层次,都可以引用$root中声明的名字。这样,如果某些变量、函数或其它信息被设计中的所有模块共

6、享,那么我们就可以将它们作为全局声明和语句。全局声明和语句的一个使用实例如下:regerror_flag;//全局变量functioncompare(...);//全局函数always@(error_flag)//全局语句...moduletest;chip1u1(...)endmodulemodulechip1(...);FSMu2(...);always@(data)error_flag=compare(data,expected);endmodulemoduleFSM(...);...always@(state)error_flag=compare(state,ex

7、pected);endmodule3.时间单位和精度在Verilog中,表示时间的值使用一个数来表示,而不带有任何时间单位。例如:forever#5clock=~clock;---------从这一句中我们无法判断5代表的是5ns?5ps?还是其他。Verilog的时间单位和精度是作为每一个模块的属性,并使用编译器指令`timescale来设置。使用这种方法具有固有的缺陷,因为编译器指令的执行依赖于源代码的编译顺序,编译器总是将它遇到的最后一个`timescale设置的时间单位和精度作为之后的标准。那么,假如有些模块之前没有使

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。